diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES
index 0f4e27aa..60e33e40 100644
--- a/.openapi-generator/FILES
+++ b/.openapi-generator/FILES
@@ -98,9 +98,12 @@ docs/AmountRangeMinMax2.md
docs/ApiKey.md
docs/ApiKeysPaginatedResponse.md
docs/ApiUserApi.md
+docs/ApprovalApiKey.md
+docs/ApprovalApiPublicKey.md
docs/ApprovalRequest.md
docs/ApprovalRequestItem.md
docs/ApprovalsBetaApi.md
+docs/ApproveApprovalRequest.md
docs/ApproversConfig.md
docs/ApproversConfigApprovalGroupsInner.md
docs/Apy.md
@@ -138,7 +141,9 @@ docs/AssignVaultsToLegalEntityRequest.md
docs/AssignVaultsToLegalEntityResponse.md
docs/AttachDetachUtxoLabelsRequest.md
docs/AttachDetachUtxoLabelsResponse.md
+docs/AuditEventTypeEnum.md
docs/AuditLogData.md
+docs/AuditLogEntry.md
docs/AuditLogsApi.md
docs/AuditorData.md
docs/AuthorizationGroups.md
@@ -180,6 +185,7 @@ docs/ByorkVerdictEnum.md
docs/ByorkVerdictRequest.md
docs/ByorkVerdictResponse.md
docs/ByorkVerdictResponseStatusEnum.md
+docs/BypassReasonEnum.md
docs/CallAccepted.md
docs/CallbackHandler.md
docs/CallbackHandlerRequest.md
@@ -217,6 +223,7 @@ docs/CollectionTokenMetadataAttributeDto.md
docs/CollectionTokenMetadataDto.md
docs/CollectionType.md
docs/ComplianceApi.md
+docs/ComplianceOrchestratorBetaApi.md
docs/ComplianceRequirement.md
docs/ComplianceResultFullPayload.md
docs/ComplianceResultStatusesEnum.md
@@ -224,6 +231,7 @@ docs/ComplianceResults.md
docs/ComplianceScreeningConfigurationApi.md
docs/ComplianceScreeningResult.md
docs/ComplianceScreeningResultFullPayload.md
+docs/ComplianceScreeningStatusEnum.md
docs/ConfigChangeRequestStatus.md
docs/ConfigConversionOperationSnapshot.md
docs/ConfigDisbursementOperationSnapshot.md
@@ -249,6 +257,8 @@ docs/ConnectedAccountsBetaApi.md
docs/ConnectedAccountsResponse.md
docs/ConnectedSingleAccount.md
docs/ConnectedSingleAccountResponse.md
+docs/ConnectorStatusEnum.md
+docs/ConnectorVerdictEnum.md
docs/ConsoleUser.md
docs/ConsoleUserApi.md
docs/Contact.md
@@ -541,11 +551,13 @@ docs/GetPagedExchangeAccountsResponse.md
docs/GetPagedExchangeAccountsResponsePaging.md
docs/GetPositionsResponse.md
docs/GetProvidersResponse.md
+docs/GetScreeningResultResponse.md
docs/GetSigningKeyResponseDto.md
docs/GetTestWalletAddressResponse.md
docs/GetTransactionOperation.md
docs/GetValidationKeyResponseDto.md
docs/GetWhitelistIpAddressesResponse.md
+docs/GetWorkflowResponse.md
docs/GetWorkspaceStatusResponse.md
docs/GleifData.md
docs/GleifOtherLegalEntityName.md
@@ -611,6 +623,7 @@ docs/LegacySrcOrDestAttributesInner.md
docs/LegalEntityRegistration.md
docs/LeiStatus.md
docs/LinkedTokensCount.md
+docs/ListApprovalApiKeysResponse.md
docs/ListApprovalsResponse.md
docs/ListAssetsResponse.md
docs/ListBlockchainsResponse.md
@@ -818,6 +831,8 @@ docs/ReadCallFunctionDtoAbiFunction.md
docs/ReasonForPaymentEnum.md
docs/RecipientHandle.md
docs/RedeemFundsToLinkedDDAResponse.md
+docs/RegisterApprovalApiKeyRequest.md
+docs/RegisterApprovalApiKeyResponse.md
docs/RegisterLegalEntityRequest.md
docs/RegisterNewAssetRequest.md
docs/ReissueMultichainTokenRequest.md
@@ -860,9 +875,15 @@ docs/RetryRequoteRequestDetails.md
docs/RetryRequoteTypeEnum.md
docs/RewardInfo.md
docs/RewardsInfo.md
+docs/RiskLevelEnum.md
docs/RoleDetails.md
docs/RoleDetails2.md
docs/RoleGrantee.md
+docs/Rule.md
+docs/RuleActionEnum.md
+docs/RuleCondition.md
+docs/RuleConditionOperatorEnum.md
+docs/RuleSet.md
docs/RulesetQuorum.md
docs/SEPAAddress.md
docs/SEPADestination.md
@@ -876,11 +897,15 @@ docs/ScreeningAmlAlert.md
docs/ScreeningAmlMatchedRule.md
docs/ScreeningAmlResult.md
docs/ScreeningConfigurationsRequest.md
+docs/ScreeningInput.md
docs/ScreeningMetadataConfig.md
+docs/ScreeningOperationEnum.md
docs/ScreeningOperationExecution.md
docs/ScreeningOperationExecutionOutput.md
docs/ScreeningOperationFailure.md
docs/ScreeningOperationType.md
+docs/ScreeningOutcomeEnum.md
+docs/ScreeningPayload.md
docs/ScreeningPolicyAmount.md
docs/ScreeningPolicyAmountRange.md
docs/ScreeningPolicyCurrency.md
@@ -995,6 +1020,9 @@ docs/StakingPositionsPaginatedResponse.md
docs/StakingProvider.md
docs/Status.md
docs/StellarRippleCreateParamsDto.md
+docs/StepConfig.md
+docs/StepOperationConfig.md
+docs/StepResult.md
docs/SubmitOrderRequirementRequest.md
docs/SupportedBlockChainsResponse.md
docs/SupportedBlockchain.md
@@ -1147,6 +1175,7 @@ docs/TransactionResponseDestination.md
docs/TransactionTag.md
docs/TransactionsApi.md
docs/TransferConfigOperation.md
+docs/TransferDirectionEnum.md
docs/TransferOperationConfigParams.md
docs/TransferOperationExecution.md
docs/TransferOperationExecutionOutput.md
@@ -1217,6 +1246,9 @@ docs/TravelRuleValidateTransactionRequest.md
docs/TravelRuleValidateTransactionResponse.md
docs/TravelRuleVaspForVault.md
docs/TravelRuleVerdictEnum.md
+docs/TriggerRuleOutcomeEnum.md
+docs/TriggerScreeningRequest.md
+docs/TriggerScreeningResponse.md
docs/TriggerValidationFlowResponse.md
docs/TrustProofOfAddressCreateResponse.md
docs/TrustProofOfAddressRequest.md
@@ -1248,6 +1280,8 @@ docs/UpdateVaultAccountAssetAddressRequest.md
docs/UpdateVaultAccountRequest.md
docs/UpdateWebhookOauthRequest.md
docs/UpdateWebhookRequest.md
+docs/UpdateWorkflowStatusRequest.md
+docs/UpdateWorkflowStatusResponse.md
docs/UsWirePaymentInfo.md
docs/UsdcGatewayWalletAsset.md
docs/UsdcGatewayWalletInfoResponse.md
@@ -1296,6 +1330,7 @@ docs/WebhookEvent.md
docs/WebhookMetric.md
docs/WebhookMtls.md
docs/WebhookMtlsCsrResponse.md
+docs/WebhookMtlsKeyAlgorithm.md
docs/WebhookOauthCredentials.md
docs/WebhookPaginatedResponse.md
docs/WebhooksApi.md
@@ -1305,6 +1340,7 @@ docs/WithdrawRequest.md
docs/WorkflowConfigStatus.md
docs/WorkflowConfigurationId.md
docs/WorkflowExecutionOperation.md
+docs/WorkflowStatusEnum.md
docs/Workspace.md
docs/WorkspaceApi.md
docs/WorkspaceStatusBetaApi.md
@@ -1321,6 +1357,7 @@ fireblocks/api/audit_logs_api.py
fireblocks/api/blockchain_link_beta_api.py
fireblocks/api/blockchains_assets_api.py
fireblocks/api/compliance_api.py
+fireblocks/api/compliance_orchestrator_beta_api.py
fireblocks/api/compliance_screening_configuration_api.py
fireblocks/api/connected_accounts_beta_api.py
fireblocks/api/console_user_api.py
@@ -1476,8 +1513,11 @@ fireblocks/models/amount_range_min_max2.py
fireblocks/models/api_key.py
fireblocks/models/api_keys_paginated_response.py
fireblocks/models/api_user.py
+fireblocks/models/approval_api_key.py
+fireblocks/models/approval_api_public_key.py
fireblocks/models/approval_request.py
fireblocks/models/approval_request_item.py
+fireblocks/models/approve_approval_request.py
fireblocks/models/approvers_config.py
fireblocks/models/approvers_config_approval_groups_inner.py
fireblocks/models/apy.py
@@ -1515,7 +1555,9 @@ fireblocks/models/assign_vaults_to_legal_entity_request.py
fireblocks/models/assign_vaults_to_legal_entity_response.py
fireblocks/models/attach_detach_utxo_labels_request.py
fireblocks/models/attach_detach_utxo_labels_response.py
+fireblocks/models/audit_event_type_enum.py
fireblocks/models/audit_log_data.py
+fireblocks/models/audit_log_entry.py
fireblocks/models/auditor_data.py
fireblocks/models/authorization_groups.py
fireblocks/models/authorization_info.py
@@ -1554,6 +1596,7 @@ fireblocks/models/byork_verdict_enum.py
fireblocks/models/byork_verdict_request.py
fireblocks/models/byork_verdict_response.py
fireblocks/models/byork_verdict_response_status_enum.py
+fireblocks/models/bypass_reason_enum.py
fireblocks/models/call_accepted.py
fireblocks/models/callback_handler.py
fireblocks/models/callback_handler_request.py
@@ -1596,6 +1639,7 @@ fireblocks/models/compliance_result_statuses_enum.py
fireblocks/models/compliance_results.py
fireblocks/models/compliance_screening_result.py
fireblocks/models/compliance_screening_result_full_payload.py
+fireblocks/models/compliance_screening_status_enum.py
fireblocks/models/config_change_request_status.py
fireblocks/models/config_conversion_operation_snapshot.py
fireblocks/models/config_disbursement_operation_snapshot.py
@@ -1620,6 +1664,8 @@ fireblocks/models/connected_account_type.py
fireblocks/models/connected_accounts_response.py
fireblocks/models/connected_single_account.py
fireblocks/models/connected_single_account_response.py
+fireblocks/models/connector_status_enum.py
+fireblocks/models/connector_verdict_enum.py
fireblocks/models/console_user.py
fireblocks/models/contact.py
fireblocks/models/contact_approval_request.py
@@ -1898,11 +1944,13 @@ fireblocks/models/get_paged_exchange_accounts_response.py
fireblocks/models/get_paged_exchange_accounts_response_paging.py
fireblocks/models/get_positions_response.py
fireblocks/models/get_providers_response.py
+fireblocks/models/get_screening_result_response.py
fireblocks/models/get_signing_key_response_dto.py
fireblocks/models/get_test_wallet_address_response.py
fireblocks/models/get_transaction_operation.py
fireblocks/models/get_validation_key_response_dto.py
fireblocks/models/get_whitelist_ip_addresses_response.py
+fireblocks/models/get_workflow_response.py
fireblocks/models/get_workspace_status_response.py
fireblocks/models/gleif_data.py
fireblocks/models/gleif_other_legal_entity_name.py
@@ -1965,6 +2013,7 @@ fireblocks/models/legacy_src_or_dest_attributes_inner.py
fireblocks/models/legal_entity_registration.py
fireblocks/models/lei_status.py
fireblocks/models/linked_tokens_count.py
+fireblocks/models/list_approval_api_keys_response.py
fireblocks/models/list_approvals_response.py
fireblocks/models/list_assets_response.py
fireblocks/models/list_blockchains_response.py
@@ -2163,6 +2212,8 @@ fireblocks/models/read_call_function_dto_abi_function.py
fireblocks/models/reason_for_payment_enum.py
fireblocks/models/recipient_handle.py
fireblocks/models/redeem_funds_to_linked_dda_response.py
+fireblocks/models/register_approval_api_key_request.py
+fireblocks/models/register_approval_api_key_response.py
fireblocks/models/register_legal_entity_request.py
fireblocks/models/register_new_asset_request.py
fireblocks/models/reissue_multichain_token_request.py
@@ -2203,9 +2254,15 @@ fireblocks/models/retry_requote_request_details.py
fireblocks/models/retry_requote_type_enum.py
fireblocks/models/reward_info.py
fireblocks/models/rewards_info.py
+fireblocks/models/risk_level_enum.py
fireblocks/models/role_details.py
fireblocks/models/role_details2.py
fireblocks/models/role_grantee.py
+fireblocks/models/rule.py
+fireblocks/models/rule_action_enum.py
+fireblocks/models/rule_condition.py
+fireblocks/models/rule_condition_operator_enum.py
+fireblocks/models/rule_set.py
fireblocks/models/ruleset_quorum.py
fireblocks/models/save_automation_settings_response.py
fireblocks/models/scope_item.py
@@ -2215,11 +2272,15 @@ fireblocks/models/screening_aml_alert.py
fireblocks/models/screening_aml_matched_rule.py
fireblocks/models/screening_aml_result.py
fireblocks/models/screening_configurations_request.py
+fireblocks/models/screening_input.py
fireblocks/models/screening_metadata_config.py
+fireblocks/models/screening_operation_enum.py
fireblocks/models/screening_operation_execution.py
fireblocks/models/screening_operation_execution_output.py
fireblocks/models/screening_operation_failure.py
fireblocks/models/screening_operation_type.py
+fireblocks/models/screening_outcome_enum.py
+fireblocks/models/screening_payload.py
fireblocks/models/screening_policy_amount.py
fireblocks/models/screening_policy_amount_range.py
fireblocks/models/screening_policy_currency.py
@@ -2335,6 +2396,9 @@ fireblocks/models/staking_positions_paginated_response.py
fireblocks/models/staking_provider.py
fireblocks/models/status.py
fireblocks/models/stellar_ripple_create_params_dto.py
+fireblocks/models/step_config.py
+fireblocks/models/step_operation_config.py
+fireblocks/models/step_result.py
fireblocks/models/submit_order_requirement_request.py
fireblocks/models/supported_block_chains_response.py
fireblocks/models/supported_blockchain.py
@@ -2482,6 +2546,7 @@ 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_direction_enum.py
fireblocks/models/transfer_operation_config_params.py
fireblocks/models/transfer_operation_execution.py
fireblocks/models/transfer_operation_execution_output.py
@@ -2551,6 +2616,9 @@ fireblocks/models/travel_rule_vasp_external_entity_config.py
fireblocks/models/travel_rule_vasp_external_entity_registration.py
fireblocks/models/travel_rule_vasp_for_vault.py
fireblocks/models/travel_rule_verdict_enum.py
+fireblocks/models/trigger_rule_outcome_enum.py
+fireblocks/models/trigger_screening_request.py
+fireblocks/models/trigger_screening_response.py
fireblocks/models/trigger_validation_flow_response.py
fireblocks/models/trust_proof_of_address_create_response.py
fireblocks/models/trust_proof_of_address_request.py
@@ -2579,6 +2647,8 @@ fireblocks/models/update_vault_account_asset_address_request.py
fireblocks/models/update_vault_account_request.py
fireblocks/models/update_webhook_oauth_request.py
fireblocks/models/update_webhook_request.py
+fireblocks/models/update_workflow_status_request.py
+fireblocks/models/update_workflow_status_response.py
fireblocks/models/us_wire_address.py
fireblocks/models/us_wire_destination.py
fireblocks/models/us_wire_payment_info.py
@@ -2625,12 +2695,14 @@ fireblocks/models/webhook_event.py
fireblocks/models/webhook_metric.py
fireblocks/models/webhook_mtls.py
fireblocks/models/webhook_mtls_csr_response.py
+fireblocks/models/webhook_mtls_key_algorithm.py
fireblocks/models/webhook_oauth_credentials.py
fireblocks/models/webhook_paginated_response.py
fireblocks/models/withdraw_request.py
fireblocks/models/workflow_config_status.py
fireblocks/models/workflow_configuration_id.py
fireblocks/models/workflow_execution_operation.py
+fireblocks/models/workflow_status_enum.py
fireblocks/models/workspace.py
fireblocks/models/write_abi_function.py
fireblocks/models/write_call_function_dto.py
@@ -2757,9 +2829,12 @@ test/test_api_key.py
test/test_api_keys_paginated_response.py
test/test_api_user.py
test/test_api_user_api.py
+test/test_approval_api_key.py
+test/test_approval_api_public_key.py
test/test_approval_request.py
test/test_approval_request_item.py
test/test_approvals_beta_api.py
+test/test_approve_approval_request.py
test/test_approvers_config.py
test/test_approvers_config_approval_groups_inner.py
test/test_apy.py
@@ -2797,7 +2872,9 @@ test/test_assign_vaults_to_legal_entity_request.py
test/test_assign_vaults_to_legal_entity_response.py
test/test_attach_detach_utxo_labels_request.py
test/test_attach_detach_utxo_labels_response.py
+test/test_audit_event_type_enum.py
test/test_audit_log_data.py
+test/test_audit_log_entry.py
test/test_audit_logs_api.py
test/test_auditor_data.py
test/test_authorization_groups.py
@@ -2839,6 +2916,7 @@ test/test_byork_verdict_enum.py
test/test_byork_verdict_request.py
test/test_byork_verdict_response.py
test/test_byork_verdict_response_status_enum.py
+test/test_bypass_reason_enum.py
test/test_call_accepted.py
test/test_callback_handler.py
test/test_callback_handler_request.py
@@ -2876,6 +2954,7 @@ test/test_collection_token_metadata_attribute_dto.py
test/test_collection_token_metadata_dto.py
test/test_collection_type.py
test/test_compliance_api.py
+test/test_compliance_orchestrator_beta_api.py
test/test_compliance_requirement.py
test/test_compliance_result_full_payload.py
test/test_compliance_result_statuses_enum.py
@@ -2883,6 +2962,7 @@ test/test_compliance_results.py
test/test_compliance_screening_configuration_api.py
test/test_compliance_screening_result.py
test/test_compliance_screening_result_full_payload.py
+test/test_compliance_screening_status_enum.py
test/test_config_change_request_status.py
test/test_config_conversion_operation_snapshot.py
test/test_config_disbursement_operation_snapshot.py
@@ -2908,6 +2988,8 @@ test/test_connected_accounts_beta_api.py
test/test_connected_accounts_response.py
test/test_connected_single_account.py
test/test_connected_single_account_response.py
+test/test_connector_status_enum.py
+test/test_connector_verdict_enum.py
test/test_console_user.py
test/test_console_user_api.py
test/test_contact.py
@@ -3200,11 +3282,13 @@ test/test_get_paged_exchange_accounts_response.py
test/test_get_paged_exchange_accounts_response_paging.py
test/test_get_positions_response.py
test/test_get_providers_response.py
+test/test_get_screening_result_response.py
test/test_get_signing_key_response_dto.py
test/test_get_test_wallet_address_response.py
test/test_get_transaction_operation.py
test/test_get_validation_key_response_dto.py
test/test_get_whitelist_ip_addresses_response.py
+test/test_get_workflow_response.py
test/test_get_workspace_status_response.py
test/test_gleif_data.py
test/test_gleif_other_legal_entity_name.py
@@ -3270,6 +3354,7 @@ test/test_legacy_src_or_dest_attributes_inner.py
test/test_legal_entity_registration.py
test/test_lei_status.py
test/test_linked_tokens_count.py
+test/test_list_approval_api_keys_response.py
test/test_list_approvals_response.py
test/test_list_assets_response.py
test/test_list_blockchains_response.py
@@ -3477,6 +3562,8 @@ test/test_read_call_function_dto_abi_function.py
test/test_reason_for_payment_enum.py
test/test_recipient_handle.py
test/test_redeem_funds_to_linked_dda_response.py
+test/test_register_approval_api_key_request.py
+test/test_register_approval_api_key_response.py
test/test_register_legal_entity_request.py
test/test_register_new_asset_request.py
test/test_reissue_multichain_token_request.py
@@ -3519,9 +3606,15 @@ test/test_retry_requote_request_details.py
test/test_retry_requote_type_enum.py
test/test_reward_info.py
test/test_rewards_info.py
+test/test_risk_level_enum.py
test/test_role_details.py
test/test_role_details2.py
test/test_role_grantee.py
+test/test_rule.py
+test/test_rule_action_enum.py
+test/test_rule_condition.py
+test/test_rule_condition_operator_enum.py
+test/test_rule_set.py
test/test_ruleset_quorum.py
test/test_save_automation_settings_response.py
test/test_scope_item.py
@@ -3531,11 +3624,15 @@ test/test_screening_aml_alert.py
test/test_screening_aml_matched_rule.py
test/test_screening_aml_result.py
test/test_screening_configurations_request.py
+test/test_screening_input.py
test/test_screening_metadata_config.py
+test/test_screening_operation_enum.py
test/test_screening_operation_execution.py
test/test_screening_operation_execution_output.py
test/test_screening_operation_failure.py
test/test_screening_operation_type.py
+test/test_screening_outcome_enum.py
+test/test_screening_payload.py
test/test_screening_policy_amount.py
test/test_screening_policy_amount_range.py
test/test_screening_policy_currency.py
@@ -3654,6 +3751,9 @@ test/test_staking_positions_paginated_response.py
test/test_staking_provider.py
test/test_status.py
test/test_stellar_ripple_create_params_dto.py
+test/test_step_config.py
+test/test_step_operation_config.py
+test/test_step_result.py
test/test_submit_order_requirement_request.py
test/test_supported_block_chains_response.py
test/test_supported_blockchain.py
@@ -3806,6 +3906,7 @@ 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_direction_enum.py
test/test_transfer_operation_config_params.py
test/test_transfer_operation_execution.py
test/test_transfer_operation_execution_output.py
@@ -3876,6 +3977,9 @@ test/test_travel_rule_vasp_external_entity_config.py
test/test_travel_rule_vasp_external_entity_registration.py
test/test_travel_rule_vasp_for_vault.py
test/test_travel_rule_verdict_enum.py
+test/test_trigger_rule_outcome_enum.py
+test/test_trigger_screening_request.py
+test/test_trigger_screening_response.py
test/test_trigger_validation_flow_response.py
test/test_trust_proof_of_address_create_response.py
test/test_trust_proof_of_address_request.py
@@ -3904,6 +4008,8 @@ test/test_update_vault_account_asset_address_request.py
test/test_update_vault_account_request.py
test/test_update_webhook_oauth_request.py
test/test_update_webhook_request.py
+test/test_update_workflow_status_request.py
+test/test_update_workflow_status_response.py
test/test_us_wire_address.py
test/test_us_wire_destination.py
test/test_us_wire_payment_info.py
@@ -3955,6 +4061,7 @@ test/test_webhook_event.py
test/test_webhook_metric.py
test/test_webhook_mtls.py
test/test_webhook_mtls_csr_response.py
+test/test_webhook_mtls_key_algorithm.py
test/test_webhook_oauth_credentials.py
test/test_webhook_paginated_response.py
test/test_webhooks_api.py
@@ -3964,6 +4071,7 @@ test/test_withdraw_request.py
test/test_workflow_config_status.py
test/test_workflow_configuration_id.py
test/test_workflow_execution_operation.py
+test/test_workflow_status_enum.py
test/test_workspace.py
test/test_workspace_api.py
test/test_workspace_status_beta_api.py
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index ea365ddc..00000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,290 +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).
-
-## [v31.0.0](https://github.com/fireblocks/py-sdk/compare/v24.0.0...v31.0.0) - 2026-09-15
-
-### Merged
-
-- Generated SDK #2850019096 [`#160`](https://github.com/fireblocks/py-sdk/pull/160)
-
-## [v24.0.0](https://github.com/fireblocks/py-sdk/compare/v23.0.0...v24.0.0) - 2026-07-23
-
-### Merged
-
-- Generated SDK #2700459745 (major) [`#146`](https://github.com/fireblocks/py-sdk/pull/146)
-
-## [v23.0.0](https://github.com/fireblocks/py-sdk/compare/v22.0.0...v23.0.0) - 2026-07-01
-
-### Merged
-
-- Generated SDK #1180 [`#145`](https://github.com/fireblocks/py-sdk/pull/145)
-
-## [v22.0.0](https://github.com/fireblocks/py-sdk/compare/v21.0.0...v22.0.0) - 2026-06-28
-
-### Merged
-
-- Generated SDK #5347 [`#144`](https://github.com/fireblocks/py-sdk/pull/144)
-
-## [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 7f799af7..bdee0e46 100644
--- a/README.md
+++ b/README.md
@@ -236,7 +236,11 @@ 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
+*ApprovalsBetaApi* | [**approve_approval**](docs/ApprovalsBetaApi.md#approve_approval) | **POST** /approvals/{requestId}/approve | Approve an approval request
+*ApprovalsBetaApi* | [**create_approval_key**](docs/ApprovalsBetaApi.md#create_approval_key) | **POST** /management/api_users/{userId}/approval_keys | Register an approval key
+*ApprovalsBetaApi* | [**delete_approval_key**](docs/ApprovalsBetaApi.md#delete_approval_key) | **DELETE** /management/api_users/{userId}/approval_keys/{keyId} | Delete an approval key
*ApprovalsBetaApi* | [**get_approval_by_id**](docs/ApprovalsBetaApi.md#get_approval_by_id) | **GET** /approvals/{requestId} | Get a single approval request
+*ApprovalsBetaApi* | [**get_approval_keys**](docs/ApprovalsBetaApi.md#get_approval_keys) | **GET** /management/api_users/{userId}/approval_keys | List approval keys
*ApprovalsBetaApi* | [**get_approvals**](docs/ApprovalsBetaApi.md#get_approvals) | **GET** /approvals | List approval requests
*ApprovalsBetaApi* | [**reject_approval**](docs/ApprovalsBetaApi.md#reject_approval) | **POST** /approvals/{requestId}/reject | Reject an approval request
*AuditLogsApi* | [**get_audit_logs**](docs/AuditLogsApi.md#get_audit_logs) | **GET** /management/audit_logs | Get audit logs
@@ -297,6 +301,10 @@ Class | Method | HTTP request | Description
*ComplianceApi* | [**update_legal_entity**](docs/ComplianceApi.md#update_legal_entity) | **PUT** /legal_entities/{legalEntityId} | Update legal entity
*ComplianceApi* | [**update_screening_configuration**](docs/ComplianceApi.md#update_screening_configuration) | **PUT** /screening/configurations | Tenant - Screening Configuration
*ComplianceApi* | [**update_travel_rule_config**](docs/ComplianceApi.md#update_travel_rule_config) | **PUT** /screening/travel_rule/policy_configuration | Update Travel Rule Configuration
+*ComplianceOrchestratorBetaApi* | [**get_screening_result**](docs/ComplianceOrchestratorBetaApi.md#get_screening_result) | **GET** /compliance/orchestrator/screenings/{screeningId} | Get a Compliance Orchestrator screening's result
+*ComplianceOrchestratorBetaApi* | [**get_workflow**](docs/ComplianceOrchestratorBetaApi.md#get_workflow) | **GET** /compliance/orchestrator/workflows/{workflowId} | Get a Compliance Orchestrator workflow
+*ComplianceOrchestratorBetaApi* | [**trigger_screening**](docs/ComplianceOrchestratorBetaApi.md#trigger_screening) | **POST** /compliance/orchestrator/screenings | Trigger a Compliance Orchestrator screening
+*ComplianceOrchestratorBetaApi* | [**update_workflow_status**](docs/ComplianceOrchestratorBetaApi.md#update_workflow_status) | **PATCH** /compliance/orchestrator/workflows/{workflowId}/status | Update a Compliance Orchestrator workflow's status
*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* | [**add_connected_account**](docs/ConnectedAccountsBetaApi.md#add_connected_account) | **POST** /connected_accounts | Add a connected account
@@ -678,7 +686,7 @@ Class | Method | HTTP request | Description
*WebhooksV2Api* | [**delete_webhook**](docs/WebhooksV2Api.md#delete_webhook) | **DELETE** /webhooks/{webhookId} | Delete webhook
*WebhooksV2Api* | [**delete_webhook_oauth**](docs/WebhooksV2Api.md#delete_webhook_oauth) | **DELETE** /webhooks_settings/oauth/{webhookOauthId} | Delete OAuth credentials
*WebhooksV2Api* | [**get_metrics**](docs/WebhooksV2Api.md#get_metrics) | **GET** /webhooks/{webhookId}/metrics/{metricName} | Get webhook metrics
-*WebhooksV2Api* | [**get_mtls_csr**](docs/WebhooksV2Api.md#get_mtls_csr) | **GET** /webhooks/mtls/csr | Get mTLS CSR
+*WebhooksV2Api* | [**get_mtls_csr**](docs/WebhooksV2Api.md#get_mtls_csr) | **GET** /webhooks_settings/mtls_csr | Get mTLS CSR
*WebhooksV2Api* | [**get_notification**](docs/WebhooksV2Api.md#get_notification) | **GET** /webhooks/{webhookId}/notifications/{notificationId} | Get notification by id
*WebhooksV2Api* | [**get_notification_attempts**](docs/WebhooksV2Api.md#get_notification_attempts) | **GET** /webhooks/{webhookId}/notifications/{notificationId}/attempts | Get notification attempts
*WebhooksV2Api* | [**get_notifications**](docs/WebhooksV2Api.md#get_notifications) | **GET** /webhooks/{webhookId}/notifications | Get all notifications by webhook id
@@ -796,8 +804,11 @@ Class | Method | HTTP request | Description
- [AmountRangeMinMax2](docs/AmountRangeMinMax2.md)
- [ApiKey](docs/ApiKey.md)
- [ApiKeysPaginatedResponse](docs/ApiKeysPaginatedResponse.md)
+ - [ApprovalApiKey](docs/ApprovalApiKey.md)
+ - [ApprovalApiPublicKey](docs/ApprovalApiPublicKey.md)
- [ApprovalRequest](docs/ApprovalRequest.md)
- [ApprovalRequestItem](docs/ApprovalRequestItem.md)
+ - [ApproveApprovalRequest](docs/ApproveApprovalRequest.md)
- [ApproversConfig](docs/ApproversConfig.md)
- [ApproversConfigApprovalGroupsInner](docs/ApproversConfigApprovalGroupsInner.md)
- [Apy](docs/Apy.md)
@@ -835,7 +846,9 @@ Class | Method | HTTP request | Description
- [AssignVaultsToLegalEntityResponse](docs/AssignVaultsToLegalEntityResponse.md)
- [AttachDetachUtxoLabelsRequest](docs/AttachDetachUtxoLabelsRequest.md)
- [AttachDetachUtxoLabelsResponse](docs/AttachDetachUtxoLabelsResponse.md)
+ - [AuditEventTypeEnum](docs/AuditEventTypeEnum.md)
- [AuditLogData](docs/AuditLogData.md)
+ - [AuditLogEntry](docs/AuditLogEntry.md)
- [AuditorData](docs/AuditorData.md)
- [AuthorizationGroups](docs/AuthorizationGroups.md)
- [AuthorizationInfo](docs/AuthorizationInfo.md)
@@ -874,6 +887,7 @@ Class | Method | HTTP request | Description
- [ByorkVerdictRequest](docs/ByorkVerdictRequest.md)
- [ByorkVerdictResponse](docs/ByorkVerdictResponse.md)
- [ByorkVerdictResponseStatusEnum](docs/ByorkVerdictResponseStatusEnum.md)
+ - [BypassReasonEnum](docs/BypassReasonEnum.md)
- [CallAccepted](docs/CallAccepted.md)
- [CallbackHandler](docs/CallbackHandler.md)
- [CallbackHandlerRequest](docs/CallbackHandlerRequest.md)
@@ -916,6 +930,7 @@ Class | Method | HTTP request | Description
- [ComplianceResults](docs/ComplianceResults.md)
- [ComplianceScreeningResult](docs/ComplianceScreeningResult.md)
- [ComplianceScreeningResultFullPayload](docs/ComplianceScreeningResultFullPayload.md)
+ - [ComplianceScreeningStatusEnum](docs/ComplianceScreeningStatusEnum.md)
- [ConfigChangeRequestStatus](docs/ConfigChangeRequestStatus.md)
- [ConfigConversionOperationSnapshot](docs/ConfigConversionOperationSnapshot.md)
- [ConfigDisbursementOperationSnapshot](docs/ConfigDisbursementOperationSnapshot.md)
@@ -940,6 +955,8 @@ Class | Method | HTTP request | Description
- [ConnectedAccountsResponse](docs/ConnectedAccountsResponse.md)
- [ConnectedSingleAccount](docs/ConnectedSingleAccount.md)
- [ConnectedSingleAccountResponse](docs/ConnectedSingleAccountResponse.md)
+ - [ConnectorStatusEnum](docs/ConnectorStatusEnum.md)
+ - [ConnectorVerdictEnum](docs/ConnectorVerdictEnum.md)
- [ConsoleUser](docs/ConsoleUser.md)
- [Contact](docs/Contact.md)
- [ContactApprovalRequest](docs/ContactApprovalRequest.md)
@@ -1218,11 +1235,13 @@ Class | Method | HTTP request | Description
- [GetPagedExchangeAccountsResponsePaging](docs/GetPagedExchangeAccountsResponsePaging.md)
- [GetPositionsResponse](docs/GetPositionsResponse.md)
- [GetProvidersResponse](docs/GetProvidersResponse.md)
+ - [GetScreeningResultResponse](docs/GetScreeningResultResponse.md)
- [GetSigningKeyResponseDto](docs/GetSigningKeyResponseDto.md)
- [GetTestWalletAddressResponse](docs/GetTestWalletAddressResponse.md)
- [GetTransactionOperation](docs/GetTransactionOperation.md)
- [GetValidationKeyResponseDto](docs/GetValidationKeyResponseDto.md)
- [GetWhitelistIpAddressesResponse](docs/GetWhitelistIpAddressesResponse.md)
+ - [GetWorkflowResponse](docs/GetWorkflowResponse.md)
- [GetWorkspaceStatusResponse](docs/GetWorkspaceStatusResponse.md)
- [GleifData](docs/GleifData.md)
- [GleifOtherLegalEntityName](docs/GleifOtherLegalEntityName.md)
@@ -1285,6 +1304,7 @@ Class | Method | HTTP request | Description
- [LegalEntityRegistration](docs/LegalEntityRegistration.md)
- [LeiStatus](docs/LeiStatus.md)
- [LinkedTokensCount](docs/LinkedTokensCount.md)
+ - [ListApprovalApiKeysResponse](docs/ListApprovalApiKeysResponse.md)
- [ListApprovalsResponse](docs/ListApprovalsResponse.md)
- [ListAssetsResponse](docs/ListAssetsResponse.md)
- [ListBlockchainsResponse](docs/ListBlockchainsResponse.md)
@@ -1483,6 +1503,8 @@ Class | Method | HTTP request | Description
- [ReasonForPaymentEnum](docs/ReasonForPaymentEnum.md)
- [RecipientHandle](docs/RecipientHandle.md)
- [RedeemFundsToLinkedDDAResponse](docs/RedeemFundsToLinkedDDAResponse.md)
+ - [RegisterApprovalApiKeyRequest](docs/RegisterApprovalApiKeyRequest.md)
+ - [RegisterApprovalApiKeyResponse](docs/RegisterApprovalApiKeyResponse.md)
- [RegisterLegalEntityRequest](docs/RegisterLegalEntityRequest.md)
- [RegisterNewAssetRequest](docs/RegisterNewAssetRequest.md)
- [ReissueMultichainTokenRequest](docs/ReissueMultichainTokenRequest.md)
@@ -1523,9 +1545,15 @@ Class | Method | HTTP request | Description
- [RetryRequoteTypeEnum](docs/RetryRequoteTypeEnum.md)
- [RewardInfo](docs/RewardInfo.md)
- [RewardsInfo](docs/RewardsInfo.md)
+ - [RiskLevelEnum](docs/RiskLevelEnum.md)
- [RoleDetails](docs/RoleDetails.md)
- [RoleDetails2](docs/RoleDetails2.md)
- [RoleGrantee](docs/RoleGrantee.md)
+ - [Rule](docs/Rule.md)
+ - [RuleActionEnum](docs/RuleActionEnum.md)
+ - [RuleCondition](docs/RuleCondition.md)
+ - [RuleConditionOperatorEnum](docs/RuleConditionOperatorEnum.md)
+ - [RuleSet](docs/RuleSet.md)
- [RulesetQuorum](docs/RulesetQuorum.md)
- [SEPAAddress](docs/SEPAAddress.md)
- [SEPADestination](docs/SEPADestination.md)
@@ -1539,11 +1567,15 @@ Class | Method | HTTP request | Description
- [ScreeningAmlMatchedRule](docs/ScreeningAmlMatchedRule.md)
- [ScreeningAmlResult](docs/ScreeningAmlResult.md)
- [ScreeningConfigurationsRequest](docs/ScreeningConfigurationsRequest.md)
+ - [ScreeningInput](docs/ScreeningInput.md)
- [ScreeningMetadataConfig](docs/ScreeningMetadataConfig.md)
+ - [ScreeningOperationEnum](docs/ScreeningOperationEnum.md)
- [ScreeningOperationExecution](docs/ScreeningOperationExecution.md)
- [ScreeningOperationExecutionOutput](docs/ScreeningOperationExecutionOutput.md)
- [ScreeningOperationFailure](docs/ScreeningOperationFailure.md)
- [ScreeningOperationType](docs/ScreeningOperationType.md)
+ - [ScreeningOutcomeEnum](docs/ScreeningOutcomeEnum.md)
+ - [ScreeningPayload](docs/ScreeningPayload.md)
- [ScreeningPolicyAmount](docs/ScreeningPolicyAmount.md)
- [ScreeningPolicyAmountRange](docs/ScreeningPolicyAmountRange.md)
- [ScreeningPolicyCurrency](docs/ScreeningPolicyCurrency.md)
@@ -1655,6 +1687,9 @@ Class | Method | HTTP request | Description
- [StakingProvider](docs/StakingProvider.md)
- [Status](docs/Status.md)
- [StellarRippleCreateParamsDto](docs/StellarRippleCreateParamsDto.md)
+ - [StepConfig](docs/StepConfig.md)
+ - [StepOperationConfig](docs/StepOperationConfig.md)
+ - [StepResult](docs/StepResult.md)
- [SubmitOrderRequirementRequest](docs/SubmitOrderRequirementRequest.md)
- [SupportedBlockChainsResponse](docs/SupportedBlockChainsResponse.md)
- [SupportedBlockchain](docs/SupportedBlockchain.md)
@@ -1802,6 +1837,7 @@ Class | Method | HTTP request | Description
- [TransactionResponseDestination](docs/TransactionResponseDestination.md)
- [TransactionTag](docs/TransactionTag.md)
- [TransferConfigOperation](docs/TransferConfigOperation.md)
+ - [TransferDirectionEnum](docs/TransferDirectionEnum.md)
- [TransferOperationConfigParams](docs/TransferOperationConfigParams.md)
- [TransferOperationExecution](docs/TransferOperationExecution.md)
- [TransferOperationExecutionOutput](docs/TransferOperationExecutionOutput.md)
@@ -1871,6 +1907,9 @@ Class | Method | HTTP request | Description
- [TravelRuleValidateTransactionResponse](docs/TravelRuleValidateTransactionResponse.md)
- [TravelRuleVaspForVault](docs/TravelRuleVaspForVault.md)
- [TravelRuleVerdictEnum](docs/TravelRuleVerdictEnum.md)
+ - [TriggerRuleOutcomeEnum](docs/TriggerRuleOutcomeEnum.md)
+ - [TriggerScreeningRequest](docs/TriggerScreeningRequest.md)
+ - [TriggerScreeningResponse](docs/TriggerScreeningResponse.md)
- [TriggerValidationFlowResponse](docs/TriggerValidationFlowResponse.md)
- [TrustProofOfAddressCreateResponse](docs/TrustProofOfAddressCreateResponse.md)
- [TrustProofOfAddressRequest](docs/TrustProofOfAddressRequest.md)
@@ -1901,6 +1940,8 @@ Class | Method | HTTP request | Description
- [UpdateVaultAccountRequest](docs/UpdateVaultAccountRequest.md)
- [UpdateWebhookOauthRequest](docs/UpdateWebhookOauthRequest.md)
- [UpdateWebhookRequest](docs/UpdateWebhookRequest.md)
+ - [UpdateWorkflowStatusRequest](docs/UpdateWorkflowStatusRequest.md)
+ - [UpdateWorkflowStatusResponse](docs/UpdateWorkflowStatusResponse.md)
- [UsWirePaymentInfo](docs/UsWirePaymentInfo.md)
- [UsdcGatewayWalletAsset](docs/UsdcGatewayWalletAsset.md)
- [UsdcGatewayWalletInfoResponse](docs/UsdcGatewayWalletInfoResponse.md)
@@ -1945,12 +1986,14 @@ Class | Method | HTTP request | Description
- [WebhookMetric](docs/WebhookMetric.md)
- [WebhookMtls](docs/WebhookMtls.md)
- [WebhookMtlsCsrResponse](docs/WebhookMtlsCsrResponse.md)
+ - [WebhookMtlsKeyAlgorithm](docs/WebhookMtlsKeyAlgorithm.md)
- [WebhookOauthCredentials](docs/WebhookOauthCredentials.md)
- [WebhookPaginatedResponse](docs/WebhookPaginatedResponse.md)
- [WithdrawRequest](docs/WithdrawRequest.md)
- [WorkflowConfigStatus](docs/WorkflowConfigStatus.md)
- [WorkflowConfigurationId](docs/WorkflowConfigurationId.md)
- [WorkflowExecutionOperation](docs/WorkflowExecutionOperation.md)
+ - [WorkflowStatusEnum](docs/WorkflowStatusEnum.md)
- [Workspace](docs/Workspace.md)
- [WriteAbiFunction](docs/WriteAbiFunction.md)
- [WriteCallFunctionDto](docs/WriteCallFunctionDto.md)
diff --git a/docs/ApprovalApiKey.md b/docs/ApprovalApiKey.md
new file mode 100644
index 00000000..644309ad
--- /dev/null
+++ b/docs/ApprovalApiKey.md
@@ -0,0 +1,35 @@
+# ApprovalApiKey
+
+A registered approval API key for an API user.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **str** | The unique key ID, used to delete the key. |
+**name** | **str** | A human-readable label for the key. |
+**created_at** | **str** | Creation time as epoch time in seconds. |
+**last_used_at** | **str** | Last time the key was used to sign, as epoch time in seconds (0 if never used). |
+**approval_api_public_key** | [**ApprovalApiPublicKey**](ApprovalApiPublicKey.md) | |
+**user_id** | **str** | The ID of the API user who owns this key. |
+
+## Example
+
+```python
+from fireblocks.models.approval_api_key import ApprovalApiKey
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ApprovalApiKey from a JSON string
+approval_api_key_instance = ApprovalApiKey.from_json(json)
+# print the JSON string representation of the object
+print(ApprovalApiKey.to_json())
+
+# convert the object into a dict
+approval_api_key_dict = approval_api_key_instance.to_dict()
+# create an instance of ApprovalApiKey from a dict
+approval_api_key_from_dict = ApprovalApiKey.from_dict(approval_api_key_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/ApprovalApiPublicKey.md b/docs/ApprovalApiPublicKey.md
new file mode 100644
index 00000000..7a1cf50d
--- /dev/null
+++ b/docs/ApprovalApiPublicKey.md
@@ -0,0 +1,31 @@
+# ApprovalApiPublicKey
+
+The public key material and its signing algorithm.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**algorithm** | **str** | The signature algorithm of the public key. |
+**public_key_pem** | **str** | The PEM-encoded public key. |
+
+## Example
+
+```python
+from fireblocks.models.approval_api_public_key import ApprovalApiPublicKey
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ApprovalApiPublicKey from a JSON string
+approval_api_public_key_instance = ApprovalApiPublicKey.from_json(json)
+# print the JSON string representation of the object
+print(ApprovalApiPublicKey.to_json())
+
+# convert the object into a dict
+approval_api_public_key_dict = approval_api_public_key_instance.to_dict()
+# create an instance of ApprovalApiPublicKey from a dict
+approval_api_public_key_from_dict = ApprovalApiPublicKey.from_dict(approval_api_public_key_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/ApprovalsBetaApi.md b/docs/ApprovalsBetaApi.md
index d3077df9..4a3d0c83 100644
--- a/docs/ApprovalsBetaApi.md
+++ b/docs/ApprovalsBetaApi.md
@@ -4,11 +4,251 @@ All URIs are relative to *https://api.fireblocks.io/v1*
Method | HTTP request | Description
------------- | ------------- | -------------
+[**approve_approval**](ApprovalsBetaApi.md#approve_approval) | **POST** /approvals/{requestId}/approve | Approve an approval request
+[**create_approval_key**](ApprovalsBetaApi.md#create_approval_key) | **POST** /management/api_users/{userId}/approval_keys | Register an approval key
+[**delete_approval_key**](ApprovalsBetaApi.md#delete_approval_key) | **DELETE** /management/api_users/{userId}/approval_keys/{keyId} | Delete an approval key
[**get_approval_by_id**](ApprovalsBetaApi.md#get_approval_by_id) | **GET** /approvals/{requestId} | Get a single approval request
+[**get_approval_keys**](ApprovalsBetaApi.md#get_approval_keys) | **GET** /management/api_users/{userId}/approval_keys | List approval keys
[**get_approvals**](ApprovalsBetaApi.md#get_approvals) | **GET** /approvals | List approval requests
[**reject_approval**](ApprovalsBetaApi.md#reject_approval) | **POST** /approvals/{requestId}/reject | Reject an approval request
+# **approve_approval**
+> approve_approval(request_id, approve_approval_request, idempotency_key=idempotency_key)
+
+Approve an approval request
+
+Approve a pending approval request as the authenticated API user. The caller signs the request's signable data with the private key of a registered approval API key and submits the base64url-encoded signature, optionally with the key ID. The server verifies the signature against the registered public key — using the given key ID, or matching against all of the user's registered keys when the key ID is omitted — and advances the approval quorum.
+
+Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin.
+
+### Example
+
+
+```python
+from fireblocks.models.approve_approval_request import ApproveApprovalRequest
+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:
+ request_id = '18055' # str | The approval request ID.
+ approve_approval_request = fireblocks.ApproveApprovalRequest() # ApproveApprovalRequest |
+ 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:
+ # Approve an approval request
+ fireblocks.approvals_beta.approve_approval(request_id, approve_approval_request, idempotency_key=idempotency_key).result()
+ except Exception as e:
+ print("Exception when calling ApprovalsBetaApi->approve_approval: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **request_id** | **str**| The approval request ID. |
+ **approve_approval_request** | [**ApproveApprovalRequest**](ApproveApprovalRequest.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
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**204** | The approval request was approved. | * 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_approval_key**
+> RegisterApprovalApiKeyResponse create_approval_key(user_id, register_approval_api_key_request, idempotency_key=idempotency_key)
+
+Register an approval key
+
+Register an approval public key for an API user, used to sign approval requests. Up to 2 active keys are supported per API user. Returns the server-generated key ID used for deletion.
+
+The `userId` must be the authenticated API user's own ID. Registering a key for another user is not supported and is rejected.
+
+Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin.
+
+### Example
+
+
+```python
+from fireblocks.models.register_approval_api_key_request import RegisterApprovalApiKeyRequest
+from fireblocks.models.register_approval_api_key_response import RegisterApprovalApiKeyResponse
+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 = '8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94' # str | The ID of the API user to register the approval key for.
+ register_approval_api_key_request = fireblocks.RegisterApprovalApiKeyRequest() # RegisterApprovalApiKeyRequest |
+ 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:
+ # Register an approval key
+ api_response = fireblocks.approvals_beta.create_approval_key(user_id, register_approval_api_key_request, idempotency_key=idempotency_key).result()
+ print("The response of ApprovalsBetaApi->create_approval_key:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling ApprovalsBetaApi->create_approval_key: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **user_id** | **str**| The ID of the API user to register the approval key for. |
+ **register_approval_api_key_request** | [**RegisterApprovalApiKeyRequest**](RegisterApprovalApiKeyRequest.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
+
+[**RegisterApprovalApiKeyResponse**](RegisterApprovalApiKeyResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | The approval key was registered. | * 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)
+
+# **delete_approval_key**
+> delete_approval_key(user_id, key_id, idempotency_key=idempotency_key)
+
+Delete an approval key
+
+Delete (revoke) an approval public key for the specified API user. Revoking the last key disables the API user's ability to sign approvals.
+
+Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security 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:
+ user_id = '8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94' # str | The ID of the API user whose approval key to delete.
+ key_id = 'fab543c0-d6be-414c-aa05-5c6c84269d7a' # str | The ID of the approval key to delete.
+ 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:
+ # Delete an approval key
+ fireblocks.approvals_beta.delete_approval_key(user_id, key_id, idempotency_key=idempotency_key).result()
+ except Exception as e:
+ print("Exception when calling ApprovalsBetaApi->delete_approval_key: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **user_id** | **str**| The ID of the API user whose approval key to delete. |
+ **key_id** | **str**| The ID of the approval key to delete. |
+ **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 |
+|-------------|-------------|------------------|
+**204** | The approval key was deleted. | * 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_approval_by_id**
> ApprovalRequestItem get_approval_by_id(request_id, user_id=user_id, quorum_status_mode=quorum_status_mode)
@@ -93,6 +333,86 @@ 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_approval_keys**
+> ListApprovalApiKeysResponse get_approval_keys(user_id, page_size=page_size, page_cursor=page_cursor)
+
+List approval keys
+
+List the approval public keys registered for the specified API user.
+
+Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin, Security Auditor.
+
+### Example
+
+
+```python
+from fireblocks.models.list_approval_api_keys_response import ListApprovalApiKeysResponse
+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 = '8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94' # str | The ID of the API user whose approval keys to list.
+ page_size = 10 # int | Number of results per page. Maximum 15. Defaults to 10. (optional) (default to 10)
+ page_cursor = 'page_cursor_example' # str | Cursor returned from the previous response (the `next` field) to fetch the next page. (optional)
+
+ try:
+ # List approval keys
+ api_response = fireblocks.approvals_beta.get_approval_keys(user_id, page_size=page_size, page_cursor=page_cursor).result()
+ print("The response of ApprovalsBetaApi->get_approval_keys:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling ApprovalsBetaApi->get_approval_keys: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **user_id** | **str**| The ID of the API user whose approval keys to list. |
+ **page_size** | **int**| Number of results per page. Maximum 15. Defaults to 10. | [optional] [default to 10]
+ **page_cursor** | **str**| Cursor returned from the previous response (the `next` field) to fetch the next page. | [optional]
+
+### Return type
+
+[**ListApprovalApiKeysResponse**](ListApprovalApiKeysResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | The API user's approval keys. | * 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_approvals**
> ListApprovalsResponse get_approvals(include_user_approved=include_user_approved, user_id=user_id, include_all_users=include_all_users, quorum_status_mode=quorum_status_mode, page_size=page_size, page_cursor=page_cursor)
diff --git a/docs/ApproveApprovalRequest.md b/docs/ApproveApprovalRequest.md
new file mode 100644
index 00000000..ca2517f1
--- /dev/null
+++ b/docs/ApproveApprovalRequest.md
@@ -0,0 +1,31 @@
+# ApproveApprovalRequest
+
+The signed approval of a pending request.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**key_id** | **str** | The ID of the approval API key used to sign the request. Optional — if omitted, the signature is verified against all of the user's registered approval API keys. | [optional]
+**signature** | **str** | Base64url-encoded signature over the request's signable data, produced with the private key of a registered approval API key. If keyId is provided the signature must match that key; otherwise it is matched against all of the user's registered keys. |
+
+## Example
+
+```python
+from fireblocks.models.approve_approval_request import ApproveApprovalRequest
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ApproveApprovalRequest from a JSON string
+approve_approval_request_instance = ApproveApprovalRequest.from_json(json)
+# print the JSON string representation of the object
+print(ApproveApprovalRequest.to_json())
+
+# convert the object into a dict
+approve_approval_request_dict = approve_approval_request_instance.to_dict()
+# create an instance of ApproveApprovalRequest from a dict
+approve_approval_request_from_dict = ApproveApprovalRequest.from_dict(approve_approval_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/AuditEventTypeEnum.md b/docs/AuditEventTypeEnum.md
new file mode 100644
index 00000000..3c54890b
--- /dev/null
+++ b/docs/AuditEventTypeEnum.md
@@ -0,0 +1,21 @@
+# AuditEventTypeEnum
+
+The kind of event an audit entry records. - `STATUS_TRANSITION` — the screening moved between statuses - `STEP_TRIGGER_RULE_EVALUATED` — a step's trigger rules were evaluated - `CONNECTOR_CALL` — a connector was called; `data.phase` distinguishes the request from its terminal result - `STEP_OUTCOME_RULE_EVALUATED` — a step's outcome rules read the response - `STEP_METADATA_RECORDED` — connector metadata was attached to a step - `WORKFLOW_OUTCOME` — the workflow outcome was derived from its steps.
+
+## Enum
+
+* `STATUS_TRANSITION` (value: `'STATUS_TRANSITION'`)
+
+* `STEP_TRIGGER_RULE_EVALUATED` (value: `'STEP_TRIGGER_RULE_EVALUATED'`)
+
+* `CONNECTOR_CALL` (value: `'CONNECTOR_CALL'`)
+
+* `STEP_OUTCOME_RULE_EVALUATED` (value: `'STEP_OUTCOME_RULE_EVALUATED'`)
+
+* `STEP_METADATA_RECORDED` (value: `'STEP_METADATA_RECORDED'`)
+
+* `WORKFLOW_OUTCOME` (value: `'WORKFLOW_OUTCOME'`)
+
+[[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/AuditLogEntry.md b/docs/AuditLogEntry.md
new file mode 100644
index 00000000..debc946c
--- /dev/null
+++ b/docs/AuditLogEntry.md
@@ -0,0 +1,32 @@
+# AuditLogEntry
+
+One entry in a screening's append-only audit trail.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**timestamp** | **str** | Unix timestamp in seconds when the event occurred, encoded as a string. |
+**event_type** | [**AuditEventTypeEnum**](AuditEventTypeEnum.md) | |
+**data** | **bytearray** | The event payload, JSON serialised and then base64 encoded. Its shape depends on `eventType` — decode it to read the event. |
+
+## Example
+
+```python
+from fireblocks.models.audit_log_entry import AuditLogEntry
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of AuditLogEntry from a JSON string
+audit_log_entry_instance = AuditLogEntry.from_json(json)
+# print the JSON string representation of the object
+print(AuditLogEntry.to_json())
+
+# convert the object into a dict
+audit_log_entry_dict = audit_log_entry_instance.to_dict()
+# create an instance of AuditLogEntry from a dict
+audit_log_entry_from_dict = AuditLogEntry.from_dict(audit_log_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/BypassReasonEnum.md b/docs/BypassReasonEnum.md
new file mode 100644
index 00000000..5ca83703
--- /dev/null
+++ b/docs/BypassReasonEnum.md
@@ -0,0 +1,29 @@
+# BypassReasonEnum
+
+Why a step's screening did not run. A verbatim mirror of the platform's `BypassReason` vocabulary, shared with the rest of Fireblocks screening. Only `PASSED_BY_POLICY` is an approval — the policy deliberately let the subject through. Every other value means the check could not be performed, and the step is rejected rather than passed. A bypass is not a pass. - `MANUAL` — a person bypassed it - `UNSUPPORTED_ASSET` — the provider does not screen this asset or chain - `UNSUPPORTED_ROUTE` — the provider does not screen this route - `PASSED_BY_POLICY` — a policy rule let it through without screening - `BYPASSED_FAILURE` — screening failed and policy allowed a bypass - `TIMED_OUT` — the provider did not answer within the deadline - `BAD_CREDENTIALS` — the tenant's provider credentials were rejected - `CONFIGURATION_ERROR` — the connector is misconfigured for this tenant - `DROPPED_BY_BLOCKCHAIN` — the transaction never confirmed - `PROCESS_DISMISSED` — the surrounding process was cancelled
+
+## Enum
+
+* `MANUAL` (value: `'MANUAL'`)
+
+* `UNSUPPORTED_ASSET` (value: `'UNSUPPORTED_ASSET'`)
+
+* `UNSUPPORTED_ROUTE` (value: `'UNSUPPORTED_ROUTE'`)
+
+* `PASSED_BY_POLICY` (value: `'PASSED_BY_POLICY'`)
+
+* `BYPASSED_FAILURE` (value: `'BYPASSED_FAILURE'`)
+
+* `TIMED_OUT` (value: `'TIMED_OUT'`)
+
+* `BAD_CREDENTIALS` (value: `'BAD_CREDENTIALS'`)
+
+* `CONFIGURATION_ERROR` (value: `'CONFIGURATION_ERROR'`)
+
+* `DROPPED_BY_BLOCKCHAIN` (value: `'DROPPED_BY_BLOCKCHAIN'`)
+
+* `PROCESS_DISMISSED` (value: `'PROCESS_DISMISSED'`)
+
+[[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/ComplianceOrchestratorBetaApi.md b/docs/ComplianceOrchestratorBetaApi.md
new file mode 100644
index 00000000..8132db4c
--- /dev/null
+++ b/docs/ComplianceOrchestratorBetaApi.md
@@ -0,0 +1,327 @@
+# fireblocks.ComplianceOrchestratorBetaApi
+
+All URIs are relative to *https://api.fireblocks.io/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**get_screening_result**](ComplianceOrchestratorBetaApi.md#get_screening_result) | **GET** /compliance/orchestrator/screenings/{screeningId} | Get a Compliance Orchestrator screening's result
+[**get_workflow**](ComplianceOrchestratorBetaApi.md#get_workflow) | **GET** /compliance/orchestrator/workflows/{workflowId} | Get a Compliance Orchestrator workflow
+[**trigger_screening**](ComplianceOrchestratorBetaApi.md#trigger_screening) | **POST** /compliance/orchestrator/screenings | Trigger a Compliance Orchestrator screening
+[**update_workflow_status**](ComplianceOrchestratorBetaApi.md#update_workflow_status) | **PATCH** /compliance/orchestrator/workflows/{workflowId}/status | Update a Compliance Orchestrator workflow's status
+
+
+# **get_screening_result**
+> GetScreeningResultResponse get_screening_result(screening_id)
+
+Get a Compliance Orchestrator screening's result
+
+Returns the result of a screening started by `POST /v1/compliance/orchestrator/screenings`, with a result per workflow step and an audit log. Safe to poll: a screening still in flight reports `PENDING` or `RUNNING`. Only screenings owned by the requesting tenant are returned.
+
+### Example
+
+
+```python
+from fireblocks.models.get_screening_result_response import GetScreeningResultResponse
+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:
+ screening_id = 'a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d' # str | The screening's identifier, returned by `POST /v1/compliance/orchestrator/screenings`.
+
+ try:
+ # Get a Compliance Orchestrator screening's result
+ api_response = fireblocks.compliance_orchestrator_beta.get_screening_result(screening_id).result()
+ print("The response of ComplianceOrchestratorBetaApi->get_screening_result:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling ComplianceOrchestratorBetaApi->get_screening_result: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **screening_id** | **str**| The screening's identifier, returned by `POST /v1/compliance/orchestrator/screenings`. |
+
+### Return type
+
+[**GetScreeningResultResponse**](GetScreeningResultResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Screening result | * X-Request-ID -
|
+**400** | Invalid request arguments. | * X-Request-ID -
|
+**404** | Screening result 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_workflow**
+> GetWorkflowResponse get_workflow(workflow_id)
+
+Get a Compliance Orchestrator workflow
+
+Returns a workflow's status and its steps in execution order. Read it to see what a given `workflowId` will screen, and which fields its rules may reference.
+
+### Example
+
+
+```python
+from fireblocks.models.get_workflow_response import GetWorkflowResponse
+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:
+ workflow_id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479' # str | The workflow's identifier.
+
+ try:
+ # Get a Compliance Orchestrator workflow
+ api_response = fireblocks.compliance_orchestrator_beta.get_workflow(workflow_id).result()
+ print("The response of ComplianceOrchestratorBetaApi->get_workflow:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling ComplianceOrchestratorBetaApi->get_workflow: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **workflow_id** | **str**| The workflow's identifier. |
+
+### Return type
+
+[**GetWorkflowResponse**](GetWorkflowResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Workflow | * X-Request-ID -
|
+**400** | Invalid request arguments. | * X-Request-ID -
|
+**404** | Workflow 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)
+
+# **trigger_screening**
+> TriggerScreeningResponse trigger_screening(trigger_screening_request, idempotency_key=idempotency_key)
+
+Trigger a Compliance Orchestrator screening
+
+Starts a compliance screening against an active workflow and returns a `screeningId`. The screening runs asynchronously — poll `GET /v1/compliance/orchestrator/screenings/{screeningId}` for the result.
+
+Unlike the screening that applies automatically to submitted transactions under `/v1/screening`, this is called on demand, before anything exists on-chain.
+
+### Example
+
+
+```python
+from fireblocks.models.trigger_screening_request import TriggerScreeningRequest
+from fireblocks.models.trigger_screening_response import TriggerScreeningResponse
+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:
+ trigger_screening_request = fireblocks.TriggerScreeningRequest() # TriggerScreeningRequest |
+ 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:
+ # Trigger a Compliance Orchestrator screening
+ api_response = fireblocks.compliance_orchestrator_beta.trigger_screening(trigger_screening_request, idempotency_key=idempotency_key).result()
+ print("The response of ComplianceOrchestratorBetaApi->trigger_screening:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling ComplianceOrchestratorBetaApi->trigger_screening: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **trigger_screening_request** | [**TriggerScreeningRequest**](TriggerScreeningRequest.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
+
+[**TriggerScreeningResponse**](TriggerScreeningResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**202** | Screening accepted | * X-Request-ID -
|
+**400** | Invalid or missing required input fields. | * X-Request-ID -
|
+**404** | Workflow not found. | * X-Request-ID -
|
+**409** | Workflow is not active. | * X-Request-ID -
|
+**0** | Error Response | * X-Request-ID -
|
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **update_workflow_status**
+> UpdateWorkflowStatusResponse update_workflow_status(workflow_id, update_workflow_status_request, idempotency_key=idempotency_key)
+
+Update a Compliance Orchestrator workflow's status
+
+Moves a workflow between `DRAFT` and `ACTIVE`. A workflow must be `ACTIVE` before `POST /v1/compliance/orchestrator/screenings` will accept a screening against it. Returns the workflow's id and new status, not its full configuration.
+
+### Example
+
+
+```python
+from fireblocks.models.update_workflow_status_request import UpdateWorkflowStatusRequest
+from fireblocks.models.update_workflow_status_response import UpdateWorkflowStatusResponse
+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:
+ workflow_id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479' # str | The workflow's identifier.
+ update_workflow_status_request = fireblocks.UpdateWorkflowStatusRequest() # UpdateWorkflowStatusRequest |
+ idempotency_key = 'idempotency_key_example' # str | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. (optional)
+
+ try:
+ # Update a Compliance Orchestrator workflow's status
+ api_response = fireblocks.compliance_orchestrator_beta.update_workflow_status(workflow_id, update_workflow_status_request, idempotency_key=idempotency_key).result()
+ print("The response of ComplianceOrchestratorBetaApi->update_workflow_status:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling ComplianceOrchestratorBetaApi->update_workflow_status: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **workflow_id** | **str**| The workflow's identifier. |
+ **update_workflow_status_request** | [**UpdateWorkflowStatusRequest**](UpdateWorkflowStatusRequest.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
+
+[**UpdateWorkflowStatusResponse**](UpdateWorkflowStatusResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Workflow status updated | * X-Request-ID -
|
+**400** | Invalid request arguments. | * X-Request-ID -
|
+**404** | Workflow 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)
+
diff --git a/docs/ComplianceScreeningStatusEnum.md b/docs/ComplianceScreeningStatusEnum.md
new file mode 100644
index 00000000..82dbf559
--- /dev/null
+++ b/docs/ComplianceScreeningStatusEnum.md
@@ -0,0 +1,17 @@
+# ComplianceScreeningStatusEnum
+
+A screening's lifecycle status. - `PENDING` — accepted, not started - `RUNNING` — one or more steps in flight - `COMPLETED` — every step finished and the workflow outcome is set - `FAILED` — the screening could not be completed
+
+## Enum
+
+* `PENDING` (value: `'PENDING'`)
+
+* `RUNNING` (value: `'RUNNING'`)
+
+* `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/ConnectorStatusEnum.md b/docs/ConnectorStatusEnum.md
new file mode 100644
index 00000000..8ee90312
--- /dev/null
+++ b/docs/ConnectorStatusEnum.md
@@ -0,0 +1,17 @@
+# ConnectorStatusEnum
+
+The connector's own processing status for a step. - `COMPLETED` — the provider answered - `BYPASSED` — no provider call was made; see `bypassReason` - `FAILED` — the provider call did not succeed - `FROZEN` — the step is held pending manual action
+
+## Enum
+
+* `COMPLETED` (value: `'COMPLETED'`)
+
+* `BYPASSED` (value: `'BYPASSED'`)
+
+* `FAILED` (value: `'FAILED'`)
+
+* `FROZEN` (value: `'FROZEN'`)
+
+[[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/ConnectorVerdictEnum.md b/docs/ConnectorVerdictEnum.md
new file mode 100644
index 00000000..607a4a8e
--- /dev/null
+++ b/docs/ConnectorVerdictEnum.md
@@ -0,0 +1,15 @@
+# ConnectorVerdictEnum
+
+The connector's own verdict for a step, before the step's outcome rules are applied. `null` on a step that did not reach the provider.
+
+## Enum
+
+* `ACCEPT` (value: `'ACCEPT'`)
+
+* `REJECT` (value: `'REJECT'`)
+
+* `ALERT` (value: `'ALERT'`)
+
+[[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/CreateWebhookOauthRequest.md b/docs/CreateWebhookOauthRequest.md
index acb4eee0..e853f33e 100644
--- a/docs/CreateWebhookOauthRequest.md
+++ b/docs/CreateWebhookOauthRequest.md
@@ -13,7 +13,7 @@ Name | Type | Description | Notes
**auth_method** | **str** | How the client credentials reach the token endpoint. `client_secret_basic` uses an HTTP Basic header, `client_secret_post` uses form fields in the body, and `client_secret_jwt` sends a JWT assertion signed with the secret, so the secret itself is never transmitted. Defaults to `client_secret_basic`. | [optional] [default to 'client_secret_basic']
**custom_jwt_claims** | **Dict[str, object]** | Extra claims for the JWT assertion. Used only when `authMethod` is `client_secret_jwt`. The usual one to set is `aud`, which defaults to the token endpoint URL; some authorization servers expect their own identifier instead. A value may be any JSON type except `null` — `null` is reserved for deleting a claim on update. `iss`, `sub`, `jti`, `iat` and `exp` are set by Fireblocks and cannot be overridden. Names are case-sensitive. The whole object must be under 16 KB. Values are write-only; responses return only the claim names. On update this merges claim by claim rather than replacing — see `WebhookOauthCustomJwtClaimsUpdate`. | [optional]
**custom_body_params** | **Dict[str, str]** | Extra parameters for the token request body — `scope` most commonly, sometimes `audience` or `resource`. Applies to every authentication method. Values must be strings, because the token request body is form-encoded rather than JSON. An empty string is allowed. `grant_type`, `client_id`, `client_secret`, `client_assertion` and `client_assertion_type` are set by Fireblocks and cannot be overridden. Names are case-sensitive. The whole object must be under 16 KB. Values are write-only; responses return only the parameter names. On update this merges key by key rather than replacing — see `WebhookOauthCustomBodyParamsUpdate`. | [optional]
-**custom_headers** | **Dict[str, str]** | Extra HTTP headers for **the token request to your authorization server** — not for the webhook delivery, which has its own separate `customHeaders`. A gateway API key is the usual case. Applies to every authentication method. Values must be strings; an empty string is allowed. Names are matched case-insensitively, so two names differing only in case are a duplicate. Names are stored and returned lowercased, so `X-Api-Key` comes back as `x-api-key`. `Content-Type`, `Content-Length` and `Host` are set by Fireblocks and cannot be overridden. `Authorization` is not sent when `authMethod` is `client_secret_basic`. Values have no length limit of their own; the whole object must be under 16 KB when serialized as UTF-8. Values are write-only; responses return only the header names. On update this merges name by name rather than replacing — see `WebhookOauthCustomHeadersUpdate`. | [optional]
+**custom_headers** | **Dict[str, str]** | Extra HTTP headers for **the token request to your authorization server** — not for the webhook delivery, which has its own separate `customHeaders`. A gateway API key is the usual case. Values must be strings; an empty string is allowed. Names are matched case-insensitively, so two names differing only in case are a duplicate. Names are stored and returned lowercased, so `X-Api-Key` comes back as `x-api-key`. `Content-Type`, `Content-Length` and `Host` are set by Fireblocks and cannot be overridden. `Authorization` can be set with `client_secret_post` or `client_secret_jwt`, which send the credentials in the body — useful when your token endpoint sits behind a gateway. It is rejected with `client_secret_basic`, which sends the credentials in that header. Values have no length limit of their own; the whole object must be under 16 KB when serialized as UTF-8. Values are write-only; responses return only the header names. On update this merges name by name rather than replacing — see `WebhookOauthCustomHeadersUpdate`. | [optional]
**mtls_client_signed_cert** | **str** | PEM-encoded client certificate for mTLS when fetching tokens. Must be a valid X.509 certificate inside its validity window. | [optional]
## Example
diff --git a/docs/CreateWebhookRequest.md b/docs/CreateWebhookRequest.md
index 6cd390eb..cc0daa1d 100644
--- a/docs/CreateWebhookRequest.md
+++ b/docs/CreateWebhookRequest.md
@@ -10,8 +10,8 @@ Name | Type | Description | Notes
**events** | [**List[WebhookEvent]**](WebhookEvent.md) | event types the webhook will subscribe to |
**enabled** | **bool** | The status of the webhook. If false, the webhook will not receive notifications. | [optional] [default to True]
**mtls** | [**WebhookMtls**](WebhookMtls.md) | | [optional]
-**webhook_oauth_id** | **str** | The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook. | [optional]
-**custom_headers** | **Dict[str, object]** | Custom HTTP headers attached to every notification delivered by this webhook. A value is a string, sent as one header line, or an array of strings, sent as one header line per element under the same name. `Cookie` accepts only a string. An empty array is rejected — leave the name out instead. At most 10 header lines in total, counted per array element rather than per name. Names must be valid HTTP header tokens, are case-insensitive, and are at most 128 characters. A value may be empty and has no length limit of its own; the whole object must be under 16 KB when serialized as UTF-8. A value that large may still be refused by your own endpoint, since web servers commonly cap the whole request header block at around 8 KB. Reserved names: `Host`, `Content-Type`, `Content-Length`, `Transfer-Encoding`, `Connection`, `User-Agent`, `Accept`, `Accept-Encoding`, `Fireblocks-Signature`, `Fireblocks-Webhook-Signature`. When this webhook has OAuth credentials attached, an `Authorization` value you set and the bearer token are both sent as separate header lines. Values are write-only; responses return only the header names. | [optional]
+**webhook_oauth_id** | **str** | The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook. Cannot be combined with an `authorization` custom header on the same webhook; a request that would leave both set is rejected. | [optional]
+**custom_headers** | **Dict[str, object]** | Custom HTTP headers attached to every notification delivered by this webhook. A value is a string, sent as one header line, or an array of strings, sent as one header line per element under the same name. `Cookie` and `Authorization` accept only a string. An empty array is rejected — leave the name out instead. At most 10 headers, counted by name — an array value counts once, however many lines it sends. Names must be valid HTTP header tokens, are case-insensitive, and are at most 128 characters. A value may be empty and has no length limit of its own; the whole object must be under 16 KB when serialized as UTF-8. A value that large may still be refused by your own endpoint, since web servers commonly cap the whole request header block at around 8 KB. Reserved names: `Host`, `Content-Type`, `Content-Length`, `Transfer-Encoding`, `Connection`, `User-Agent`, `Accept`, `Accept-Encoding`, `Fireblocks-Signature`, `Fireblocks-Webhook-Signature`. `Authorization` may be set, but not together with `webhookOauthId`; a request that would leave both set is rejected. Values are write-only; responses return only the header names. | [optional]
## Example
diff --git a/docs/GetScreeningResultResponse.md b/docs/GetScreeningResultResponse.md
new file mode 100644
index 00000000..43217baa
--- /dev/null
+++ b/docs/GetScreeningResultResponse.md
@@ -0,0 +1,35 @@
+# GetScreeningResultResponse
+
+The current status, outcome, per-step results, and audit log for a screening.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**screening_id** | **str** | Identifier of the screening being queried. |
+**workflow_id** | **str** | Identifier of the workflow that produced this screening. |
+**screening_status** | [**ComplianceScreeningStatusEnum**](ComplianceScreeningStatusEnum.md) | |
+**outcome** | [**ScreeningOutcomeEnum**](ScreeningOutcomeEnum.md) | | [optional]
+**steps** | [**List[StepResult]**](StepResult.md) | Flat step list. |
+**audit_log** | [**List[AuditLogEntry]**](AuditLogEntry.md) | Append-only audit trail for this screening. |
+
+## Example
+
+```python
+from fireblocks.models.get_screening_result_response import GetScreeningResultResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of GetScreeningResultResponse from a JSON string
+get_screening_result_response_instance = GetScreeningResultResponse.from_json(json)
+# print the JSON string representation of the object
+print(GetScreeningResultResponse.to_json())
+
+# convert the object into a dict
+get_screening_result_response_dict = get_screening_result_response_instance.to_dict()
+# create an instance of GetScreeningResultResponse from a dict
+get_screening_result_response_from_dict = GetScreeningResultResponse.from_dict(get_screening_result_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/GetWorkflowResponse.md b/docs/GetWorkflowResponse.md
new file mode 100644
index 00000000..ec74bd60
--- /dev/null
+++ b/docs/GetWorkflowResponse.md
@@ -0,0 +1,36 @@
+# GetWorkflowResponse
+
+A workflow's current definition, including its steps and each step's rule sets. A workflow is the configuration a screening runs against: an ordered list of steps, each backed by one connector. It must be `ACTIVE` before a screening will accept it — `DRAFT` is the editing state, so a screening never runs against a half-finished configuration.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**workflow_id** | **str** | Unique identifier of the workflow. |
+**template_id** | **str** | The template this workflow was provisioned from, if any. | [optional]
+**status** | [**WorkflowStatusEnum**](WorkflowStatusEnum.md) | |
+**title** | **str** | User-facing display name for the workflow. |
+**description** | **str** | User-facing free-text description of the workflow's purpose. | [optional]
+**created_at** | **str** | Unix timestamp in seconds when the workflow was provisioned, encoded as a string. |
+**steps** | [**List[StepConfig]**](StepConfig.md) | Flat list — one step per connector. |
+
+## Example
+
+```python
+from fireblocks.models.get_workflow_response import GetWorkflowResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of GetWorkflowResponse from a JSON string
+get_workflow_response_instance = GetWorkflowResponse.from_json(json)
+# print the JSON string representation of the object
+print(GetWorkflowResponse.to_json())
+
+# convert the object into a dict
+get_workflow_response_dict = get_workflow_response_instance.to_dict()
+# create an instance of GetWorkflowResponse from a dict
+get_workflow_response_from_dict = GetWorkflowResponse.from_dict(get_workflow_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/InternalTransferResponse.md b/docs/InternalTransferResponse.md
index 71243046..0529b8a9 100644
--- a/docs/InternalTransferResponse.md
+++ b/docs/InternalTransferResponse.md
@@ -7,6 +7,8 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**success** | **bool** | Indicates whether the transfer was successful |
**id** | **str** | The transaction ID of the internal transfer | [optional]
+**status** | **str** | The transfer status returned by the transaction manager. Only present when the transfer was processed via the transaction manager flow. | [optional]
+**system_messages** | [**List[SystemMessageInfo]**](SystemMessageInfo.md) | System messages returned by the transaction manager about the health of the transfer being performed. Only present when the transfer was processed via the transaction manager flow. | [optional]
## Example
diff --git a/docs/ListApprovalApiKeysResponse.md b/docs/ListApprovalApiKeysResponse.md
new file mode 100644
index 00000000..b3c4d16e
--- /dev/null
+++ b/docs/ListApprovalApiKeysResponse.md
@@ -0,0 +1,31 @@
+# ListApprovalApiKeysResponse
+
+The approval API keys registered for the API user.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**List[ApprovalApiKey]**](ApprovalApiKey.md) | The registered approval API keys. |
+**next** | **str** | Cursor for the next page of results. Pass it back as the `pageCursor` query param to fetch the next page. Empty or absent when this is the last page. | [optional]
+
+## Example
+
+```python
+from fireblocks.models.list_approval_api_keys_response import ListApprovalApiKeysResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ListApprovalApiKeysResponse from a JSON string
+list_approval_api_keys_response_instance = ListApprovalApiKeysResponse.from_json(json)
+# print the JSON string representation of the object
+print(ListApprovalApiKeysResponse.to_json())
+
+# convert the object into a dict
+list_approval_api_keys_response_dict = list_approval_api_keys_response_instance.to_dict()
+# create an instance of ListApprovalApiKeysResponse from a dict
+list_approval_api_keys_response_from_dict = ListApprovalApiKeysResponse.from_dict(list_approval_api_keys_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/ParameterWithValue.md b/docs/ParameterWithValue.md
index f0f33f6d..13178ece 100644
--- a/docs/ParameterWithValue.md
+++ b/docs/ParameterWithValue.md
@@ -10,7 +10,7 @@ Name | Type | Description | Notes
**internal_type** | **str** | The internal type of the parameter as it appears in the ABI | [optional]
**type** | **str** | The type of the parameter as it appears in the ABI |
**components** | [**List[Parameter]**](Parameter.md) | | [optional]
-**value** | **str** | The value of the parameter. can also be ParameterWithValue | [optional]
+**value** | **object** | The value of the parameter. The shape follows the ABI `type`: a string for `string`/`address`/`bytes*`, a number for `uint*`/`int*`, a boolean for `bool`, an array for `T[]`, and for `tuple` an array of nested ParameterWithValue objects (one per entry in `components`, in ABI order). | [optional]
**function_value** | [**LeanAbiFunction**](LeanAbiFunction.md) | The function value of this param (if has one). If this is set, the `value` shouldn`t be. Used for proxies | [optional]
## Example
diff --git a/docs/RegisterApprovalApiKeyRequest.md b/docs/RegisterApprovalApiKeyRequest.md
new file mode 100644
index 00000000..8fe961dc
--- /dev/null
+++ b/docs/RegisterApprovalApiKeyRequest.md
@@ -0,0 +1,31 @@
+# RegisterApprovalApiKeyRequest
+
+The approval API key to register.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **str** | A human-readable label for the key. |
+**approval_api_public_key** | [**ApprovalApiPublicKey**](ApprovalApiPublicKey.md) | |
+
+## Example
+
+```python
+from fireblocks.models.register_approval_api_key_request import RegisterApprovalApiKeyRequest
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of RegisterApprovalApiKeyRequest from a JSON string
+register_approval_api_key_request_instance = RegisterApprovalApiKeyRequest.from_json(json)
+# print the JSON string representation of the object
+print(RegisterApprovalApiKeyRequest.to_json())
+
+# convert the object into a dict
+register_approval_api_key_request_dict = register_approval_api_key_request_instance.to_dict()
+# create an instance of RegisterApprovalApiKeyRequest from a dict
+register_approval_api_key_request_from_dict = RegisterApprovalApiKeyRequest.from_dict(register_approval_api_key_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/RegisterApprovalApiKeyResponse.md b/docs/RegisterApprovalApiKeyResponse.md
new file mode 100644
index 00000000..221ad47f
--- /dev/null
+++ b/docs/RegisterApprovalApiKeyResponse.md
@@ -0,0 +1,30 @@
+# RegisterApprovalApiKeyResponse
+
+The result of registering an approval API key.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**key_id** | **str** | The server-generated ID of the registered key, used for deletion. |
+
+## Example
+
+```python
+from fireblocks.models.register_approval_api_key_response import RegisterApprovalApiKeyResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of RegisterApprovalApiKeyResponse from a JSON string
+register_approval_api_key_response_instance = RegisterApprovalApiKeyResponse.from_json(json)
+# print the JSON string representation of the object
+print(RegisterApprovalApiKeyResponse.to_json())
+
+# convert the object into a dict
+register_approval_api_key_response_dict = register_approval_api_key_response_instance.to_dict()
+# create an instance of RegisterApprovalApiKeyResponse from a dict
+register_approval_api_key_response_from_dict = RegisterApprovalApiKeyResponse.from_dict(register_approval_api_key_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/RiskLevelEnum.md b/docs/RiskLevelEnum.md
new file mode 100644
index 00000000..d823fa19
--- /dev/null
+++ b/docs/RiskLevelEnum.md
@@ -0,0 +1,19 @@
+# RiskLevelEnum
+
+The provider's risk assessment for a step, normalised across connectors. `null` on a step that did not reach the provider — the absence of a risk level is not the same as low risk.
+
+## Enum
+
+* `SEVERE` (value: `'SEVERE'`)
+
+* `HIGH` (value: `'HIGH'`)
+
+* `MEDIUM` (value: `'MEDIUM'`)
+
+* `LOW` (value: `'LOW'`)
+
+* `UNKNOWN` (value: `'UNKNOWN'`)
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/docs/Rule.md b/docs/Rule.md
new file mode 100644
index 00000000..1a0aa374
--- /dev/null
+++ b/docs/Rule.md
@@ -0,0 +1,34 @@
+# Rule
+
+A single rule within a rule set. The first rule whose conditions match wins, and its `ruleAction` is applied.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**rule_id** | **str** | UUID, unique within the rule set. | [optional]
+**conditions** | [**List[RuleCondition]**](RuleCondition.md) | Conditions AND-ed together within this rule. | [optional]
+**rule_action** | [**RuleActionEnum**](RuleActionEnum.md) | | [optional]
+**order** | **int** | Zero-based evaluation order among the rule set's rules, lowest first. | [optional]
+**title** | **str** | User-facing label for the rule. Cosmetic only — not read by rule evaluation. | [optional]
+
+## Example
+
+```python
+from fireblocks.models.rule import Rule
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of Rule from a JSON string
+rule_instance = Rule.from_json(json)
+# print the JSON string representation of the object
+print(Rule.to_json())
+
+# convert the object into a dict
+rule_dict = rule_instance.to_dict()
+# create an instance of Rule from a dict
+rule_from_dict = Rule.from_dict(rule_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/RuleActionEnum.md b/docs/RuleActionEnum.md
new file mode 100644
index 00000000..71f230ca
--- /dev/null
+++ b/docs/RuleActionEnum.md
@@ -0,0 +1,23 @@
+# RuleActionEnum
+
+What happens when a rule matches. Which values are legal depends on the rule set the rule belongs to — a trigger rule decides whether to screen, an outcome rule decides what the answer means. The enum is the union of both sets, so neither set accepts all of its values: `FREEZE` is the one value shared by the two, and every other value belongs to exactly one of them. Trigger rules: - `SCREEN` — call the connector - `PASS` — let the subject through without screening - `FREEZE` — hold for manual action Outcome rules: - `ACCEPT` — the step passes - `REJECT` — the step fails - `ALERT` — the step passes but is flagged for review - `FREEZE` — hold for manual action - `WAIT` — come back later; refused once the deadline has passed
+
+## Enum
+
+* `SCREEN` (value: `'SCREEN'`)
+
+* `PASS` (value: `'PASS'`)
+
+* `FREEZE` (value: `'FREEZE'`)
+
+* `ACCEPT` (value: `'ACCEPT'`)
+
+* `REJECT` (value: `'REJECT'`)
+
+* `ALERT` (value: `'ALERT'`)
+
+* `WAIT` (value: `'WAIT'`)
+
+[[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/RuleCondition.md b/docs/RuleCondition.md
new file mode 100644
index 00000000..7bd78996
--- /dev/null
+++ b/docs/RuleCondition.md
@@ -0,0 +1,32 @@
+# RuleCondition
+
+A single condition within a rule. Conditions within a rule are AND-ed together.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**var_field** | **str** | The input context field this condition tests. Allowed values depend on the rule set type (trigger vs. outcome) and the step's connector/operation. |
+**operator** | [**RuleConditionOperatorEnum**](RuleConditionOperatorEnum.md) | |
+**value** | **str** | The value `field` is compared against, using `operator`. |
+
+## Example
+
+```python
+from fireblocks.models.rule_condition import RuleCondition
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of RuleCondition from a JSON string
+rule_condition_instance = RuleCondition.from_json(json)
+# print the JSON string representation of the object
+print(RuleCondition.to_json())
+
+# convert the object into a dict
+rule_condition_dict = rule_condition_instance.to_dict()
+# create an instance of RuleCondition from a dict
+rule_condition_from_dict = RuleCondition.from_dict(rule_condition_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/RuleConditionOperatorEnum.md b/docs/RuleConditionOperatorEnum.md
new file mode 100644
index 00000000..fd4645a5
--- /dev/null
+++ b/docs/RuleConditionOperatorEnum.md
@@ -0,0 +1,21 @@
+# RuleConditionOperatorEnum
+
+The comparison applied between a rule condition's `field` and its `value`.
+
+## Enum
+
+* `EQUALS` (value: `'EQUALS'`)
+
+* `NOT_EQUALS` (value: `'NOT_EQUALS'`)
+
+* `GT` (value: `'GT'`)
+
+* `GTE` (value: `'GTE'`)
+
+* `LT` (value: `'LT'`)
+
+* `LTE` (value: `'LTE'`)
+
+[[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/RuleSet.md b/docs/RuleSet.md
new file mode 100644
index 00000000..723c8aa3
--- /dev/null
+++ b/docs/RuleSet.md
@@ -0,0 +1,30 @@
+# RuleSet
+
+An ordered set of rules. Rules are evaluated top to bottom, and the first one that matches wins.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**rules** | [**List[Rule]**](Rule.md) | Ordered rule list, evaluated top to bottom; the first match wins. | [optional]
+
+## Example
+
+```python
+from fireblocks.models.rule_set import RuleSet
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of RuleSet from a JSON string
+rule_set_instance = RuleSet.from_json(json)
+# print the JSON string representation of the object
+print(RuleSet.to_json())
+
+# convert the object into a dict
+rule_set_dict = rule_set_instance.to_dict()
+# create an instance of RuleSet from a dict
+rule_set_from_dict = RuleSet.from_dict(rule_set_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/ScreeningInput.md b/docs/ScreeningInput.md
new file mode 100644
index 00000000..09093e80
--- /dev/null
+++ b/docs/ScreeningInput.md
@@ -0,0 +1,31 @@
+# ScreeningInput
+
+What the caller wants screened, and how.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**operation** | [**ScreeningOperationEnum**](ScreeningOperationEnum.md) | |
+**payload** | [**List[ScreeningPayload]**](ScreeningPayload.md) | The screening subjects. Up to 100 per request — the provider's own batch limit for address screening — so a bulk check does not need one call per address. |
+
+## Example
+
+```python
+from fireblocks.models.screening_input import ScreeningInput
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ScreeningInput from a JSON string
+screening_input_instance = ScreeningInput.from_json(json)
+# print the JSON string representation of the object
+print(ScreeningInput.to_json())
+
+# convert the object into a dict
+screening_input_dict = screening_input_instance.to_dict()
+# create an instance of ScreeningInput from a dict
+screening_input_from_dict = ScreeningInput.from_dict(screening_input_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/ScreeningOperationEnum.md b/docs/ScreeningOperationEnum.md
new file mode 100644
index 00000000..08faa0d5
--- /dev/null
+++ b/docs/ScreeningOperationEnum.md
@@ -0,0 +1,15 @@
+# ScreeningOperationEnum
+
+What the caller wants Compliance Orchestrator to do. The target workflow must have a step configured for the operation; the error names the supported set when it does not. - `ADDRESS_SCREENING` — screen an address on its own, before anything exists on-chain. Answers whether the address itself carries risk. - `TRANSACTION_SCREENING` — screen a whole transfer: source and destination, amount and direction, not the destination alone. - `REGISTER_TRANSACTION` — record a confirmed transfer with the provider for ongoing monitoring. Not a gate: it files the transfer so the provider's own rules can raise alerts later, which is what feeds its AML model.
+
+## Enum
+
+* `ADDRESS_SCREENING` (value: `'ADDRESS_SCREENING'`)
+
+* `TRANSACTION_SCREENING` (value: `'TRANSACTION_SCREENING'`)
+
+* `REGISTER_TRANSACTION` (value: `'REGISTER_TRANSACTION'`)
+
+[[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/ScreeningOutcomeEnum.md b/docs/ScreeningOutcomeEnum.md
new file mode 100644
index 00000000..a7cb88b2
--- /dev/null
+++ b/docs/ScreeningOutcomeEnum.md
@@ -0,0 +1,13 @@
+# ScreeningOutcomeEnum
+
+An `ACCEPT`/`REJECT` decision — the workflow's own outcome, a step's outcome, or the result of evaluating a step's outcome rules. `null` on a workflow outcome that is not decided yet.
+
+## Enum
+
+* `ACCEPT` (value: `'ACCEPT'`)
+
+* `REJECT` (value: `'REJECT'`)
+
+[[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/ScreeningPayload.md b/docs/ScreeningPayload.md
new file mode 100644
index 00000000..f618cd8f
--- /dev/null
+++ b/docs/ScreeningPayload.md
@@ -0,0 +1,40 @@
+# ScreeningPayload
+
+The subject of the screening. Which fields are required depends on the operation and on the connectors configured on the workflow's step.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**blockchain** | **str** | The blockchain network of the asset being screened. | [optional]
+**asset** | **str** | The asset identifier being screened. | [optional]
+**asset_amount** | **str** | The amount of the asset involved in the transaction, as a string. | [optional]
+**usd_value** | **str** | The USD value of the transaction amount, as a string. | [optional]
+**customer_ref_id** | **str** | Customer-provided reference identifier for tracking. | [optional]
+**external_id** | **str** | External identifier for the screening (provider-specific). | [optional]
+**address** | **str** | The blockchain address to screen. Used for the `ADDRESS_SCREENING` operation. | [optional]
+**direction** | [**TransferDirectionEnum**](TransferDirectionEnum.md) | | [optional]
+**source_address** | **List[str]** | The source blockchain address(es) of the transaction. | [optional]
+**destination_address** | **List[str]** | The destination blockchain address(es) of the transaction. | [optional]
+**tx_hash** | **str** | The transaction hash on the blockchain. | [optional]
+
+## Example
+
+```python
+from fireblocks.models.screening_payload import ScreeningPayload
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ScreeningPayload from a JSON string
+screening_payload_instance = ScreeningPayload.from_json(json)
+# print the JSON string representation of the object
+print(ScreeningPayload.to_json())
+
+# convert the object into a dict
+screening_payload_dict = screening_payload_instance.to_dict()
+# create an instance of ScreeningPayload from a dict
+screening_payload_from_dict = ScreeningPayload.from_dict(screening_payload_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/StepConfig.md b/docs/StepConfig.md
new file mode 100644
index 00000000..61c9804c
--- /dev/null
+++ b/docs/StepConfig.md
@@ -0,0 +1,33 @@
+# StepConfig
+
+One step in a workflow, backed by a single connector. A connector is the compliance provider integration that does the work — `kyt_trmlabs` is TRM Labs. The step declares which operations that connector handles; a screening naming an operation no step is configured for is refused, and the error reports the supported set.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**step_id** | **str** | Unique within the workflow. |
+**connector_id** | **str** | Identifies which connector this step invokes. |
+**operations** | [**List[StepOperationConfig]**](StepOperationConfig.md) | One entry per operation the step's connector handles. |
+**order** | **int** | Execution order among the workflow's steps, lowest first. |
+
+## Example
+
+```python
+from fireblocks.models.step_config import StepConfig
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of StepConfig from a JSON string
+step_config_instance = StepConfig.from_json(json)
+# print the JSON string representation of the object
+print(StepConfig.to_json())
+
+# convert the object into a dict
+step_config_dict = step_config_instance.to_dict()
+# create an instance of StepConfig from a dict
+step_config_from_dict = StepConfig.from_dict(step_config_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/StepOperationConfig.md b/docs/StepOperationConfig.md
new file mode 100644
index 00000000..d7ecf8f8
--- /dev/null
+++ b/docs/StepOperationConfig.md
@@ -0,0 +1,39 @@
+# StepOperationConfig
+
+Configuration for one operation the step's connector handles. The operation arrives on the screening request; the connector decides how to handle it. Two rule sets govern the step, and both are configured here rather than sent per request, so the same call behaves differently across workflows. Trigger rules decide whether the connector runs at all; outcome rules turn the provider's response into the step's verdict. With neither configured the step runs under the connector's own defaults, which for `kyt_trmlabs` are permissive: the screening completes without consulting the provider. The four parameter lists are the contract for writing those rules: a rule naming a field outside `triggerRuleParameters` or `outcomeEvaluationParameters` is rejected. They are derived from the connector registry rather than stored, so a connector gaining a field is reflected here without a migration.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**operation** | [**ScreeningOperationEnum**](ScreeningOperationEnum.md) | | [optional]
+**required_parameters** | **List[str]** | Resolved server-side on every `GetWorkflow` call from the step's connector definition for this operation. Read-only: ignored on write. | [optional]
+**optional_parameters** | **List[str]** | Like `requiredParameters`, but optional inputs to the operation. | [optional]
+**trigger_rule_parameters** | **List[str]** | Fields a condition in `triggerRuleSetStruct` may reference. | [optional]
+**outcome_evaluation_parameters** | **List[str]** | Provider response fields a condition in `outcomeRuleSetStruct` may reference. | [optional]
+**outcome_meta_parameters** | **List[str]** | Additional provider response fields returned with the result; not usable in `outcomeRuleSetStruct` conditions. | [optional]
+**trigger_rule_set_struct** | [**RuleSet**](RuleSet.md) | | [optional]
+**trigger_rule_set_json** | **str** | The tenant's trigger rules, as a JSON-encoded string. Set for steps whose rules are still defined as a legacy screening policy rather than natively in Compliance Orchestrator, and refreshed on every read. Mutually exclusive with `triggerRuleSetStruct`. | [optional]
+**outcome_rule_set_struct** | [**RuleSet**](RuleSet.md) | | [optional]
+**outcome_rule_set_json** | **str** | The tenant's outcome rules, as a JSON-encoded string. Set for steps whose rules are still defined as a legacy screening policy rather than natively in Compliance Orchestrator, and refreshed on every read. Mutually exclusive with `outcomeRuleSetStruct`. | [optional]
+
+## Example
+
+```python
+from fireblocks.models.step_operation_config import StepOperationConfig
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of StepOperationConfig from a JSON string
+step_operation_config_instance = StepOperationConfig.from_json(json)
+# print the JSON string representation of the object
+print(StepOperationConfig.to_json())
+
+# convert the object into a dict
+step_operation_config_dict = step_operation_config_instance.to_dict()
+# create an instance of StepOperationConfig from a dict
+step_operation_config_from_dict = StepOperationConfig.from_dict(step_operation_config_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/StepResult.md b/docs/StepResult.md
new file mode 100644
index 00000000..0e36b6af
--- /dev/null
+++ b/docs/StepResult.md
@@ -0,0 +1,43 @@
+# StepResult
+
+The result of one workflow step's execution during a screening. Carries the step's outcome next to the two rule evaluations that produced it — which trigger rule decided the connector should run, and which outcome rule read the response — plus the provider's own verdict and risk level. A step that did not screen carries a `bypassReason` instead of a risk level. Only `PASSED_BY_POLICY` means the policy deliberately let it through; every other reason means the check could not be performed, and the step is rejected rather than passed. A bypass is not an approval.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**step_id** | **str** | Identifier of this step within the workflow. |
+**connector_id** | **str** | Identifier of the connector that executed this step. |
+**operation** | [**ScreeningOperationEnum**](ScreeningOperationEnum.md) | |
+**trigger_rule_outcome** | [**TriggerRuleOutcomeEnum**](TriggerRuleOutcomeEnum.md) | |
+**matched_trigger_rule** | [**Rule**](Rule.md) | | [optional]
+**outcome_rule_outcome** | [**ScreeningOutcomeEnum**](ScreeningOutcomeEnum.md) | |
+**matched_outcome_rule** | [**Rule**](Rule.md) | | [optional]
+**outcome** | [**ScreeningOutcomeEnum**](ScreeningOutcomeEnum.md) | |
+**metadata** | **Dict[str, object]** | Connector-specific data, keyed by the connector's configured outcomeMetaParameters for this operation. | [optional]
+**ticket_id** | **str** | The connector-side screening ticket identifier. | [optional]
+**verdict** | [**ConnectorVerdictEnum**](ConnectorVerdictEnum.md) | | [optional]
+**connector_status** | [**ConnectorStatusEnum**](ConnectorStatusEnum.md) | | [optional]
+**bypass_reason** | [**BypassReasonEnum**](BypassReasonEnum.md) | | [optional]
+**risk** | [**RiskLevelEnum**](RiskLevelEnum.md) | | [optional]
+
+## Example
+
+```python
+from fireblocks.models.step_result import StepResult
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of StepResult from a JSON string
+step_result_instance = StepResult.from_json(json)
+# print the JSON string representation of the object
+print(StepResult.to_json())
+
+# convert the object into a dict
+step_result_dict = step_result_instance.to_dict()
+# create an instance of StepResult from a dict
+step_result_from_dict = StepResult.from_dict(step_result_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/TransferDirectionEnum.md b/docs/TransferDirectionEnum.md
new file mode 100644
index 00000000..df106569
--- /dev/null
+++ b/docs/TransferDirectionEnum.md
@@ -0,0 +1,13 @@
+# TransferDirectionEnum
+
+A transfer's direction relative to the workspace. Set for `TRANSACTION_SCREENING` and `REGISTER_TRANSACTION`; it has no meaning for `ADDRESS_SCREENING`, which screens an address on its own.
+
+## Enum
+
+* `INBOUND` (value: `'INBOUND'`)
+
+* `OUTBOUND` (value: `'OUTBOUND'`)
+
+[[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/TriggerRuleOutcomeEnum.md b/docs/TriggerRuleOutcomeEnum.md
new file mode 100644
index 00000000..d734bb79
--- /dev/null
+++ b/docs/TriggerRuleOutcomeEnum.md
@@ -0,0 +1,15 @@
+# TriggerRuleOutcomeEnum
+
+Whether the step's trigger rules caused its connector to run. This is a decision about running, not about risk — `ACCEPT`/`REJECT` belong to the outcome fields. - `EXECUTE` — a rule called for screening, so the connector ran - `PASS` — a rule let the subject through without screening - `FAIL` — the step could not run; see `bypassReason`
+
+## Enum
+
+* `EXECUTE` (value: `'EXECUTE'`)
+
+* `PASS` (value: `'PASS'`)
+
+* `FAIL` (value: `'FAIL'`)
+
+[[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/TriggerScreeningRequest.md b/docs/TriggerScreeningRequest.md
new file mode 100644
index 00000000..ceb8eae8
--- /dev/null
+++ b/docs/TriggerScreeningRequest.md
@@ -0,0 +1,31 @@
+# TriggerScreeningRequest
+
+Request to trigger a screening against an active workflow.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**workflow_id** | **str** | The workflow to screen against. Must be in `ACTIVE` status. |
+**input** | [**ScreeningInput**](ScreeningInput.md) | |
+
+## Example
+
+```python
+from fireblocks.models.trigger_screening_request import TriggerScreeningRequest
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of TriggerScreeningRequest from a JSON string
+trigger_screening_request_instance = TriggerScreeningRequest.from_json(json)
+# print the JSON string representation of the object
+print(TriggerScreeningRequest.to_json())
+
+# convert the object into a dict
+trigger_screening_request_dict = trigger_screening_request_instance.to_dict()
+# create an instance of TriggerScreeningRequest from a dict
+trigger_screening_request_from_dict = TriggerScreeningRequest.from_dict(trigger_screening_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/TriggerScreeningResponse.md b/docs/TriggerScreeningResponse.md
new file mode 100644
index 00000000..bea69736
--- /dev/null
+++ b/docs/TriggerScreeningResponse.md
@@ -0,0 +1,31 @@
+# TriggerScreeningResponse
+
+Acknowledgement that a screening was accepted and is now running.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**screening_id** | **str** | Identifier of the screening that was created. Poll `GET /v1/compliance/orchestrator/screenings/{screeningId}` with it for the verdict. |
+**screening_status** | [**ComplianceScreeningStatusEnum**](ComplianceScreeningStatusEnum.md) | |
+
+## Example
+
+```python
+from fireblocks.models.trigger_screening_response import TriggerScreeningResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of TriggerScreeningResponse from a JSON string
+trigger_screening_response_instance = TriggerScreeningResponse.from_json(json)
+# print the JSON string representation of the object
+print(TriggerScreeningResponse.to_json())
+
+# convert the object into a dict
+trigger_screening_response_dict = trigger_screening_response_instance.to_dict()
+# create an instance of TriggerScreeningResponse from a dict
+trigger_screening_response_from_dict = TriggerScreeningResponse.from_dict(trigger_screening_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/UpdateWebhookOauthRequest.md b/docs/UpdateWebhookOauthRequest.md
index 12f3c065..22e0e2dd 100644
--- a/docs/UpdateWebhookOauthRequest.md
+++ b/docs/UpdateWebhookOauthRequest.md
@@ -1,6 +1,6 @@
# UpdateWebhookOauthRequest
-A partial update. Every field is optional and an omitted field is left as it is, so `{ \"clientSecret\": \"new-secret\" }` rotates the secret and changes nothing else. A rotation applies to every webhook referencing these credentials. The three custom maps merge: a key with a value is upserted, a key with `null` is deleted, a key you leave out is untouched. Because `null` inside a map means delete, none of the three is nullable as a whole — `customJwtClaims: null` and friends are rejected with a `400`. Clear a map by naming each key with a `null` value. `mtlsClientSignedCert` is a scalar, so `null` there does remove it.
+A partial update. Every field is optional and an omitted field is left as it is, so `{ \"clientSecret\": \"new-secret\" }` rotates the secret and changes nothing else. A rotation applies to every webhook referencing these credentials. The three custom maps merge. A key with a value is upserted, a key with `null` is deleted, a key you leave out is untouched, and the whole field set to `null` clears the map. There is no ambiguity between the two uses of `null` — one names an entry, the other names the field. `mtlsClientSignedCert` is a scalar, so `null` there removes it.
## Properties
@@ -13,7 +13,7 @@ Name | Type | Description | Notes
**auth_method** | **str** | `client_secret_basic`, `client_secret_post` or `client_secret_jwt`. Omit to leave it unchanged — it does not revert to the default. | [optional]
**custom_jwt_claims** | **Dict[str, object]** | A delta applied to the JWT assertion claims. A claim with a value is added or replaced, a claim with `null` is deleted, and a claim you leave out is untouched. So `{ \"aud\": \"https://auth.example.com\", \"resource\": null }` sets `aud`, drops `resource`, and changes nothing else. Send `customJwtClaims: null` to clear every claim in one call. That does not collide with a `null` value on a name: one names the claim to delete, the other names the whole field. Same rules as on create: any JSON type except `null`, `iss`/`sub`/`jti`/`iat`/`exp` reserved, names case-sensitive, resulting set under 16 KB, values write-only. | [optional]
**custom_body_params** | **Dict[str, Optional[str]]** | A delta applied to the token request body parameters. A parameter with a value is added or replaced, a parameter with `null` is deleted, and one you leave out is untouched. So `{ \"scope\": \"payments.read\", \"audience\": null }` sets `scope`, drops `audience`, and changes nothing else. Send `customBodyParams: null` to clear every parameter in one call. That does not collide with a `null` value on a name: one names the parameter to delete, the other names the whole field. Same rules as on create: string values only, `grant_type`/`client_id`/`client_secret`/ `client_assertion`/`client_assertion_type` reserved, names case-sensitive, resulting set under 16 KB, values write-only. | [optional]
-**custom_headers** | **Dict[str, Optional[str]]** | A delta applied to the token request headers — not the webhook delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. So `{ \"X-Api-Key\": \"new-key\", \"X-Tenant\": null }` rotates `X-Api-Key`, drops `X-Tenant`, and changes nothing else. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another, and names are stored and returned lowercased. Same rules as on create: string values only, `Content-Type`/`Content-Length`/`Host` reserved, resulting set under 16 KB, values write-only. | [optional]
+**custom_headers** | **Dict[str, Optional[str]]** | A delta applied to the token request headers — not the webhook delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. So `{ \"X-Api-Key\": \"new-key\", \"X-Tenant\": null }` rotates `X-Api-Key`, drops `X-Tenant`, and changes nothing else. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another, and names are stored and returned lowercased. Same rules as on create: string values only, `Content-Type`, `Content-Length` and `Host` reserved, `Authorization` only with `client_secret_post` or `client_secret_jwt`, resulting set under 16 KB, values write-only. | [optional]
**mtls_client_signed_cert** | **str** | PEM-encoded client certificate for mTLS. Must be a valid X.509 certificate inside its validity window. Omit to leave it unchanged, or send `null` to remove it. | [optional]
## Example
diff --git a/docs/UpdateWebhookRequest.md b/docs/UpdateWebhookRequest.md
index 3477f4f6..dcd0e7ad 100644
--- a/docs/UpdateWebhookRequest.md
+++ b/docs/UpdateWebhookRequest.md
@@ -10,8 +10,8 @@ Name | Type | Description | Notes
**events** | [**List[WebhookEvent]**](WebhookEvent.md) | The events that the webhook will be subscribed to | [optional]
**enabled** | **bool** | The status of the webhook | [optional]
**mtls** | [**WebhookMtls**](WebhookMtls.md) | | [optional]
-**webhook_oauth_id** | **str** | The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook. | [optional]
-**custom_headers** | **Dict[str, object]** | A delta applied to the delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. A value replaces what is stored under that name rather than adding to it, so an array is the complete new set of lines for that header. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another. Same rules as on create: string or non-empty array, `Cookie` string-only, 10 lines total and under 16 KB in the resulting set, the same reserved names, and values write-only. Entries set to `null` do not count towards the limit. | [optional]
+**webhook_oauth_id** | **str** | The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook. Cannot be combined with an `authorization` custom header on the same webhook; a request that would leave both set is rejected. | [optional]
+**custom_headers** | **Dict[str, object]** | A delta applied to the delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. A value replaces what is stored under that name rather than adding to it, so an array is the complete new set of lines for that header. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another. Same rules as on create: string or non-empty array, `Cookie` and `Authorization` string-only, 10 headers and under 16 KB in the resulting set, the same reserved names, and values write-only. Entries set to `null` do not count towards the limit. `Authorization` cannot be combined with `webhookOauthId`, though one request may add it and detach the credentials together. | [optional]
## Example
diff --git a/docs/UpdateWorkflowStatusRequest.md b/docs/UpdateWorkflowStatusRequest.md
new file mode 100644
index 00000000..7847fffd
--- /dev/null
+++ b/docs/UpdateWorkflowStatusRequest.md
@@ -0,0 +1,30 @@
+# UpdateWorkflowStatusRequest
+
+Request to change a workflow's status.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**status** | [**WorkflowStatusEnum**](WorkflowStatusEnum.md) | |
+
+## Example
+
+```python
+from fireblocks.models.update_workflow_status_request import UpdateWorkflowStatusRequest
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of UpdateWorkflowStatusRequest from a JSON string
+update_workflow_status_request_instance = UpdateWorkflowStatusRequest.from_json(json)
+# print the JSON string representation of the object
+print(UpdateWorkflowStatusRequest.to_json())
+
+# convert the object into a dict
+update_workflow_status_request_dict = update_workflow_status_request_instance.to_dict()
+# create an instance of UpdateWorkflowStatusRequest from a dict
+update_workflow_status_request_from_dict = UpdateWorkflowStatusRequest.from_dict(update_workflow_status_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/UpdateWorkflowStatusResponse.md b/docs/UpdateWorkflowStatusResponse.md
new file mode 100644
index 00000000..b1379f2c
--- /dev/null
+++ b/docs/UpdateWorkflowStatusResponse.md
@@ -0,0 +1,31 @@
+# UpdateWorkflowStatusResponse
+
+The workflow's status after the update.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**workflow_id** | **str** | Unique identifier of the workflow. |
+**status** | [**WorkflowStatusEnum**](WorkflowStatusEnum.md) | |
+
+## Example
+
+```python
+from fireblocks.models.update_workflow_status_response import UpdateWorkflowStatusResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of UpdateWorkflowStatusResponse from a JSON string
+update_workflow_status_response_instance = UpdateWorkflowStatusResponse.from_json(json)
+# print the JSON string representation of the object
+print(UpdateWorkflowStatusResponse.to_json())
+
+# convert the object into a dict
+update_workflow_status_response_dict = update_workflow_status_response_instance.to_dict()
+# create an instance of UpdateWorkflowStatusResponse from a dict
+update_workflow_status_response_from_dict = UpdateWorkflowStatusResponse.from_dict(update_workflow_status_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/WebhookMtlsCsrResponse.md b/docs/WebhookMtlsCsrResponse.md
index 9ed135b4..df160a05 100644
--- a/docs/WebhookMtlsCsrResponse.md
+++ b/docs/WebhookMtlsCsrResponse.md
@@ -7,6 +7,7 @@ mTLS Certificate Signing Request response
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**csr** | **str** | The Fireblocks PEM-encoded Certificate Signing Request (CSR). |
+**key_algorithm** | [**WebhookMtlsKeyAlgorithm**](WebhookMtlsKeyAlgorithm.md) | |
## Example
diff --git a/docs/WebhookMtlsKeyAlgorithm.md b/docs/WebhookMtlsKeyAlgorithm.md
new file mode 100644
index 00000000..09bb373f
--- /dev/null
+++ b/docs/WebhookMtlsKeyAlgorithm.md
@@ -0,0 +1,13 @@
+# WebhookMtlsKeyAlgorithm
+
+Algorithm of the Fireblocks-held mTLS private key. A workspace may hold one key of each type, so a CSR is always returned for the type requested, and the type is echoed back on the response. ECDSA keys are smaller and quicker to issue, but the certificate authority signing the request has to accept an EC subject key, which some do not by default.
+
+## Enum
+
+* `RSA` (value: `'RSA'`)
+
+* `ECDSA` (value: `'ECDSA'`)
+
+[[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/WebhookOauthCredentials.md b/docs/WebhookOauthCredentials.md
index ed080254..199086c3 100644
--- a/docs/WebhookOauthCredentials.md
+++ b/docs/WebhookOauthCredentials.md
@@ -1,6 +1,6 @@
# WebhookOauthCredentials
-A stored OAuth 2.0 client credential set, referenced by webhooks through their `webhookOauthId`. When a webhook references one, the dispatcher fetches a bearer token from `url` before each delivery and attaches it as `Authorization: Bearer {token}`. Secret material is never returned: `clientSecret` is absent from this schema entirely, and the `customJwtClaims`, `customBodyParams` and `customHeaders` fields are reduced to their names, without the configured values.
+A stored OAuth 2.0 client credential set, referenced by webhooks through their `webhookOauthId`. Deliveries for a webhook that references one carry `Authorization: Bearer {token}`, using a token fetched from `url` and cached until it expires, so your authorization server sees far fewer token requests than deliveries. Secret material is never returned: `clientSecret` is absent from this schema entirely, and the `customJwtClaims`, `customBodyParams` and `customHeaders` fields are reduced to their names, without the configured values.
## Properties
diff --git a/docs/WebhooksV2Api.md b/docs/WebhooksV2Api.md
index 0adeacc0..c5883305 100644
--- a/docs/WebhooksV2Api.md
+++ b/docs/WebhooksV2Api.md
@@ -9,7 +9,7 @@ Method | HTTP request | Description
[**delete_webhook**](WebhooksV2Api.md#delete_webhook) | **DELETE** /webhooks/{webhookId} | Delete webhook
[**delete_webhook_oauth**](WebhooksV2Api.md#delete_webhook_oauth) | **DELETE** /webhooks_settings/oauth/{webhookOauthId} | Delete OAuth credentials
[**get_metrics**](WebhooksV2Api.md#get_metrics) | **GET** /webhooks/{webhookId}/metrics/{metricName} | Get webhook metrics
-[**get_mtls_csr**](WebhooksV2Api.md#get_mtls_csr) | **GET** /webhooks/mtls/csr | Get mTLS CSR
+[**get_mtls_csr**](WebhooksV2Api.md#get_mtls_csr) | **GET** /webhooks_settings/mtls_csr | Get mTLS CSR
[**get_notification**](WebhooksV2Api.md#get_notification) | **GET** /webhooks/{webhookId}/notifications/{notificationId} | Get notification by id
[**get_notification_attempts**](WebhooksV2Api.md#get_notification_attempts) | **GET** /webhooks/{webhookId}/notifications/{notificationId}/attempts | Get notification attempts
[**get_notifications**](WebhooksV2Api.md#get_notifications) | **GET** /webhooks/{webhookId}/notifications | Get all notifications by webhook id
@@ -426,11 +426,15 @@ 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_mtls_csr**
-> WebhookMtlsCsrResponse get_mtls_csr()
+> WebhookMtlsCsrResponse get_mtls_csr(key_algorithm=key_algorithm)
Get mTLS CSR
-Returns the Fireblocks Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate.
+Returns the Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate.
+
+The private key the CSR is built from is held by Fireblocks and is specific to this workspace. It is created on the first request for a given key type, and the same CSR is returned on subsequent requests for that type.
+
+Pass `keyAlgorithm` to choose RSA or ECDSA. A workspace may hold one key of each: the CSR returned is always the one for the type requested, so a certificate signed against it matches the key used at delivery time.
### Example
@@ -458,10 +462,11 @@ configuration = ClientConfiguration(
# Enter a context with an instance of the API client
with Fireblocks(configuration) as fireblocks:
+ key_algorithm = RSA # str | Algorithm of the private key the CSR is generated for. ECDSA keys are smaller and quicker to issue, but the certificate authority signing the request has to accept an EC subject key, which some do not by default. (optional) (default to RSA)
try:
# Get mTLS CSR
- api_response = fireblocks.webhooks_v2.get_mtls_csr().result()
+ api_response = fireblocks.webhooks_v2.get_mtls_csr(key_algorithm=key_algorithm).result()
print("The response of WebhooksV2Api->get_mtls_csr:\n")
pprint(api_response)
except Exception as e:
@@ -472,7 +477,10 @@ with Fireblocks(configuration) as fireblocks:
### Parameters
-This endpoint does not need any parameter.
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **key_algorithm** | **str**| Algorithm of the private key the CSR is generated for. ECDSA keys are smaller and quicker to issue, but the certificate authority signing the request has to accept an EC subject key, which some do not by default. | [optional] [default to RSA]
### Return type
@@ -1613,7 +1621,7 @@ Update OAuth credentials
Updates only the fields present in the request; anything omitted is left as it is. Sending `clientSecret` on its own rotates the secret for every webhook using these credentials.
-`customJwtClaims`, `customBodyParams` and `customHeaders` are all merged key by key rather than replaced, the same way a webhook's own `customHeaders` behaves: a key sent with a value is added or overwritten, a key sent with a `null` value is deleted, and a key you omit is left alone. Since a `null` inside a map is the delete mechanism, none of the three accepts `null` for the whole field — `customJwtClaims: null`, `customBodyParams: null` or `customHeaders: null` is rejected with a `400` rather than ignored. Clear a map by listing each of its keys with a `null` value. Because `null` is spent on deletion, a claim cannot be set to JSON `null` either, on this endpoint or on create. `mtlsClientSignedCert` is a scalar rather than a map, so `null` there does remove it.
+`customJwtClaims`, `customBodyParams` and `customHeaders` are all merged key by key rather than replaced, the same way a webhook's own `customHeaders` behaves: a key sent with a value is added or overwritten, a key sent with a `null` value is deleted, and a key you omit is left alone. Setting one of the three to `null` as a whole clears that map, which is the quick way to empty it without naming every key. There is no ambiguity between the two uses of `null` — one names an entry to delete, the other names the field. A claim cannot be set to JSON `null`, though, on this endpoint or on create, because `null` is spent on deletion. `mtlsClientSignedCert` is a scalar rather than a map, so `null` there does remove it.
**Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
diff --git a/docs/WorkflowStatusEnum.md b/docs/WorkflowStatusEnum.md
new file mode 100644
index 00000000..22edac79
--- /dev/null
+++ b/docs/WorkflowStatusEnum.md
@@ -0,0 +1,13 @@
+# WorkflowStatusEnum
+
+A workflow's status, which controls whether it can be screened against. - `DRAFT` — the editing state. Rules can be changed while nothing is screening against them, so a screening never runs against a half-finished configuration. - `ACTIVE` — `POST /v1/compliance/orchestrator/screenings` accepts screenings against this workflow.
+
+## Enum
+
+* `ACTIVE` (value: `'ACTIVE'`)
+
+* `DRAFT` (value: `'DRAFT'`)
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/fireblocks/__init__.py b/fireblocks/__init__.py
index 18d7520b..2776ce0a 100644
--- a/fireblocks/__init__.py
+++ b/fireblocks/__init__.py
@@ -14,7 +14,7 @@
Do not edit the class manually.
""" # noqa: E501
-__version__ = "31.0.0"
+__version__ = "0.0.0"
# import apis into sdk package
from fireblocks.api.api_user_api import ApiUserApi
@@ -23,6 +23,9 @@
from fireblocks.api.blockchain_link_beta_api import BlockchainLinkBetaApi
from fireblocks.api.blockchains_assets_api import BlockchainsAssetsApi
from fireblocks.api.compliance_api import ComplianceApi
+from fireblocks.api.compliance_orchestrator_beta_api import (
+ ComplianceOrchestratorBetaApi,
+)
from fireblocks.api.compliance_screening_configuration_api import (
ComplianceScreeningConfigurationApi,
)
@@ -224,8 +227,11 @@
from fireblocks.models.amount_range_min_max2 import AmountRangeMinMax2
from fireblocks.models.api_key import ApiKey
from fireblocks.models.api_keys_paginated_response import ApiKeysPaginatedResponse
+from fireblocks.models.approval_api_key import ApprovalApiKey
+from fireblocks.models.approval_api_public_key import ApprovalApiPublicKey
from fireblocks.models.approval_request import ApprovalRequest
from fireblocks.models.approval_request_item import ApprovalRequestItem
+from fireblocks.models.approve_approval_request import ApproveApprovalRequest
from fireblocks.models.approvers_config import ApproversConfig
from fireblocks.models.approvers_config_approval_groups_inner import (
ApproversConfigApprovalGroupsInner,
@@ -281,7 +287,9 @@
from fireblocks.models.attach_detach_utxo_labels_response import (
AttachDetachUtxoLabelsResponse,
)
+from fireblocks.models.audit_event_type_enum import AuditEventTypeEnum
from fireblocks.models.audit_log_data import AuditLogData
+from fireblocks.models.audit_log_entry import AuditLogEntry
from fireblocks.models.auditor_data import AuditorData
from fireblocks.models.authorization_groups import AuthorizationGroups
from fireblocks.models.authorization_info import AuthorizationInfo
@@ -328,6 +336,7 @@
from fireblocks.models.byork_verdict_response_status_enum import (
ByorkVerdictResponseStatusEnum,
)
+from fireblocks.models.bypass_reason_enum import BypassReasonEnum
from fireblocks.models.call_accepted import CallAccepted
from fireblocks.models.callback_handler import CallbackHandler
from fireblocks.models.callback_handler_request import CallbackHandlerRequest
@@ -392,6 +401,9 @@
from fireblocks.models.compliance_screening_result_full_payload import (
ComplianceScreeningResultFullPayload,
)
+from fireblocks.models.compliance_screening_status_enum import (
+ ComplianceScreeningStatusEnum,
+)
from fireblocks.models.config_change_request_status import ConfigChangeRequestStatus
from fireblocks.models.config_conversion_operation_snapshot import (
ConfigConversionOperationSnapshot,
@@ -438,6 +450,8 @@
from fireblocks.models.connected_single_account_response import (
ConnectedSingleAccountResponse,
)
+from fireblocks.models.connector_status_enum import ConnectorStatusEnum
+from fireblocks.models.connector_verdict_enum import ConnectorVerdictEnum
from fireblocks.models.console_user import ConsoleUser
from fireblocks.models.contact import Contact
from fireblocks.models.contact_approval_request import ContactApprovalRequest
@@ -882,6 +896,7 @@
)
from fireblocks.models.get_positions_response import GetPositionsResponse
from fireblocks.models.get_providers_response import GetProvidersResponse
+from fireblocks.models.get_screening_result_response import GetScreeningResultResponse
from fireblocks.models.get_signing_key_response_dto import GetSigningKeyResponseDto
from fireblocks.models.get_test_wallet_address_response import (
GetTestWalletAddressResponse,
@@ -893,6 +908,7 @@
from fireblocks.models.get_whitelist_ip_addresses_response import (
GetWhitelistIpAddressesResponse,
)
+from fireblocks.models.get_workflow_response import GetWorkflowResponse
from fireblocks.models.get_workspace_status_response import GetWorkspaceStatusResponse
from fireblocks.models.gleif_data import GleifData
from fireblocks.models.gleif_other_legal_entity_name import GleifOtherLegalEntityName
@@ -989,6 +1005,9 @@
from fireblocks.models.legal_entity_registration import LegalEntityRegistration
from fireblocks.models.lei_status import LeiStatus
from fireblocks.models.linked_tokens_count import LinkedTokensCount
+from fireblocks.models.list_approval_api_keys_response import (
+ ListApprovalApiKeysResponse,
+)
from fireblocks.models.list_approvals_response import ListApprovalsResponse
from fireblocks.models.list_assets_response import ListAssetsResponse
from fireblocks.models.list_blockchains_response import ListBlockchainsResponse
@@ -1249,6 +1268,12 @@
from fireblocks.models.redeem_funds_to_linked_dda_response import (
RedeemFundsToLinkedDDAResponse,
)
+from fireblocks.models.register_approval_api_key_request import (
+ RegisterApprovalApiKeyRequest,
+)
+from fireblocks.models.register_approval_api_key_response import (
+ RegisterApprovalApiKeyResponse,
+)
from fireblocks.models.register_legal_entity_request import RegisterLegalEntityRequest
from fireblocks.models.register_new_asset_request import RegisterNewAssetRequest
from fireblocks.models.reissue_multichain_token_request import (
@@ -1317,9 +1342,15 @@
from fireblocks.models.retry_requote_type_enum import RetryRequoteTypeEnum
from fireblocks.models.reward_info import RewardInfo
from fireblocks.models.rewards_info import RewardsInfo
+from fireblocks.models.risk_level_enum import RiskLevelEnum
from fireblocks.models.role_details import RoleDetails
from fireblocks.models.role_details2 import RoleDetails2
from fireblocks.models.role_grantee import RoleGrantee
+from fireblocks.models.rule import Rule
+from fireblocks.models.rule_action_enum import RuleActionEnum
+from fireblocks.models.rule_condition import RuleCondition
+from fireblocks.models.rule_condition_operator_enum import RuleConditionOperatorEnum
+from fireblocks.models.rule_set import RuleSet
from fireblocks.models.ruleset_quorum import RulesetQuorum
from fireblocks.models.sepa_address import SEPAAddress
from fireblocks.models.sepa_destination import SEPADestination
@@ -1339,13 +1370,17 @@
from fireblocks.models.screening_configurations_request import (
ScreeningConfigurationsRequest,
)
+from fireblocks.models.screening_input import ScreeningInput
from fireblocks.models.screening_metadata_config import ScreeningMetadataConfig
+from fireblocks.models.screening_operation_enum import ScreeningOperationEnum
from fireblocks.models.screening_operation_execution import ScreeningOperationExecution
from fireblocks.models.screening_operation_execution_output import (
ScreeningOperationExecutionOutput,
)
from fireblocks.models.screening_operation_failure import ScreeningOperationFailure
from fireblocks.models.screening_operation_type import ScreeningOperationType
+from fireblocks.models.screening_outcome_enum import ScreeningOutcomeEnum
+from fireblocks.models.screening_payload import ScreeningPayload
from fireblocks.models.screening_policy_amount import ScreeningPolicyAmount
from fireblocks.models.screening_policy_amount_range import ScreeningPolicyAmountRange
from fireblocks.models.screening_policy_currency import ScreeningPolicyCurrency
@@ -1525,6 +1560,9 @@
from fireblocks.models.stellar_ripple_create_params_dto import (
StellarRippleCreateParamsDto,
)
+from fireblocks.models.step_config import StepConfig
+from fireblocks.models.step_operation_config import StepOperationConfig
+from fireblocks.models.step_result import StepResult
from fireblocks.models.submit_order_requirement_request import (
SubmitOrderRequirementRequest,
)
@@ -1758,6 +1796,7 @@
)
from fireblocks.models.transaction_tag import TransactionTag
from fireblocks.models.transfer_config_operation import TransferConfigOperation
+from fireblocks.models.transfer_direction_enum import TransferDirectionEnum
from fireblocks.models.transfer_operation_config_params import (
TransferOperationConfigParams,
)
@@ -1891,6 +1930,9 @@
)
from fireblocks.models.travel_rule_vasp_for_vault import TravelRuleVaspForVault
from fireblocks.models.travel_rule_verdict_enum import TravelRuleVerdictEnum
+from fireblocks.models.trigger_rule_outcome_enum import TriggerRuleOutcomeEnum
+from fireblocks.models.trigger_screening_request import TriggerScreeningRequest
+from fireblocks.models.trigger_screening_response import TriggerScreeningResponse
from fireblocks.models.trigger_validation_flow_response import (
TriggerValidationFlowResponse,
)
@@ -1949,6 +1991,10 @@
from fireblocks.models.update_vault_account_request import UpdateVaultAccountRequest
from fireblocks.models.update_webhook_oauth_request import UpdateWebhookOauthRequest
from fireblocks.models.update_webhook_request import UpdateWebhookRequest
+from fireblocks.models.update_workflow_status_request import UpdateWorkflowStatusRequest
+from fireblocks.models.update_workflow_status_response import (
+ UpdateWorkflowStatusResponse,
+)
from fireblocks.models.us_wire_payment_info import UsWirePaymentInfo
from fireblocks.models.usdc_gateway_wallet_asset import UsdcGatewayWalletAsset
from fireblocks.models.usdc_gateway_wallet_info_response import (
@@ -2011,12 +2057,14 @@
from fireblocks.models.webhook_metric import WebhookMetric
from fireblocks.models.webhook_mtls import WebhookMtls
from fireblocks.models.webhook_mtls_csr_response import WebhookMtlsCsrResponse
+from fireblocks.models.webhook_mtls_key_algorithm import WebhookMtlsKeyAlgorithm
from fireblocks.models.webhook_oauth_credentials import WebhookOauthCredentials
from fireblocks.models.webhook_paginated_response import WebhookPaginatedResponse
from fireblocks.models.withdraw_request import WithdrawRequest
from fireblocks.models.workflow_config_status import WorkflowConfigStatus
from fireblocks.models.workflow_configuration_id import WorkflowConfigurationId
from fireblocks.models.workflow_execution_operation import WorkflowExecutionOperation
+from fireblocks.models.workflow_status_enum import WorkflowStatusEnum
from fireblocks.models.workspace import Workspace
from fireblocks.models.write_abi_function import WriteAbiFunction
from fireblocks.models.write_call_function_dto import WriteCallFunctionDto
diff --git a/fireblocks/api/__init__.py b/fireblocks/api/__init__.py
index bcb11c4e..d568d45f 100644
--- a/fireblocks/api/__init__.py
+++ b/fireblocks/api/__init__.py
@@ -7,6 +7,7 @@
from fireblocks.api.blockchain_link_beta_api import BlockchainLinkBetaApi
from fireblocks.api.blockchains_assets_api import BlockchainsAssetsApi
from fireblocks.api.compliance_api import ComplianceApi
+from fireblocks.api.compliance_orchestrator_beta_api import ComplianceOrchestratorBetaApi
from fireblocks.api.compliance_screening_configuration_api import ComplianceScreeningConfigurationApi
from fireblocks.api.connected_accounts_beta_api import ConnectedAccountsBetaApi
from fireblocks.api.console_user_api import ConsoleUserApi
diff --git a/fireblocks/api/approvals_beta_api.py b/fireblocks/api/approvals_beta_api.py
index 4f462974..db761212 100644
--- a/fireblocks/api/approvals_beta_api.py
+++ b/fireblocks/api/approvals_beta_api.py
@@ -22,7 +22,11 @@
from typing import Optional
from typing_extensions import Annotated
from fireblocks.models.approval_request_item import ApprovalRequestItem
+from fireblocks.models.approve_approval_request import ApproveApprovalRequest
+from fireblocks.models.list_approval_api_keys_response import ListApprovalApiKeysResponse
from fireblocks.models.list_approvals_response import ListApprovalsResponse
+from fireblocks.models.register_approval_api_key_request import RegisterApprovalApiKeyRequest
+from fireblocks.models.register_approval_api_key_response import RegisterApprovalApiKeyResponse
from fireblocks.api_client import ApiClient, RequestSerialized
from fireblocks.api_response import ApiResponse
@@ -43,6 +47,462 @@ def __init__(self, api_client=None) -> None:
self.api_client = api_client
+ @validate_call
+ def approve_approval(
+ self,
+ request_id: Annotated[StrictStr, Field(description="The approval request ID.")],
+ approve_approval_request: ApproveApprovalRequest,
+ 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]]:
+ """Approve an approval request
+
+ Approve a pending approval request as the authenticated API user. The caller signs the request's signable data with the private key of a registered approval API key and submits the base64url-encoded signature, optionally with the key ID. The server verifies the signature against the registered public key — using the given key ID, or matching against all of the user's registered keys when the key ID is omitted — and advances the approval quorum. Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin.
+
+ :param request_id: The approval request ID. (required)
+ :type request_id: str
+ :param approve_approval_request: (required)
+ :type approve_approval_request: ApproveApprovalRequest
+ :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="approve_approval", param_name="request_id", param_value=request_id)
+
+ _param = self._approve_approval_serialize(
+ request_id=request_id,
+ approve_approval_request=approve_approval_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]] = {
+ '204': None,
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _approve_approval_serialize(
+ self,
+ request_id,
+ approve_approval_request,
+ idempotency_key,
+ _request_auth,
+ _content_type,
+ _headers,
+ _host_index,
+ ) -> RequestSerialized:
+
+ _host = None
+
+ _collection_formats: Dict[str, str] = {
+ }
+
+ _path_params: Dict[str, str] = {}
+ _query_params: List[Tuple[str, str]] = []
+ _header_params: Dict[str, Optional[str]] = _headers or {}
+ _form_params: List[Tuple[str, str]] = []
+ _files: Dict[
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
+ ] = {}
+ _body_params: Optional[bytes] = None
+
+ # process the path parameters
+ if request_id is not None:
+ _path_params['requestId'] = request_id
+ # process the query parameters
+ # process the header parameters
+ if idempotency_key is not None:
+ _header_params['Idempotency-Key'] = idempotency_key
+ # process the form parameters
+ # process the body parameter
+ if approve_approval_request is not None:
+ _body_params = approve_approval_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='/approvals/{requestId}/approve',
+ 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_approval_key(
+ self,
+ user_id: Annotated[StrictStr, Field(description="The ID of the API user to register the approval key for.")],
+ register_approval_api_key_request: RegisterApprovalApiKeyRequest,
+ 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[RegisterApprovalApiKeyResponse]]:
+ """Register an approval key
+
+ Register an approval public key for an API user, used to sign approval requests. Up to 2 active keys are supported per API user. Returns the server-generated key ID used for deletion. The `userId` must be the authenticated API user's own ID. Registering a key for another user is not supported and is rejected. Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin.
+
+ :param user_id: The ID of the API user to register the approval key for. (required)
+ :type user_id: str
+ :param register_approval_api_key_request: (required)
+ :type register_approval_api_key_request: RegisterApprovalApiKeyRequest
+ :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="create_approval_key", param_name="user_id", param_value=user_id)
+
+ _param = self._create_approval_key_serialize(
+ user_id=user_id,
+ register_approval_api_key_request=register_approval_api_key_request,
+ idempotency_key=idempotency_key,
+ _request_auth=_request_auth,
+ _content_type=_content_type,
+ _headers=_headers,
+ _host_index=_host_index
+ )
+
+ _response_types_map: Dict[str, Optional[str]] = {
+ '200': "RegisterApprovalApiKeyResponse",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _create_approval_key_serialize(
+ self,
+ user_id,
+ register_approval_api_key_request,
+ idempotency_key,
+ _request_auth,
+ _content_type,
+ _headers,
+ _host_index,
+ ) -> RequestSerialized:
+
+ _host = None
+
+ _collection_formats: Dict[str, str] = {
+ }
+
+ _path_params: Dict[str, str] = {}
+ _query_params: List[Tuple[str, str]] = []
+ _header_params: Dict[str, Optional[str]] = _headers or {}
+ _form_params: List[Tuple[str, str]] = []
+ _files: Dict[
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
+ ] = {}
+ _body_params: Optional[bytes] = None
+
+ # process the path parameters
+ if 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
+ if register_approval_api_key_request is not None:
+ _body_params = register_approval_api_key_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='/management/api_users/{userId}/approval_keys',
+ 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 delete_approval_key(
+ self,
+ user_id: Annotated[StrictStr, Field(description="The ID of the API user whose approval key to delete.")],
+ key_id: Annotated[StrictStr, Field(description="The ID of the approval key to delete.")],
+ 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]]:
+ """Delete an approval key
+
+ Delete (revoke) an approval public key for the specified API user. Revoking the last key disables the API user's ability to sign approvals. Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin.
+
+ :param user_id: The ID of the API user whose approval key to delete. (required)
+ :type user_id: str
+ :param key_id: The ID of the approval key to delete. (required)
+ :type key_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="delete_approval_key", param_name="user_id", param_value=user_id)
+ validate_not_empty_string(function_name="delete_approval_key", param_name="key_id", param_value=key_id)
+
+ _param = self._delete_approval_key_serialize(
+ user_id=user_id,
+ key_id=key_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]] = {
+ '204': None,
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _delete_approval_key_serialize(
+ self,
+ user_id,
+ key_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
+ if key_id is not None:
+ _path_params['keyId'] = key_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='DELETE',
+ resource_path='/management/api_users/{userId}/approval_keys/{keyId}',
+ 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_approval_by_id(
self,
@@ -190,6 +650,153 @@ def _get_approval_by_id_serialize(
+ @validate_call
+ def get_approval_keys(
+ self,
+ user_id: Annotated[StrictStr, Field(description="The ID of the API user whose approval keys to list.")],
+ page_size: Annotated[Optional[Annotated[int, Field(le=15, strict=True, ge=1)]], Field(description="Number of results per page. Maximum 15. Defaults to 10.")] = None,
+ page_cursor: Annotated[Optional[StrictStr], Field(description="Cursor returned from the previous response (the `next` field) to fetch the next page.")] = 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[ListApprovalApiKeysResponse]]:
+ """List approval keys
+
+ List the approval public keys registered for the specified API user. Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin, Security Auditor.
+
+ :param user_id: The ID of the API user whose approval keys to list. (required)
+ :type user_id: str
+ :param page_size: Number of results per page. Maximum 15. Defaults to 10.
+ :type page_size: int
+ :param page_cursor: Cursor returned from the previous response (the `next` field) to fetch the next page.
+ :type page_cursor: 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_approval_keys", param_name="user_id", param_value=user_id)
+
+ _param = self._get_approval_keys_serialize(
+ user_id=user_id,
+ page_size=page_size,
+ page_cursor=page_cursor,
+ _request_auth=_request_auth,
+ _content_type=_content_type,
+ _headers=_headers,
+ _host_index=_host_index
+ )
+
+ _response_types_map: Dict[str, Optional[str]] = {
+ '200': "ListApprovalApiKeysResponse",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _get_approval_keys_serialize(
+ self,
+ user_id,
+ page_size,
+ page_cursor,
+ _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
+ if page_size is not None:
+
+ _query_params.append(('pageSize', page_size))
+
+ if page_cursor is not None:
+
+ _query_params.append(('pageCursor', page_cursor))
+
+ # 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='/management/api_users/{userId}/approval_keys',
+ 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_approvals(
self,
diff --git a/fireblocks/api/compliance_orchestrator_beta_api.py b/fireblocks/api/compliance_orchestrator_beta_api.py
new file mode 100644
index 00000000..f304a32e
--- /dev/null
+++ b/fireblocks/api/compliance_orchestrator_beta_api.py
@@ -0,0 +1,618 @@
+# 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
+from typing import Optional
+from typing_extensions import Annotated
+from fireblocks.models.get_screening_result_response import GetScreeningResultResponse
+from fireblocks.models.get_workflow_response import GetWorkflowResponse
+from fireblocks.models.trigger_screening_request import TriggerScreeningRequest
+from fireblocks.models.trigger_screening_response import TriggerScreeningResponse
+from fireblocks.models.update_workflow_status_request import UpdateWorkflowStatusRequest
+from fireblocks.models.update_workflow_status_response import UpdateWorkflowStatusResponse
+
+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 ComplianceOrchestratorBetaApi:
+ """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 get_screening_result(
+ self,
+ screening_id: Annotated[StrictStr, Field(description="The screening's identifier, returned by `POST /v1/compliance/orchestrator/screenings`.")],
+ _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[GetScreeningResultResponse]]:
+ """Get a Compliance Orchestrator screening's result
+
+ Returns the result of a screening started by `POST /v1/compliance/orchestrator/screenings`, with a result per workflow step and an audit log. Safe to poll: a screening still in flight reports `PENDING` or `RUNNING`. Only screenings owned by the requesting tenant are returned.
+
+ :param screening_id: The screening's identifier, returned by `POST /v1/compliance/orchestrator/screenings`. (required)
+ :type screening_id: str
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :type _request_timeout: int, tuple(int, int), optional
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the
+ authentication in the spec for a single request.
+ :type _request_auth: dict, optional
+ :param _content_type: force content-type for the request.
+ :type _content_type: str, Optional
+ :param _headers: set to override the headers for a single
+ request; this effectively ignores the headers
+ in the spec for a single request.
+ :type _headers: dict, optional
+ :param _host_index: set to override the host_index for a single
+ request; this effectively ignores the host_index
+ in the spec for a single request.
+ :type _host_index: int, optional
+ :return: Returns the result object.
+ """ # noqa: E501
+
+ validate_not_empty_string(function_name="get_screening_result", param_name="screening_id", param_value=screening_id)
+
+ _param = self._get_screening_result_serialize(
+ screening_id=screening_id,
+ _request_auth=_request_auth,
+ _content_type=_content_type,
+ _headers=_headers,
+ _host_index=_host_index
+ )
+
+ _response_types_map: Dict[str, Optional[str]] = {
+ '200': "GetScreeningResultResponse",
+ '400': "ErrorSchema",
+ '404': "ErrorSchema",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _get_screening_result_serialize(
+ self,
+ screening_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 screening_id is not None:
+ _path_params['screeningId'] = screening_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='/compliance/orchestrator/screenings/{screeningId}',
+ 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_workflow(
+ self,
+ workflow_id: Annotated[StrictStr, Field(description="The workflow's identifier.")],
+ _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[GetWorkflowResponse]]:
+ """Get a Compliance Orchestrator workflow
+
+ Returns a workflow's status and its steps in execution order. Read it to see what a given `workflowId` will screen, and which fields its rules may reference.
+
+ :param workflow_id: The workflow's identifier. (required)
+ :type workflow_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_workflow", param_name="workflow_id", param_value=workflow_id)
+
+ _param = self._get_workflow_serialize(
+ workflow_id=workflow_id,
+ _request_auth=_request_auth,
+ _content_type=_content_type,
+ _headers=_headers,
+ _host_index=_host_index
+ )
+
+ _response_types_map: Dict[str, Optional[str]] = {
+ '200': "GetWorkflowResponse",
+ '400': "ErrorSchema",
+ '404': "ErrorSchema",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _get_workflow_serialize(
+ self,
+ workflow_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 workflow_id is not None:
+ _path_params['workflowId'] = workflow_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='/compliance/orchestrator/workflows/{workflowId}',
+ 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 trigger_screening(
+ self,
+ trigger_screening_request: TriggerScreeningRequest,
+ 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[TriggerScreeningResponse]]:
+ """Trigger a Compliance Orchestrator screening
+
+ Starts a compliance screening against an active workflow and returns a `screeningId`. The screening runs asynchronously — poll `GET /v1/compliance/orchestrator/screenings/{screeningId}` for the result. Unlike the screening that applies automatically to submitted transactions under `/v1/screening`, this is called on demand, before anything exists on-chain.
+
+ :param trigger_screening_request: (required)
+ :type trigger_screening_request: TriggerScreeningRequest
+ :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._trigger_screening_serialize(
+ trigger_screening_request=trigger_screening_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': "TriggerScreeningResponse",
+ '400': "ErrorSchema",
+ '404': "ErrorSchema",
+ '409': "ErrorSchema",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _trigger_screening_serialize(
+ self,
+ trigger_screening_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 trigger_screening_request is not None:
+ _body_params = trigger_screening_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='/compliance/orchestrator/screenings',
+ path_params=_path_params,
+ query_params=_query_params,
+ header_params=_header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ auth_settings=_auth_settings,
+ collection_formats=_collection_formats,
+ _host=_host,
+ _request_auth=_request_auth
+ )
+
+
+
+
+ @validate_call
+ def update_workflow_status(
+ self,
+ workflow_id: Annotated[StrictStr, Field(description="The workflow's identifier.")],
+ update_workflow_status_request: UpdateWorkflowStatusRequest,
+ 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[UpdateWorkflowStatusResponse]]:
+ """Update a Compliance Orchestrator workflow's status
+
+ Moves a workflow between `DRAFT` and `ACTIVE`. A workflow must be `ACTIVE` before `POST /v1/compliance/orchestrator/screenings` will accept a screening against it. Returns the workflow's id and new status, not its full configuration.
+
+ :param workflow_id: The workflow's identifier. (required)
+ :type workflow_id: str
+ :param update_workflow_status_request: (required)
+ :type update_workflow_status_request: UpdateWorkflowStatusRequest
+ :param idempotency_key: A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
+ :type idempotency_key: str
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :type _request_timeout: int, tuple(int, int), optional
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the
+ authentication in the spec for a single request.
+ :type _request_auth: dict, optional
+ :param _content_type: force content-type for the request.
+ :type _content_type: str, Optional
+ :param _headers: set to override the headers for a single
+ request; this effectively ignores the headers
+ in the spec for a single request.
+ :type _headers: dict, optional
+ :param _host_index: set to override the host_index for a single
+ request; this effectively ignores the host_index
+ in the spec for a single request.
+ :type _host_index: int, optional
+ :return: Returns the result object.
+ """ # noqa: E501
+
+ validate_not_empty_string(function_name="update_workflow_status", param_name="workflow_id", param_value=workflow_id)
+
+ _param = self._update_workflow_status_serialize(
+ workflow_id=workflow_id,
+ update_workflow_status_request=update_workflow_status_request,
+ idempotency_key=idempotency_key,
+ _request_auth=_request_auth,
+ _content_type=_content_type,
+ _headers=_headers,
+ _host_index=_host_index
+ )
+
+ _response_types_map: Dict[str, Optional[str]] = {
+ '200': "UpdateWorkflowStatusResponse",
+ '400': "ErrorSchema",
+ '404': "ErrorSchema",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _update_workflow_status_serialize(
+ self,
+ workflow_id,
+ update_workflow_status_request,
+ idempotency_key,
+ _request_auth,
+ _content_type,
+ _headers,
+ _host_index,
+ ) -> RequestSerialized:
+
+ _host = None
+
+ _collection_formats: Dict[str, str] = {
+ }
+
+ _path_params: Dict[str, str] = {}
+ _query_params: List[Tuple[str, str]] = []
+ _header_params: Dict[str, Optional[str]] = _headers or {}
+ _form_params: List[Tuple[str, str]] = []
+ _files: Dict[
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
+ ] = {}
+ _body_params: Optional[bytes] = None
+
+ # process the path parameters
+ if workflow_id is not None:
+ _path_params['workflowId'] = workflow_id
+ # process the query parameters
+ # process the header parameters
+ if idempotency_key is not None:
+ _header_params['Idempotency-Key'] = idempotency_key
+ # process the form parameters
+ # process the body parameter
+ if update_workflow_status_request is not None:
+ _body_params = update_workflow_status_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='PATCH',
+ resource_path='/compliance/orchestrator/workflows/{workflowId}/status',
+ 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/webhooks_v2_api.py b/fireblocks/api/webhooks_v2_api.py
index 9b9f11a5..d4d54299 100644
--- a/fireblocks/api/webhooks_v2_api.py
+++ b/fireblocks/api/webhooks_v2_api.py
@@ -766,6 +766,7 @@ def _get_metrics_serialize(
@validate_call
def get_mtls_csr(
self,
+ key_algorithm: Annotated[Optional[StrictStr], Field(description="Algorithm of the private key the CSR is generated for. ECDSA keys are smaller and quicker to issue, but the certificate authority signing the request has to accept an EC subject key, which some do not by default.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -781,8 +782,10 @@ def get_mtls_csr(
) -> Future[ApiResponse[WebhookMtlsCsrResponse]]:
"""Get mTLS CSR
- Returns the Fireblocks Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate.
+ Returns the Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate. The private key the CSR is built from is held by Fireblocks and is specific to this workspace. It is created on the first request for a given key type, and the same CSR is returned on subsequent requests for that type. Pass `keyAlgorithm` to choose RSA or ECDSA. A workspace may hold one key of each: the CSR returned is always the one for the type requested, so a certificate signed against it matches the key used at delivery time.
+ :param key_algorithm: Algorithm of the private key the CSR is generated for. ECDSA keys are smaller and quicker to issue, but the certificate authority signing the request has to accept an EC subject key, which some do not by default.
+ :type key_algorithm: 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
@@ -807,6 +810,7 @@ def get_mtls_csr(
_param = self._get_mtls_csr_serialize(
+ key_algorithm=key_algorithm,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -826,6 +830,7 @@ def get_mtls_csr(
def _get_mtls_csr_serialize(
self,
+ key_algorithm,
_request_auth,
_content_type,
_headers,
@@ -848,6 +853,10 @@ def _get_mtls_csr_serialize(
# process the path parameters
# process the query parameters
+ if key_algorithm is not None:
+
+ _query_params.append(('keyAlgorithm', key_algorithm))
+
# process the header parameters
# process the form parameters
# process the body parameter
@@ -868,7 +877,7 @@ def _get_mtls_csr_serialize(
return self.api_client.param_serialize(
method='GET',
- resource_path='/webhooks/mtls/csr',
+ resource_path='/webhooks_settings/mtls_csr',
path_params=_path_params,
query_params=_query_params,
header_params=_header_params,
@@ -2981,7 +2990,7 @@ def update_webhook_oauth(
) -> Future[ApiResponse[WebhookOauthCredentials]]:
"""Update OAuth credentials
- Updates only the fields present in the request; anything omitted is left as it is. Sending `clientSecret` on its own rotates the secret for every webhook using these credentials. `customJwtClaims`, `customBodyParams` and `customHeaders` are all merged key by key rather than replaced, the same way a webhook's own `customHeaders` behaves: a key sent with a value is added or overwritten, a key sent with a `null` value is deleted, and a key you omit is left alone. Since a `null` inside a map is the delete mechanism, none of the three accepts `null` for the whole field — `customJwtClaims: null`, `customBodyParams: null` or `customHeaders: null` is rejected with a `400` rather than ignored. Clear a map by listing each of its keys with a `null` value. Because `null` is spent on deletion, a claim cannot be set to JSON `null` either, on this endpoint or on create. `mtlsClientSignedCert` is a scalar rather than a map, so `null` there does remove it. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
+ Updates only the fields present in the request; anything omitted is left as it is. Sending `clientSecret` on its own rotates the secret for every webhook using these credentials. `customJwtClaims`, `customBodyParams` and `customHeaders` are all merged key by key rather than replaced, the same way a webhook's own `customHeaders` behaves: a key sent with a value is added or overwritten, a key sent with a `null` value is deleted, and a key you omit is left alone. Setting one of the three to `null` as a whole clears that map, which is the quick way to empty it without naming every key. There is no ambiguity between the two uses of `null` — one names an entry to delete, the other names the field. A claim cannot be set to JSON `null`, though, on this endpoint or on create, because `null` is spent on deletion. `mtlsClientSignedCert` is a scalar rather than a map, so `null` there does remove it. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
:param webhook_oauth_id: The unique identifier of the OAuth credentials (required)
:type webhook_oauth_id: str
diff --git a/fireblocks/client.py b/fireblocks/client.py
index fc961d79..29e84737 100644
--- a/fireblocks/client.py
+++ b/fireblocks/client.py
@@ -20,6 +20,9 @@
from fireblocks.api.blockchain_link_beta_api import BlockchainLinkBetaApi
from fireblocks.api.blockchains_assets_api import BlockchainsAssetsApi
from fireblocks.api.compliance_api import ComplianceApi
+from fireblocks.api.compliance_orchestrator_beta_api import (
+ ComplianceOrchestratorBetaApi,
+)
from fireblocks.api.compliance_screening_configuration_api import (
ComplianceScreeningConfigurationApi,
)
@@ -88,6 +91,7 @@ def __init__(self, configuration: ClientConfiguration = None):
self._blockchain_link_beta = None
self._blockchains_assets = None
self._compliance = None
+ self._compliance_orchestrator_beta = None
self._compliance_screening_configuration = None
self._connected_accounts_beta = None
self._console_user = None
@@ -183,6 +187,14 @@ def compliance(self) -> ComplianceApi:
self._compliance = ComplianceApi(self._api_client)
return self._compliance
+ @property
+ def compliance_orchestrator_beta(self) -> ComplianceOrchestratorBetaApi:
+ if self._compliance_orchestrator_beta is None:
+ self._compliance_orchestrator_beta = ComplianceOrchestratorBetaApi(
+ self._api_client
+ )
+ return self._compliance_orchestrator_beta
+
@property
def compliance_screening_configuration(self) -> ComplianceScreeningConfigurationApi:
if self._compliance_screening_configuration is None:
diff --git a/fireblocks/configuration.py b/fireblocks/configuration.py
index fb7baaff..c1a025c0 100644
--- a/fireblocks/configuration.py
+++ b/fireblocks/configuration.py
@@ -550,7 +550,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: 31.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 b18f1ede..dae08fdf 100644
--- a/fireblocks/models/__init__.py
+++ b/fireblocks/models/__init__.py
@@ -110,8 +110,11 @@
from fireblocks.models.amount_range_min_max2 import AmountRangeMinMax2
from fireblocks.models.api_key import ApiKey
from fireblocks.models.api_keys_paginated_response import ApiKeysPaginatedResponse
+from fireblocks.models.approval_api_key import ApprovalApiKey
+from fireblocks.models.approval_api_public_key import ApprovalApiPublicKey
from fireblocks.models.approval_request import ApprovalRequest
from fireblocks.models.approval_request_item import ApprovalRequestItem
+from fireblocks.models.approve_approval_request import ApproveApprovalRequest
from fireblocks.models.approvers_config import ApproversConfig
from fireblocks.models.approvers_config_approval_groups_inner import ApproversConfigApprovalGroupsInner
from fireblocks.models.apy import Apy
@@ -149,7 +152,9 @@
from fireblocks.models.assign_vaults_to_legal_entity_response import AssignVaultsToLegalEntityResponse
from fireblocks.models.attach_detach_utxo_labels_request import AttachDetachUtxoLabelsRequest
from fireblocks.models.attach_detach_utxo_labels_response import AttachDetachUtxoLabelsResponse
+from fireblocks.models.audit_event_type_enum import AuditEventTypeEnum
from fireblocks.models.audit_log_data import AuditLogData
+from fireblocks.models.audit_log_entry import AuditLogEntry
from fireblocks.models.auditor_data import AuditorData
from fireblocks.models.authorization_groups import AuthorizationGroups
from fireblocks.models.authorization_info import AuthorizationInfo
@@ -188,6 +193,7 @@
from fireblocks.models.byork_verdict_request import ByorkVerdictRequest
from fireblocks.models.byork_verdict_response import ByorkVerdictResponse
from fireblocks.models.byork_verdict_response_status_enum import ByorkVerdictResponseStatusEnum
+from fireblocks.models.bypass_reason_enum import BypassReasonEnum
from fireblocks.models.call_accepted import CallAccepted
from fireblocks.models.callback_handler import CallbackHandler
from fireblocks.models.callback_handler_request import CallbackHandlerRequest
@@ -230,6 +236,7 @@
from fireblocks.models.compliance_results import ComplianceResults
from fireblocks.models.compliance_screening_result import ComplianceScreeningResult
from fireblocks.models.compliance_screening_result_full_payload import ComplianceScreeningResultFullPayload
+from fireblocks.models.compliance_screening_status_enum import ComplianceScreeningStatusEnum
from fireblocks.models.config_change_request_status import ConfigChangeRequestStatus
from fireblocks.models.config_conversion_operation_snapshot import ConfigConversionOperationSnapshot
from fireblocks.models.config_disbursement_operation_snapshot import ConfigDisbursementOperationSnapshot
@@ -254,6 +261,8 @@
from fireblocks.models.connected_accounts_response import ConnectedAccountsResponse
from fireblocks.models.connected_single_account import ConnectedSingleAccount
from fireblocks.models.connected_single_account_response import ConnectedSingleAccountResponse
+from fireblocks.models.connector_status_enum import ConnectorStatusEnum
+from fireblocks.models.connector_verdict_enum import ConnectorVerdictEnum
from fireblocks.models.console_user import ConsoleUser
from fireblocks.models.contact import Contact
from fireblocks.models.contact_approval_request import ContactApprovalRequest
@@ -532,11 +541,13 @@
from fireblocks.models.get_paged_exchange_accounts_response_paging import GetPagedExchangeAccountsResponsePaging
from fireblocks.models.get_positions_response import GetPositionsResponse
from fireblocks.models.get_providers_response import GetProvidersResponse
+from fireblocks.models.get_screening_result_response import GetScreeningResultResponse
from fireblocks.models.get_signing_key_response_dto import GetSigningKeyResponseDto
from fireblocks.models.get_test_wallet_address_response import GetTestWalletAddressResponse
from fireblocks.models.get_transaction_operation import GetTransactionOperation
from fireblocks.models.get_validation_key_response_dto import GetValidationKeyResponseDto
from fireblocks.models.get_whitelist_ip_addresses_response import GetWhitelistIpAddressesResponse
+from fireblocks.models.get_workflow_response import GetWorkflowResponse
from fireblocks.models.get_workspace_status_response import GetWorkspaceStatusResponse
from fireblocks.models.gleif_data import GleifData
from fireblocks.models.gleif_other_legal_entity_name import GleifOtherLegalEntityName
@@ -599,6 +610,7 @@
from fireblocks.models.legal_entity_registration import LegalEntityRegistration
from fireblocks.models.lei_status import LeiStatus
from fireblocks.models.linked_tokens_count import LinkedTokensCount
+from fireblocks.models.list_approval_api_keys_response import ListApprovalApiKeysResponse
from fireblocks.models.list_approvals_response import ListApprovalsResponse
from fireblocks.models.list_assets_response import ListAssetsResponse
from fireblocks.models.list_blockchains_response import ListBlockchainsResponse
@@ -797,6 +809,8 @@
from fireblocks.models.reason_for_payment_enum import ReasonForPaymentEnum
from fireblocks.models.recipient_handle import RecipientHandle
from fireblocks.models.redeem_funds_to_linked_dda_response import RedeemFundsToLinkedDDAResponse
+from fireblocks.models.register_approval_api_key_request import RegisterApprovalApiKeyRequest
+from fireblocks.models.register_approval_api_key_response import RegisterApprovalApiKeyResponse
from fireblocks.models.register_legal_entity_request import RegisterLegalEntityRequest
from fireblocks.models.register_new_asset_request import RegisterNewAssetRequest
from fireblocks.models.reissue_multichain_token_request import ReissueMultichainTokenRequest
@@ -837,9 +851,15 @@
from fireblocks.models.retry_requote_type_enum import RetryRequoteTypeEnum
from fireblocks.models.reward_info import RewardInfo
from fireblocks.models.rewards_info import RewardsInfo
+from fireblocks.models.risk_level_enum import RiskLevelEnum
from fireblocks.models.role_details import RoleDetails
from fireblocks.models.role_details2 import RoleDetails2
from fireblocks.models.role_grantee import RoleGrantee
+from fireblocks.models.rule import Rule
+from fireblocks.models.rule_action_enum import RuleActionEnum
+from fireblocks.models.rule_condition import RuleCondition
+from fireblocks.models.rule_condition_operator_enum import RuleConditionOperatorEnum
+from fireblocks.models.rule_set import RuleSet
from fireblocks.models.ruleset_quorum import RulesetQuorum
from fireblocks.models.sepa_address import SEPAAddress
from fireblocks.models.sepa_destination import SEPADestination
@@ -853,11 +873,15 @@
from fireblocks.models.screening_aml_matched_rule import ScreeningAmlMatchedRule
from fireblocks.models.screening_aml_result import ScreeningAmlResult
from fireblocks.models.screening_configurations_request import ScreeningConfigurationsRequest
+from fireblocks.models.screening_input import ScreeningInput
from fireblocks.models.screening_metadata_config import ScreeningMetadataConfig
+from fireblocks.models.screening_operation_enum import ScreeningOperationEnum
from fireblocks.models.screening_operation_execution import ScreeningOperationExecution
from fireblocks.models.screening_operation_execution_output import ScreeningOperationExecutionOutput
from fireblocks.models.screening_operation_failure import ScreeningOperationFailure
from fireblocks.models.screening_operation_type import ScreeningOperationType
+from fireblocks.models.screening_outcome_enum import ScreeningOutcomeEnum
+from fireblocks.models.screening_payload import ScreeningPayload
from fireblocks.models.screening_policy_amount import ScreeningPolicyAmount
from fireblocks.models.screening_policy_amount_range import ScreeningPolicyAmountRange
from fireblocks.models.screening_policy_currency import ScreeningPolicyCurrency
@@ -969,6 +993,9 @@
from fireblocks.models.staking_provider import StakingProvider
from fireblocks.models.status import Status
from fireblocks.models.stellar_ripple_create_params_dto import StellarRippleCreateParamsDto
+from fireblocks.models.step_config import StepConfig
+from fireblocks.models.step_operation_config import StepOperationConfig
+from fireblocks.models.step_result import StepResult
from fireblocks.models.submit_order_requirement_request import SubmitOrderRequirementRequest
from fireblocks.models.supported_block_chains_response import SupportedBlockChainsResponse
from fireblocks.models.supported_blockchain import SupportedBlockchain
@@ -1116,6 +1143,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_direction_enum import TransferDirectionEnum
from fireblocks.models.transfer_operation_config_params import TransferOperationConfigParams
from fireblocks.models.transfer_operation_execution import TransferOperationExecution
from fireblocks.models.transfer_operation_execution_output import TransferOperationExecutionOutput
@@ -1185,6 +1213,9 @@
from fireblocks.models.travel_rule_validate_transaction_response import TravelRuleValidateTransactionResponse
from fireblocks.models.travel_rule_vasp_for_vault import TravelRuleVaspForVault
from fireblocks.models.travel_rule_verdict_enum import TravelRuleVerdictEnum
+from fireblocks.models.trigger_rule_outcome_enum import TriggerRuleOutcomeEnum
+from fireblocks.models.trigger_screening_request import TriggerScreeningRequest
+from fireblocks.models.trigger_screening_response import TriggerScreeningResponse
from fireblocks.models.trigger_validation_flow_response import TriggerValidationFlowResponse
from fireblocks.models.trust_proof_of_address_create_response import TrustProofOfAddressCreateResponse
from fireblocks.models.trust_proof_of_address_request import TrustProofOfAddressRequest
@@ -1215,6 +1246,8 @@
from fireblocks.models.update_vault_account_request import UpdateVaultAccountRequest
from fireblocks.models.update_webhook_oauth_request import UpdateWebhookOauthRequest
from fireblocks.models.update_webhook_request import UpdateWebhookRequest
+from fireblocks.models.update_workflow_status_request import UpdateWorkflowStatusRequest
+from fireblocks.models.update_workflow_status_response import UpdateWorkflowStatusResponse
from fireblocks.models.us_wire_payment_info import UsWirePaymentInfo
from fireblocks.models.usdc_gateway_wallet_asset import UsdcGatewayWalletAsset
from fireblocks.models.usdc_gateway_wallet_info_response import UsdcGatewayWalletInfoResponse
@@ -1259,12 +1292,14 @@
from fireblocks.models.webhook_metric import WebhookMetric
from fireblocks.models.webhook_mtls import WebhookMtls
from fireblocks.models.webhook_mtls_csr_response import WebhookMtlsCsrResponse
+from fireblocks.models.webhook_mtls_key_algorithm import WebhookMtlsKeyAlgorithm
from fireblocks.models.webhook_oauth_credentials import WebhookOauthCredentials
from fireblocks.models.webhook_paginated_response import WebhookPaginatedResponse
from fireblocks.models.withdraw_request import WithdrawRequest
from fireblocks.models.workflow_config_status import WorkflowConfigStatus
from fireblocks.models.workflow_configuration_id import WorkflowConfigurationId
from fireblocks.models.workflow_execution_operation import WorkflowExecutionOperation
+from fireblocks.models.workflow_status_enum import WorkflowStatusEnum
from fireblocks.models.workspace import Workspace
from fireblocks.models.write_abi_function import WriteAbiFunction
from fireblocks.models.write_call_function_dto import WriteCallFunctionDto
diff --git a/fireblocks/models/approval_api_key.py b/fireblocks/models/approval_api_key.py
new file mode 100644
index 00000000..c6056601
--- /dev/null
+++ b/fireblocks/models/approval_api_key.py
@@ -0,0 +1,102 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from pydantic import BaseModel, ConfigDict, Field, StrictStr
+from typing import Any, ClassVar, Dict, List
+from fireblocks.models.approval_api_public_key import ApprovalApiPublicKey
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ApprovalApiKey(BaseModel):
+ """
+ A registered approval API key for an API user.
+ """ # noqa: E501
+ id: StrictStr = Field(description="The unique key ID, used to delete the key.")
+ name: StrictStr = Field(description="A human-readable label for the key.")
+ created_at: StrictStr = Field(description="Creation time as epoch time in seconds.", alias="createdAt")
+ last_used_at: StrictStr = Field(description="Last time the key was used to sign, as epoch time in seconds (0 if never used).", alias="lastUsedAt")
+ approval_api_public_key: ApprovalApiPublicKey = Field(alias="approvalApiPublicKey")
+ user_id: StrictStr = Field(description="The ID of the API user who owns this key.", alias="userId")
+ __properties: ClassVar[List[str]] = ["id", "name", "createdAt", "lastUsedAt", "approvalApiPublicKey", "userId"]
+
+ 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 ApprovalApiKey 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 approval_api_public_key
+ if self.approval_api_public_key:
+ _dict['approvalApiPublicKey'] = self.approval_api_public_key.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of ApprovalApiKey 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"),
+ "createdAt": obj.get("createdAt"),
+ "lastUsedAt": obj.get("lastUsedAt"),
+ "approvalApiPublicKey": ApprovalApiPublicKey.from_dict(obj["approvalApiPublicKey"]) if obj.get("approvalApiPublicKey") is not None else None,
+ "userId": obj.get("userId")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/approval_api_public_key.py b/fireblocks/models/approval_api_public_key.py
new file mode 100644
index 00000000..f0060d4b
--- /dev/null
+++ b/fireblocks/models/approval_api_public_key.py
@@ -0,0 +1,97 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
+from typing import Any, ClassVar, Dict, List
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ApprovalApiPublicKey(BaseModel):
+ """
+ The public key material and its signing algorithm.
+ """ # noqa: E501
+ algorithm: StrictStr = Field(description="The signature algorithm of the public key.")
+ public_key_pem: StrictStr = Field(description="The PEM-encoded public key.", alias="publicKeyPem")
+ __properties: ClassVar[List[str]] = ["algorithm", "publicKeyPem"]
+
+ @field_validator('algorithm')
+ def algorithm_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['RSA_PS256', 'ECDSA_SECP256R1', 'ECDSA_SECP384R1', 'EDDSA_ED25519']):
+ raise ValueError("must be one of enum values ('RSA_PS256', 'ECDSA_SECP256R1', 'ECDSA_SECP384R1', 'EDDSA_ED25519')")
+ 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 ApprovalApiPublicKey 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 ApprovalApiPublicKey from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "algorithm": obj.get("algorithm"),
+ "publicKeyPem": obj.get("publicKeyPem")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/approve_approval_request.py b/fireblocks/models/approve_approval_request.py
new file mode 100644
index 00000000..e766fcba
--- /dev/null
+++ b/fireblocks/models/approve_approval_request.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, Optional
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ApproveApprovalRequest(BaseModel):
+ """
+ The signed approval of a pending request.
+ """ # noqa: E501
+ key_id: Optional[StrictStr] = Field(default=None, description="The ID of the approval API key used to sign the request. Optional — if omitted, the signature is verified against all of the user's registered approval API keys.", alias="keyId")
+ signature: StrictStr = Field(description="Base64url-encoded signature over the request's signable data, produced with the private key of a registered approval API key. If keyId is provided the signature must match that key; otherwise it is matched against all of the user's registered keys.")
+ __properties: ClassVar[List[str]] = ["keyId", "signature"]
+
+ 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 ApproveApprovalRequest 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 ApproveApprovalRequest from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "keyId": obj.get("keyId"),
+ "signature": obj.get("signature")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/audit_event_type_enum.py b/fireblocks/models/audit_event_type_enum.py
new file mode 100644
index 00000000..1f2252ec
--- /dev/null
+++ b/fireblocks/models/audit_event_type_enum.py
@@ -0,0 +1,42 @@
+# 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 AuditEventTypeEnum(str, Enum):
+ """
+ The kind of event an audit entry records. - `STATUS_TRANSITION` — the screening moved between statuses - `STEP_TRIGGER_RULE_EVALUATED` — a step's trigger rules were evaluated - `CONNECTOR_CALL` — a connector was called; `data.phase` distinguishes the request from its terminal result - `STEP_OUTCOME_RULE_EVALUATED` — a step's outcome rules read the response - `STEP_METADATA_RECORDED` — connector metadata was attached to a step - `WORKFLOW_OUTCOME` — the workflow outcome was derived from its steps.
+ """
+
+ """
+ allowed enum values
+ """
+ STATUS_TRANSITION = 'STATUS_TRANSITION'
+ STEP_TRIGGER_RULE_EVALUATED = 'STEP_TRIGGER_RULE_EVALUATED'
+ CONNECTOR_CALL = 'CONNECTOR_CALL'
+ STEP_OUTCOME_RULE_EVALUATED = 'STEP_OUTCOME_RULE_EVALUATED'
+ STEP_METADATA_RECORDED = 'STEP_METADATA_RECORDED'
+ WORKFLOW_OUTCOME = 'WORKFLOW_OUTCOME'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of AuditEventTypeEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/audit_log_entry.py b/fireblocks/models/audit_log_entry.py
new file mode 100644
index 00000000..85088bd7
--- /dev/null
+++ b/fireblocks/models/audit_log_entry.py
@@ -0,0 +1,93 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from pydantic import BaseModel, ConfigDict, Field, StrictBytes, StrictStr
+from typing import Any, ClassVar, Dict, List, Union
+from fireblocks.models.audit_event_type_enum import AuditEventTypeEnum
+from typing import Optional, Set
+from typing_extensions import Self
+
+class AuditLogEntry(BaseModel):
+ """
+ One entry in a screening's append-only audit trail.
+ """ # noqa: E501
+ timestamp: StrictStr = Field(description="Unix timestamp in seconds when the event occurred, encoded as a string.")
+ event_type: AuditEventTypeEnum = Field(alias="eventType")
+ data: Union[StrictBytes, StrictStr] = Field(description="The event payload, JSON serialised and then base64 encoded. Its shape depends on `eventType` — decode it to read the event.")
+ __properties: ClassVar[List[str]] = ["timestamp", "eventType", "data"]
+
+ 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 AuditLogEntry 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 AuditLogEntry from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "timestamp": obj.get("timestamp"),
+ "eventType": obj.get("eventType"),
+ "data": obj.get("data")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/bypass_reason_enum.py b/fireblocks/models/bypass_reason_enum.py
new file mode 100644
index 00000000..0dfd6070
--- /dev/null
+++ b/fireblocks/models/bypass_reason_enum.py
@@ -0,0 +1,46 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import json
+from enum import Enum
+from typing_extensions import Self
+
+
+class BypassReasonEnum(str, Enum):
+ """
+ Why a step's screening did not run. A verbatim mirror of the platform's `BypassReason` vocabulary, shared with the rest of Fireblocks screening. Only `PASSED_BY_POLICY` is an approval — the policy deliberately let the subject through. Every other value means the check could not be performed, and the step is rejected rather than passed. A bypass is not a pass. - `MANUAL` — a person bypassed it - `UNSUPPORTED_ASSET` — the provider does not screen this asset or chain - `UNSUPPORTED_ROUTE` — the provider does not screen this route - `PASSED_BY_POLICY` — a policy rule let it through without screening - `BYPASSED_FAILURE` — screening failed and policy allowed a bypass - `TIMED_OUT` — the provider did not answer within the deadline - `BAD_CREDENTIALS` — the tenant's provider credentials were rejected - `CONFIGURATION_ERROR` — the connector is misconfigured for this tenant - `DROPPED_BY_BLOCKCHAIN` — the transaction never confirmed - `PROCESS_DISMISSED` — the surrounding process was cancelled
+ """
+
+ """
+ allowed enum values
+ """
+ MANUAL = 'MANUAL'
+ UNSUPPORTED_ASSET = 'UNSUPPORTED_ASSET'
+ UNSUPPORTED_ROUTE = 'UNSUPPORTED_ROUTE'
+ PASSED_BY_POLICY = 'PASSED_BY_POLICY'
+ BYPASSED_FAILURE = 'BYPASSED_FAILURE'
+ TIMED_OUT = 'TIMED_OUT'
+ BAD_CREDENTIALS = 'BAD_CREDENTIALS'
+ CONFIGURATION_ERROR = 'CONFIGURATION_ERROR'
+ DROPPED_BY_BLOCKCHAIN = 'DROPPED_BY_BLOCKCHAIN'
+ PROCESS_DISMISSED = 'PROCESS_DISMISSED'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of BypassReasonEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/compliance_screening_status_enum.py b/fireblocks/models/compliance_screening_status_enum.py
new file mode 100644
index 00000000..99242eaa
--- /dev/null
+++ b/fireblocks/models/compliance_screening_status_enum.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 ComplianceScreeningStatusEnum(str, Enum):
+ """
+ A screening's lifecycle status. - `PENDING` — accepted, not started - `RUNNING` — one or more steps in flight - `COMPLETED` — every step finished and the workflow outcome is set - `FAILED` — the screening could not be completed
+ """
+
+ """
+ allowed enum values
+ """
+ PENDING = 'PENDING'
+ RUNNING = 'RUNNING'
+ COMPLETED = 'COMPLETED'
+ FAILED = 'FAILED'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of ComplianceScreeningStatusEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/connector_status_enum.py b/fireblocks/models/connector_status_enum.py
new file mode 100644
index 00000000..b208c29e
--- /dev/null
+++ b/fireblocks/models/connector_status_enum.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 ConnectorStatusEnum(str, Enum):
+ """
+ The connector's own processing status for a step. - `COMPLETED` — the provider answered - `BYPASSED` — no provider call was made; see `bypassReason` - `FAILED` — the provider call did not succeed - `FROZEN` — the step is held pending manual action
+ """
+
+ """
+ allowed enum values
+ """
+ COMPLETED = 'COMPLETED'
+ BYPASSED = 'BYPASSED'
+ FAILED = 'FAILED'
+ FROZEN = 'FROZEN'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of ConnectorStatusEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/connector_verdict_enum.py b/fireblocks/models/connector_verdict_enum.py
new file mode 100644
index 00000000..230536c2
--- /dev/null
+++ b/fireblocks/models/connector_verdict_enum.py
@@ -0,0 +1,39 @@
+# 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 ConnectorVerdictEnum(str, Enum):
+ """
+ The connector's own verdict for a step, before the step's outcome rules are applied. `null` on a step that did not reach the provider.
+ """
+
+ """
+ allowed enum values
+ """
+ ACCEPT = 'ACCEPT'
+ REJECT = 'REJECT'
+ ALERT = 'ALERT'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of ConnectorVerdictEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/create_webhook_oauth_request.py b/fireblocks/models/create_webhook_oauth_request.py
index 0726d133..e492e09a 100644
--- a/fireblocks/models/create_webhook_oauth_request.py
+++ b/fireblocks/models/create_webhook_oauth_request.py
@@ -35,7 +35,7 @@ class CreateWebhookOauthRequest(BaseModel):
auth_method: Optional[StrictStr] = Field(default='client_secret_basic', description="How the client credentials reach the token endpoint. `client_secret_basic` uses an HTTP Basic header, `client_secret_post` uses form fields in the body, and `client_secret_jwt` sends a JWT assertion signed with the secret, so the secret itself is never transmitted. Defaults to `client_secret_basic`.", alias="authMethod")
custom_jwt_claims: Optional[Dict[str, Any]] = Field(default=None, description="Extra claims for the JWT assertion. Used only when `authMethod` is `client_secret_jwt`. The usual one to set is `aud`, which defaults to the token endpoint URL; some authorization servers expect their own identifier instead. A value may be any JSON type except `null` — `null` is reserved for deleting a claim on update. `iss`, `sub`, `jti`, `iat` and `exp` are set by Fireblocks and cannot be overridden. Names are case-sensitive. The whole object must be under 16 KB. Values are write-only; responses return only the claim names. On update this merges claim by claim rather than replacing — see `WebhookOauthCustomJwtClaimsUpdate`.", alias="customJwtClaims")
custom_body_params: Optional[Dict[str, StrictStr]] = Field(default=None, description="Extra parameters for the token request body — `scope` most commonly, sometimes `audience` or `resource`. Applies to every authentication method. Values must be strings, because the token request body is form-encoded rather than JSON. An empty string is allowed. `grant_type`, `client_id`, `client_secret`, `client_assertion` and `client_assertion_type` are set by Fireblocks and cannot be overridden. Names are case-sensitive. The whole object must be under 16 KB. Values are write-only; responses return only the parameter names. On update this merges key by key rather than replacing — see `WebhookOauthCustomBodyParamsUpdate`.", alias="customBodyParams")
- custom_headers: Optional[Dict[str, StrictStr]] = Field(default=None, description="Extra HTTP headers for **the token request to your authorization server** — not for the webhook delivery, which has its own separate `customHeaders`. A gateway API key is the usual case. Applies to every authentication method. Values must be strings; an empty string is allowed. Names are matched case-insensitively, so two names differing only in case are a duplicate. Names are stored and returned lowercased, so `X-Api-Key` comes back as `x-api-key`. `Content-Type`, `Content-Length` and `Host` are set by Fireblocks and cannot be overridden. `Authorization` is not sent when `authMethod` is `client_secret_basic`. Values have no length limit of their own; the whole object must be under 16 KB when serialized as UTF-8. Values are write-only; responses return only the header names. On update this merges name by name rather than replacing — see `WebhookOauthCustomHeadersUpdate`.", alias="customHeaders")
+ custom_headers: Optional[Dict[str, StrictStr]] = Field(default=None, description="Extra HTTP headers for **the token request to your authorization server** — not for the webhook delivery, which has its own separate `customHeaders`. A gateway API key is the usual case. Values must be strings; an empty string is allowed. Names are matched case-insensitively, so two names differing only in case are a duplicate. Names are stored and returned lowercased, so `X-Api-Key` comes back as `x-api-key`. `Content-Type`, `Content-Length` and `Host` are set by Fireblocks and cannot be overridden. `Authorization` can be set with `client_secret_post` or `client_secret_jwt`, which send the credentials in the body — useful when your token endpoint sits behind a gateway. It is rejected with `client_secret_basic`, which sends the credentials in that header. Values have no length limit of their own; the whole object must be under 16 KB when serialized as UTF-8. Values are write-only; responses return only the header names. On update this merges name by name rather than replacing — see `WebhookOauthCustomHeadersUpdate`.", alias="customHeaders")
mtls_client_signed_cert: Optional[StrictStr] = Field(default=None, description="PEM-encoded client certificate for mTLS when fetching tokens. Must be a valid X.509 certificate inside its validity window.", alias="mtlsClientSignedCert")
__properties: ClassVar[List[str]] = ["name", "clientId", "clientSecret", "url", "authMethod", "customJwtClaims", "customBodyParams", "customHeaders", "mtlsClientSignedCert"]
diff --git a/fireblocks/models/create_webhook_request.py b/fireblocks/models/create_webhook_request.py
index 6390df44..5f830152 100644
--- a/fireblocks/models/create_webhook_request.py
+++ b/fireblocks/models/create_webhook_request.py
@@ -35,8 +35,8 @@ class CreateWebhookRequest(BaseModel):
events: List[WebhookEvent] = Field(description="event types the webhook will subscribe to")
enabled: Optional[StrictBool] = Field(default=True, description="The status of the webhook. If false, the webhook will not receive notifications.")
mtls: Optional[WebhookMtls] = None
- webhook_oauth_id: Optional[StrictStr] = Field(default=None, description="The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook.", alias="webhookOauthId")
- custom_headers: Optional[Dict[str, Any]] = Field(default=None, description="Custom HTTP headers attached to every notification delivered by this webhook. A value is a string, sent as one header line, or an array of strings, sent as one header line per element under the same name. `Cookie` accepts only a string. An empty array is rejected — leave the name out instead. At most 10 header lines in total, counted per array element rather than per name. Names must be valid HTTP header tokens, are case-insensitive, and are at most 128 characters. A value may be empty and has no length limit of its own; the whole object must be under 16 KB when serialized as UTF-8. A value that large may still be refused by your own endpoint, since web servers commonly cap the whole request header block at around 8 KB. Reserved names: `Host`, `Content-Type`, `Content-Length`, `Transfer-Encoding`, `Connection`, `User-Agent`, `Accept`, `Accept-Encoding`, `Fireblocks-Signature`, `Fireblocks-Webhook-Signature`. When this webhook has OAuth credentials attached, an `Authorization` value you set and the bearer token are both sent as separate header lines. Values are write-only; responses return only the header names.", alias="customHeaders")
+ webhook_oauth_id: Optional[StrictStr] = Field(default=None, description="The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook. Cannot be combined with an `authorization` custom header on the same webhook; a request that would leave both set is rejected.", alias="webhookOauthId")
+ custom_headers: Optional[Dict[str, Any]] = Field(default=None, description="Custom HTTP headers attached to every notification delivered by this webhook. A value is a string, sent as one header line, or an array of strings, sent as one header line per element under the same name. `Cookie` and `Authorization` accept only a string. An empty array is rejected — leave the name out instead. At most 10 headers, counted by name — an array value counts once, however many lines it sends. Names must be valid HTTP header tokens, are case-insensitive, and are at most 128 characters. A value may be empty and has no length limit of its own; the whole object must be under 16 KB when serialized as UTF-8. A value that large may still be refused by your own endpoint, since web servers commonly cap the whole request header block at around 8 KB. Reserved names: `Host`, `Content-Type`, `Content-Length`, `Transfer-Encoding`, `Connection`, `User-Agent`, `Accept`, `Accept-Encoding`, `Fireblocks-Signature`, `Fireblocks-Webhook-Signature`. `Authorization` may be set, but not together with `webhookOauthId`; a request that would leave both set is rejected. Values are write-only; responses return only the header names.", alias="customHeaders")
__properties: ClassVar[List[str]] = ["url", "description", "events", "enabled", "mtls", "webhookOauthId", "customHeaders"]
model_config = ConfigDict(
diff --git a/fireblocks/models/get_screening_result_response.py b/fireblocks/models/get_screening_result_response.py
new file mode 100644
index 00000000..b3df2aa2
--- /dev/null
+++ b/fireblocks/models/get_screening_result_response.py
@@ -0,0 +1,121 @@
+# 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.audit_log_entry import AuditLogEntry
+from fireblocks.models.compliance_screening_status_enum import ComplianceScreeningStatusEnum
+from fireblocks.models.screening_outcome_enum import ScreeningOutcomeEnum
+from fireblocks.models.step_result import StepResult
+from typing import Optional, Set
+from typing_extensions import Self
+
+class GetScreeningResultResponse(BaseModel):
+ """
+ The current status, outcome, per-step results, and audit log for a screening.
+ """ # noqa: E501
+ screening_id: StrictStr = Field(description="Identifier of the screening being queried.", alias="screeningId")
+ workflow_id: StrictStr = Field(description="Identifier of the workflow that produced this screening.", alias="workflowId")
+ screening_status: ComplianceScreeningStatusEnum = Field(alias="screeningStatus")
+ outcome: Optional[ScreeningOutcomeEnum] = None
+ steps: List[StepResult] = Field(description="Flat step list.")
+ audit_log: List[AuditLogEntry] = Field(description="Append-only audit trail for this screening.", alias="auditLog")
+ __properties: ClassVar[List[str]] = ["screeningId", "workflowId", "screeningStatus", "outcome", "steps", "auditLog"]
+
+ 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 GetScreeningResultResponse 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 steps (list)
+ _items = []
+ if self.steps:
+ for _item_steps in self.steps:
+ if _item_steps:
+ _items.append(_item_steps.to_dict())
+ _dict['steps'] = _items
+ # override the default output from pydantic by calling `to_dict()` of each item in audit_log (list)
+ _items = []
+ if self.audit_log:
+ for _item_audit_log in self.audit_log:
+ if _item_audit_log:
+ _items.append(_item_audit_log.to_dict())
+ _dict['auditLog'] = _items
+ # set to None if outcome (nullable) is None
+ # and model_fields_set contains the field
+ if self.outcome is None and "outcome" in self.model_fields_set:
+ _dict['outcome'] = None
+
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of GetScreeningResultResponse from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "screeningId": obj.get("screeningId"),
+ "workflowId": obj.get("workflowId"),
+ "screeningStatus": obj.get("screeningStatus"),
+ "outcome": obj.get("outcome"),
+ "steps": [StepResult.from_dict(_item) for _item in obj["steps"]] if obj.get("steps") is not None else None,
+ "auditLog": [AuditLogEntry.from_dict(_item) for _item in obj["auditLog"]] if obj.get("auditLog") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/get_workflow_response.py b/fireblocks/models/get_workflow_response.py
new file mode 100644
index 00000000..ce570330
--- /dev/null
+++ b/fireblocks/models/get_workflow_response.py
@@ -0,0 +1,119 @@
+# 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.step_config import StepConfig
+from fireblocks.models.workflow_status_enum import WorkflowStatusEnum
+from typing import Optional, Set
+from typing_extensions import Self
+
+class GetWorkflowResponse(BaseModel):
+ """
+ A workflow's current definition, including its steps and each step's rule sets. A workflow is the configuration a screening runs against: an ordered list of steps, each backed by one connector. It must be `ACTIVE` before a screening will accept it — `DRAFT` is the editing state, so a screening never runs against a half-finished configuration.
+ """ # noqa: E501
+ workflow_id: StrictStr = Field(description="Unique identifier of the workflow.", alias="workflowId")
+ template_id: Optional[StrictStr] = Field(default=None, description="The template this workflow was provisioned from, if any.", alias="templateId")
+ status: WorkflowStatusEnum
+ title: StrictStr = Field(description="User-facing display name for the workflow.")
+ description: Optional[StrictStr] = Field(default=None, description="User-facing free-text description of the workflow's purpose.")
+ created_at: StrictStr = Field(description="Unix timestamp in seconds when the workflow was provisioned, encoded as a string.", alias="createdAt")
+ steps: List[StepConfig] = Field(description="Flat list — one step per connector.")
+ __properties: ClassVar[List[str]] = ["workflowId", "templateId", "status", "title", "description", "createdAt", "steps"]
+
+ 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 GetWorkflowResponse 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 steps (list)
+ _items = []
+ if self.steps:
+ for _item_steps in self.steps:
+ if _item_steps:
+ _items.append(_item_steps.to_dict())
+ _dict['steps'] = _items
+ # set to None if template_id (nullable) is None
+ # and model_fields_set contains the field
+ if self.template_id is None and "template_id" in self.model_fields_set:
+ _dict['templateId'] = None
+
+ # set to None if description (nullable) is None
+ # and model_fields_set contains the field
+ if self.description is None and "description" in self.model_fields_set:
+ _dict['description'] = None
+
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of GetWorkflowResponse from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "workflowId": obj.get("workflowId"),
+ "templateId": obj.get("templateId"),
+ "status": obj.get("status"),
+ "title": obj.get("title"),
+ "description": obj.get("description"),
+ "createdAt": obj.get("createdAt"),
+ "steps": [StepConfig.from_dict(_item) for _item in obj["steps"]] if obj.get("steps") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/internal_transfer_response.py b/fireblocks/models/internal_transfer_response.py
index 01697361..46ccf4c3 100644
--- a/fireblocks/models/internal_transfer_response.py
+++ b/fireblocks/models/internal_transfer_response.py
@@ -20,6 +20,7 @@
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
+from fireblocks.models.system_message_info import SystemMessageInfo
from typing import Optional, Set
from typing_extensions import Self
@@ -29,7 +30,9 @@ class InternalTransferResponse(BaseModel):
""" # noqa: E501
success: StrictBool = Field(description="Indicates whether the transfer was successful")
id: Optional[StrictStr] = Field(default=None, description="The transaction ID of the internal transfer")
- __properties: ClassVar[List[str]] = ["success", "id"]
+ status: Optional[StrictStr] = Field(default=None, description="The transfer status returned by the transaction manager. Only present when the transfer was processed via the transaction manager flow.")
+ system_messages: Optional[List[SystemMessageInfo]] = Field(default=None, description="System messages returned by the transaction manager about the health of the transfer being performed. Only present when the transfer was processed via the transaction manager flow.", alias="systemMessages")
+ __properties: ClassVar[List[str]] = ["success", "id", "status", "systemMessages"]
model_config = ConfigDict(
populate_by_name=True,
@@ -70,11 +73,28 @@ 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 system_messages (list)
+ _items = []
+ if self.system_messages:
+ for _item_system_messages in self.system_messages:
+ if _item_system_messages:
+ _items.append(_item_system_messages.to_dict())
+ _dict['systemMessages'] = _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:
_dict['id'] = None
+ # set to None if status (nullable) is None
+ # and model_fields_set contains the field
+ if self.status is None and "status" in self.model_fields_set:
+ _dict['status'] = None
+
+ # set to None if system_messages (nullable) is None
+ # and model_fields_set contains the field
+ if self.system_messages is None and "system_messages" in self.model_fields_set:
+ _dict['systemMessages'] = None
+
return _dict
@classmethod
@@ -88,7 +108,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"success": obj.get("success"),
- "id": obj.get("id")
+ "id": obj.get("id"),
+ "status": obj.get("status"),
+ "systemMessages": [SystemMessageInfo.from_dict(_item) for _item in obj["systemMessages"]] if obj.get("systemMessages") is not None else None
})
return _obj
diff --git a/fireblocks/models/list_approval_api_keys_response.py b/fireblocks/models/list_approval_api_keys_response.py
new file mode 100644
index 00000000..e1715ff0
--- /dev/null
+++ b/fireblocks/models/list_approval_api_keys_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, Field, StrictStr
+from typing import Any, ClassVar, Dict, List, Optional
+from fireblocks.models.approval_api_key import ApprovalApiKey
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ListApprovalApiKeysResponse(BaseModel):
+ """
+ The approval API keys registered for the API user.
+ """ # noqa: E501
+ data: List[ApprovalApiKey] = Field(description="The registered approval API keys.")
+ next: Optional[StrictStr] = Field(default=None, description="Cursor for the next page of results. Pass it back as the `pageCursor` query param to fetch the next page. Empty or absent when this is the last page.")
+ __properties: ClassVar[List[str]] = ["data", "next"]
+
+ model_config = ConfigDict(
+ populate_by_name=True,
+ validate_assignment=True,
+ protected_namespaces=(),
+ )
+
+
+ def to_str(self) -> str:
+ """Returns the string representation of the model using alias"""
+ return pprint.pformat(self.model_dump(by_alias=True))
+
+ def to_json(self) -> str:
+ """Returns the JSON representation of the model using alias"""
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
+ return json.dumps(self.to_dict())
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Optional[Self]:
+ """Create an instance of ListApprovalApiKeysResponse from a JSON string"""
+ return cls.from_dict(json.loads(json_str))
+
+ def to_dict(self) -> Dict[str, Any]:
+ """Return the dictionary representation of the model using alias.
+
+ This has the following differences from calling pydantic's
+ `self.model_dump(by_alias=True)`:
+
+ * `None` is only added to the output dict for nullable fields that
+ were set at model initialization. Other fields with value `None`
+ are ignored.
+ """
+ excluded_fields: Set[str] = set([
+ ])
+
+ _dict = self.model_dump(
+ by_alias=True,
+ exclude=excluded_fields,
+ exclude_none=True,
+ )
+ # override the default output from pydantic by calling `to_dict()` of each item in data (list)
+ _items = []
+ if self.data:
+ for _item_data in self.data:
+ if _item_data:
+ _items.append(_item_data.to_dict())
+ _dict['data'] = _items
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of ListApprovalApiKeysResponse from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "data": [ApprovalApiKey.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
+ "next": obj.get("next")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/parameter_with_value.py b/fireblocks/models/parameter_with_value.py
index a8e1b06f..3c62829b 100644
--- a/fireblocks/models/parameter_with_value.py
+++ b/fireblocks/models/parameter_with_value.py
@@ -33,7 +33,7 @@ class ParameterWithValue(BaseModel):
internal_type: Optional[StrictStr] = Field(default=None, description="The internal type of the parameter as it appears in the ABI", alias="internalType")
type: StrictStr = Field(description="The type of the parameter as it appears in the ABI")
components: Optional[List[Parameter]] = None
- value: Optional[StrictStr] = Field(default=None, description="The value of the parameter. can also be ParameterWithValue")
+ value: Optional[Any] = Field(default=None, description="The value of the parameter. The shape follows the ABI `type`: a string for `string`/`address`/`bytes*`, a number for `uint*`/`int*`, a boolean for `bool`, an array for `T[]`, and for `tuple` an array of nested ParameterWithValue objects (one per entry in `components`, in ABI order).")
function_value: Optional[LeanAbiFunction] = Field(default=None, description="The function value of this param (if has one). If this is set, the `value` shouldn`t be. Used for proxies", alias="functionValue")
__properties: ClassVar[List[str]] = ["name", "description", "internalType", "type", "components", "value", "functionValue"]
@@ -86,6 +86,11 @@ def to_dict(self) -> Dict[str, Any]:
# override the default output from pydantic by calling `to_dict()` of function_value
if self.function_value:
_dict['functionValue'] = self.function_value.to_dict()
+ # set to None if value (nullable) is None
+ # and model_fields_set contains the field
+ if self.value is None and "value" in self.model_fields_set:
+ _dict['value'] = None
+
return _dict
@classmethod
diff --git a/fireblocks/models/register_approval_api_key_request.py b/fireblocks/models/register_approval_api_key_request.py
new file mode 100644
index 00000000..19657495
--- /dev/null
+++ b/fireblocks/models/register_approval_api_key_request.py
@@ -0,0 +1,94 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from pydantic import BaseModel, ConfigDict, Field, StrictStr
+from typing import Any, ClassVar, Dict, List
+from fireblocks.models.approval_api_public_key import ApprovalApiPublicKey
+from typing import Optional, Set
+from typing_extensions import Self
+
+class RegisterApprovalApiKeyRequest(BaseModel):
+ """
+ The approval API key to register.
+ """ # noqa: E501
+ name: StrictStr = Field(description="A human-readable label for the key.")
+ approval_api_public_key: ApprovalApiPublicKey = Field(alias="approvalApiPublicKey")
+ __properties: ClassVar[List[str]] = ["name", "approvalApiPublicKey"]
+
+ 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 RegisterApprovalApiKeyRequest 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 approval_api_public_key
+ if self.approval_api_public_key:
+ _dict['approvalApiPublicKey'] = self.approval_api_public_key.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of RegisterApprovalApiKeyRequest from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "name": obj.get("name"),
+ "approvalApiPublicKey": ApprovalApiPublicKey.from_dict(obj["approvalApiPublicKey"]) if obj.get("approvalApiPublicKey") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/register_approval_api_key_response.py b/fireblocks/models/register_approval_api_key_response.py
new file mode 100644
index 00000000..612cedde
--- /dev/null
+++ b/fireblocks/models/register_approval_api_key_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 RegisterApprovalApiKeyResponse(BaseModel):
+ """
+ The result of registering an approval API key.
+ """ # noqa: E501
+ key_id: StrictStr = Field(description="The server-generated ID of the registered key, used for deletion.", alias="keyId")
+ __properties: ClassVar[List[str]] = ["keyId"]
+
+ 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 RegisterApprovalApiKeyResponse 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 RegisterApprovalApiKeyResponse from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "keyId": obj.get("keyId")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/risk_level_enum.py b/fireblocks/models/risk_level_enum.py
new file mode 100644
index 00000000..54ff22d9
--- /dev/null
+++ b/fireblocks/models/risk_level_enum.py
@@ -0,0 +1,41 @@
+# 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 RiskLevelEnum(str, Enum):
+ """
+ The provider's risk assessment for a step, normalised across connectors. `null` on a step that did not reach the provider — the absence of a risk level is not the same as low risk.
+ """
+
+ """
+ allowed enum values
+ """
+ SEVERE = 'SEVERE'
+ HIGH = 'HIGH'
+ MEDIUM = 'MEDIUM'
+ LOW = 'LOW'
+ UNKNOWN = 'UNKNOWN'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of RiskLevelEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/rule.py b/fireblocks/models/rule.py
new file mode 100644
index 00000000..7212c435
--- /dev/null
+++ b/fireblocks/models/rule.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, StrictInt, StrictStr
+from typing import Any, ClassVar, Dict, List, Optional
+from fireblocks.models.rule_action_enum import RuleActionEnum
+from fireblocks.models.rule_condition import RuleCondition
+from typing import Optional, Set
+from typing_extensions import Self
+
+class Rule(BaseModel):
+ """
+ A single rule within a rule set. The first rule whose conditions match wins, and its `ruleAction` is applied.
+ """ # noqa: E501
+ rule_id: Optional[StrictStr] = Field(default=None, description="UUID, unique within the rule set.", alias="ruleId")
+ conditions: Optional[List[RuleCondition]] = Field(default=None, description="Conditions AND-ed together within this rule.")
+ rule_action: Optional[RuleActionEnum] = Field(default=None, alias="ruleAction")
+ order: Optional[StrictInt] = Field(default=None, description="Zero-based evaluation order among the rule set's rules, lowest first.")
+ title: Optional[StrictStr] = Field(default=None, description="User-facing label for the rule. Cosmetic only — not read by rule evaluation.")
+ __properties: ClassVar[List[str]] = ["ruleId", "conditions", "ruleAction", "order", "title"]
+
+ 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 Rule 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 conditions (list)
+ _items = []
+ if self.conditions:
+ for _item_conditions in self.conditions:
+ if _item_conditions:
+ _items.append(_item_conditions.to_dict())
+ _dict['conditions'] = _items
+ # set to None if title (nullable) is None
+ # and model_fields_set contains the field
+ if self.title is None and "title" in self.model_fields_set:
+ _dict['title'] = None
+
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of Rule from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "ruleId": obj.get("ruleId"),
+ "conditions": [RuleCondition.from_dict(_item) for _item in obj["conditions"]] if obj.get("conditions") is not None else None,
+ "ruleAction": obj.get("ruleAction"),
+ "order": obj.get("order"),
+ "title": obj.get("title")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/rule_action_enum.py b/fireblocks/models/rule_action_enum.py
new file mode 100644
index 00000000..137a2339
--- /dev/null
+++ b/fireblocks/models/rule_action_enum.py
@@ -0,0 +1,43 @@
+# 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 RuleActionEnum(str, Enum):
+ """
+ What happens when a rule matches. Which values are legal depends on the rule set the rule belongs to — a trigger rule decides whether to screen, an outcome rule decides what the answer means. The enum is the union of both sets, so neither set accepts all of its values: `FREEZE` is the one value shared by the two, and every other value belongs to exactly one of them. Trigger rules: - `SCREEN` — call the connector - `PASS` — let the subject through without screening - `FREEZE` — hold for manual action Outcome rules: - `ACCEPT` — the step passes - `REJECT` — the step fails - `ALERT` — the step passes but is flagged for review - `FREEZE` — hold for manual action - `WAIT` — come back later; refused once the deadline has passed
+ """
+
+ """
+ allowed enum values
+ """
+ SCREEN = 'SCREEN'
+ PASS = 'PASS'
+ FREEZE = 'FREEZE'
+ ACCEPT = 'ACCEPT'
+ REJECT = 'REJECT'
+ ALERT = 'ALERT'
+ WAIT = 'WAIT'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of RuleActionEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/rule_condition.py b/fireblocks/models/rule_condition.py
new file mode 100644
index 00000000..2c9e4d84
--- /dev/null
+++ b/fireblocks/models/rule_condition.py
@@ -0,0 +1,93 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from pydantic import BaseModel, ConfigDict, Field, StrictStr
+from typing import Any, ClassVar, Dict, List
+from fireblocks.models.rule_condition_operator_enum import RuleConditionOperatorEnum
+from typing import Optional, Set
+from typing_extensions import Self
+
+class RuleCondition(BaseModel):
+ """
+ A single condition within a rule. Conditions within a rule are AND-ed together.
+ """ # noqa: E501
+ var_field: StrictStr = Field(description="The input context field this condition tests. Allowed values depend on the rule set type (trigger vs. outcome) and the step's connector/operation.", alias="field")
+ operator: RuleConditionOperatorEnum
+ value: StrictStr = Field(description="The value `field` is compared against, using `operator`.")
+ __properties: ClassVar[List[str]] = ["field", "operator", "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 RuleCondition 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 RuleCondition from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "field": obj.get("field"),
+ "operator": obj.get("operator"),
+ "value": obj.get("value")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/rule_condition_operator_enum.py b/fireblocks/models/rule_condition_operator_enum.py
new file mode 100644
index 00000000..8f7ec59d
--- /dev/null
+++ b/fireblocks/models/rule_condition_operator_enum.py
@@ -0,0 +1,42 @@
+# 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 RuleConditionOperatorEnum(str, Enum):
+ """
+ The comparison applied between a rule condition's `field` and its `value`.
+ """
+
+ """
+ allowed enum values
+ """
+ EQUALS = 'EQUALS'
+ NOT_EQUALS = 'NOT_EQUALS'
+ GT = 'GT'
+ GTE = 'GTE'
+ LT = 'LT'
+ LTE = 'LTE'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of RuleConditionOperatorEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/rule_set.py b/fireblocks/models/rule_set.py
new file mode 100644
index 00000000..9a1d4c91
--- /dev/null
+++ b/fireblocks/models/rule_set.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, Optional
+from fireblocks.models.rule import Rule
+from typing import Optional, Set
+from typing_extensions import Self
+
+class RuleSet(BaseModel):
+ """
+ An ordered set of rules. Rules are evaluated top to bottom, and the first one that matches wins.
+ """ # noqa: E501
+ rules: Optional[List[Optional[Rule]]] = Field(default=None, description="Ordered rule list, evaluated top to bottom; the first match wins.")
+ __properties: ClassVar[List[str]] = ["rules"]
+
+ 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 RuleSet 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 rules (list)
+ _items = []
+ if self.rules:
+ for _item_rules in self.rules:
+ if _item_rules:
+ _items.append(_item_rules.to_dict())
+ _dict['rules'] = _items
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of RuleSet from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "rules": [Rule.from_dict(_item) for _item in obj["rules"]] if obj.get("rules") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/screening_input.py b/fireblocks/models/screening_input.py
new file mode 100644
index 00000000..799185f1
--- /dev/null
+++ b/fireblocks/models/screening_input.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
+from typing import Any, ClassVar, Dict, List
+from typing_extensions import Annotated
+from fireblocks.models.screening_operation_enum import ScreeningOperationEnum
+from fireblocks.models.screening_payload import ScreeningPayload
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ScreeningInput(BaseModel):
+ """
+ What the caller wants screened, and how.
+ """ # noqa: E501
+ operation: ScreeningOperationEnum
+ payload: Annotated[List[ScreeningPayload], Field(min_length=1, max_length=100)] = Field(description="The screening subjects. Up to 100 per request — the provider's own batch limit for address screening — so a bulk check does not need one call per address.")
+ __properties: ClassVar[List[str]] = ["operation", "payload"]
+
+ 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 ScreeningInput 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 payload (list)
+ _items = []
+ if self.payload:
+ for _item_payload in self.payload:
+ if _item_payload:
+ _items.append(_item_payload.to_dict())
+ _dict['payload'] = _items
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of ScreeningInput from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "operation": obj.get("operation"),
+ "payload": [ScreeningPayload.from_dict(_item) for _item in obj["payload"]] if obj.get("payload") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/screening_operation_enum.py b/fireblocks/models/screening_operation_enum.py
new file mode 100644
index 00000000..d2bab786
--- /dev/null
+++ b/fireblocks/models/screening_operation_enum.py
@@ -0,0 +1,39 @@
+# 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 ScreeningOperationEnum(str, Enum):
+ """
+ What the caller wants Compliance Orchestrator to do. The target workflow must have a step configured for the operation; the error names the supported set when it does not. - `ADDRESS_SCREENING` — screen an address on its own, before anything exists on-chain. Answers whether the address itself carries risk. - `TRANSACTION_SCREENING` — screen a whole transfer: source and destination, amount and direction, not the destination alone. - `REGISTER_TRANSACTION` — record a confirmed transfer with the provider for ongoing monitoring. Not a gate: it files the transfer so the provider's own rules can raise alerts later, which is what feeds its AML model.
+ """
+
+ """
+ allowed enum values
+ """
+ ADDRESS_SCREENING = 'ADDRESS_SCREENING'
+ TRANSACTION_SCREENING = 'TRANSACTION_SCREENING'
+ REGISTER_TRANSACTION = 'REGISTER_TRANSACTION'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of ScreeningOperationEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/screening_outcome_enum.py b/fireblocks/models/screening_outcome_enum.py
new file mode 100644
index 00000000..074248ac
--- /dev/null
+++ b/fireblocks/models/screening_outcome_enum.py
@@ -0,0 +1,38 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import json
+from enum import Enum
+from typing_extensions import Self
+
+
+class ScreeningOutcomeEnum(str, Enum):
+ """
+ An `ACCEPT`/`REJECT` decision — the workflow's own outcome, a step's outcome, or the result of evaluating a step's outcome rules. `null` on a workflow outcome that is not decided yet.
+ """
+
+ """
+ allowed enum values
+ """
+ ACCEPT = 'ACCEPT'
+ REJECT = 'REJECT'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of ScreeningOutcomeEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/screening_payload.py b/fireblocks/models/screening_payload.py
new file mode 100644
index 00000000..a99bc166
--- /dev/null
+++ b/fireblocks/models/screening_payload.py
@@ -0,0 +1,109 @@
+# 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.transfer_direction_enum import TransferDirectionEnum
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ScreeningPayload(BaseModel):
+ """
+ The subject of the screening. Which fields are required depends on the operation and on the connectors configured on the workflow's step.
+ """ # noqa: E501
+ blockchain: Optional[StrictStr] = Field(default=None, description="The blockchain network of the asset being screened.")
+ asset: Optional[StrictStr] = Field(default=None, description="The asset identifier being screened.")
+ asset_amount: Optional[StrictStr] = Field(default=None, description="The amount of the asset involved in the transaction, as a string.", alias="assetAmount")
+ usd_value: Optional[StrictStr] = Field(default=None, description="The USD value of the transaction amount, as a string.", alias="usdValue")
+ customer_ref_id: Optional[StrictStr] = Field(default=None, description="Customer-provided reference identifier for tracking.", alias="customerRefId")
+ external_id: Optional[StrictStr] = Field(default=None, description="External identifier for the screening (provider-specific).", alias="externalId")
+ address: Optional[StrictStr] = Field(default=None, description="The blockchain address to screen. Used for the `ADDRESS_SCREENING` operation.")
+ direction: Optional[TransferDirectionEnum] = None
+ source_address: Optional[List[StrictStr]] = Field(default=None, description="The source blockchain address(es) of the transaction.", alias="sourceAddress")
+ destination_address: Optional[List[StrictStr]] = Field(default=None, description="The destination blockchain address(es) of the transaction.", alias="destinationAddress")
+ tx_hash: Optional[StrictStr] = Field(default=None, description="The transaction hash on the blockchain.", alias="txHash")
+ __properties: ClassVar[List[str]] = ["blockchain", "asset", "assetAmount", "usdValue", "customerRefId", "externalId", "address", "direction", "sourceAddress", "destinationAddress", "txHash"]
+
+ 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 ScreeningPayload 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 ScreeningPayload from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "blockchain": obj.get("blockchain"),
+ "asset": obj.get("asset"),
+ "assetAmount": obj.get("assetAmount"),
+ "usdValue": obj.get("usdValue"),
+ "customerRefId": obj.get("customerRefId"),
+ "externalId": obj.get("externalId"),
+ "address": obj.get("address"),
+ "direction": obj.get("direction"),
+ "sourceAddress": obj.get("sourceAddress"),
+ "destinationAddress": obj.get("destinationAddress"),
+ "txHash": obj.get("txHash")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/step_config.py b/fireblocks/models/step_config.py
new file mode 100644
index 00000000..def985f2
--- /dev/null
+++ b/fireblocks/models/step_config.py
@@ -0,0 +1,102 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
+from typing import Any, ClassVar, Dict, List
+from fireblocks.models.step_operation_config import StepOperationConfig
+from typing import Optional, Set
+from typing_extensions import Self
+
+class StepConfig(BaseModel):
+ """
+ One step in a workflow, backed by a single connector. A connector is the compliance provider integration that does the work — `kyt_trmlabs` is TRM Labs. The step declares which operations that connector handles; a screening naming an operation no step is configured for is refused, and the error reports the supported set.
+ """ # noqa: E501
+ step_id: StrictStr = Field(description="Unique within the workflow.", alias="stepId")
+ connector_id: StrictStr = Field(description="Identifies which connector this step invokes.", alias="connectorId")
+ operations: List[StepOperationConfig] = Field(description="One entry per operation the step's connector handles.")
+ order: StrictInt = Field(description="Execution order among the workflow's steps, lowest first.")
+ __properties: ClassVar[List[str]] = ["stepId", "connectorId", "operations", "order"]
+
+ 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 StepConfig 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 operations (list)
+ _items = []
+ if self.operations:
+ for _item_operations in self.operations:
+ if _item_operations:
+ _items.append(_item_operations.to_dict())
+ _dict['operations'] = _items
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of StepConfig from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "stepId": obj.get("stepId"),
+ "connectorId": obj.get("connectorId"),
+ "operations": [StepOperationConfig.from_dict(_item) for _item in obj["operations"]] if obj.get("operations") is not None else None,
+ "order": obj.get("order")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/step_operation_config.py b/fireblocks/models/step_operation_config.py
new file mode 100644
index 00000000..953b7f08
--- /dev/null
+++ b/fireblocks/models/step_operation_config.py
@@ -0,0 +1,124 @@
+# 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.rule_set import RuleSet
+from fireblocks.models.screening_operation_enum import ScreeningOperationEnum
+from typing import Optional, Set
+from typing_extensions import Self
+
+class StepOperationConfig(BaseModel):
+ """
+ Configuration for one operation the step's connector handles. The operation arrives on the screening request; the connector decides how to handle it. Two rule sets govern the step, and both are configured here rather than sent per request, so the same call behaves differently across workflows. Trigger rules decide whether the connector runs at all; outcome rules turn the provider's response into the step's verdict. With neither configured the step runs under the connector's own defaults, which for `kyt_trmlabs` are permissive: the screening completes without consulting the provider. The four parameter lists are the contract for writing those rules: a rule naming a field outside `triggerRuleParameters` or `outcomeEvaluationParameters` is rejected. They are derived from the connector registry rather than stored, so a connector gaining a field is reflected here without a migration.
+ """ # noqa: E501
+ operation: Optional[ScreeningOperationEnum] = None
+ required_parameters: Optional[List[StrictStr]] = Field(default=None, description="Resolved server-side on every `GetWorkflow` call from the step's connector definition for this operation. Read-only: ignored on write.", alias="requiredParameters")
+ optional_parameters: Optional[List[StrictStr]] = Field(default=None, description="Like `requiredParameters`, but optional inputs to the operation.", alias="optionalParameters")
+ trigger_rule_parameters: Optional[List[StrictStr]] = Field(default=None, description="Fields a condition in `triggerRuleSetStruct` may reference.", alias="triggerRuleParameters")
+ outcome_evaluation_parameters: Optional[List[StrictStr]] = Field(default=None, description="Provider response fields a condition in `outcomeRuleSetStruct` may reference.", alias="outcomeEvaluationParameters")
+ outcome_meta_parameters: Optional[List[StrictStr]] = Field(default=None, description="Additional provider response fields returned with the result; not usable in `outcomeRuleSetStruct` conditions.", alias="outcomeMetaParameters")
+ trigger_rule_set_struct: Optional[RuleSet] = Field(default=None, alias="triggerRuleSetStruct")
+ trigger_rule_set_json: Optional[StrictStr] = Field(default=None, description="The tenant's trigger rules, as a JSON-encoded string. Set for steps whose rules are still defined as a legacy screening policy rather than natively in Compliance Orchestrator, and refreshed on every read. Mutually exclusive with `triggerRuleSetStruct`.", alias="triggerRuleSetJson")
+ outcome_rule_set_struct: Optional[RuleSet] = Field(default=None, alias="outcomeRuleSetStruct")
+ outcome_rule_set_json: Optional[StrictStr] = Field(default=None, description="The tenant's outcome rules, as a JSON-encoded string. Set for steps whose rules are still defined as a legacy screening policy rather than natively in Compliance Orchestrator, and refreshed on every read. Mutually exclusive with `outcomeRuleSetStruct`.", alias="outcomeRuleSetJson")
+ __properties: ClassVar[List[str]] = ["operation", "requiredParameters", "optionalParameters", "triggerRuleParameters", "outcomeEvaluationParameters", "outcomeMetaParameters", "triggerRuleSetStruct", "triggerRuleSetJson", "outcomeRuleSetStruct", "outcomeRuleSetJson"]
+
+ 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 StepOperationConfig 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 trigger_rule_set_struct
+ if self.trigger_rule_set_struct:
+ _dict['triggerRuleSetStruct'] = self.trigger_rule_set_struct.to_dict()
+ # override the default output from pydantic by calling `to_dict()` of outcome_rule_set_struct
+ if self.outcome_rule_set_struct:
+ _dict['outcomeRuleSetStruct'] = self.outcome_rule_set_struct.to_dict()
+ # set to None if trigger_rule_set_json (nullable) is None
+ # and model_fields_set contains the field
+ if self.trigger_rule_set_json is None and "trigger_rule_set_json" in self.model_fields_set:
+ _dict['triggerRuleSetJson'] = None
+
+ # set to None if outcome_rule_set_json (nullable) is None
+ # and model_fields_set contains the field
+ if self.outcome_rule_set_json is None and "outcome_rule_set_json" in self.model_fields_set:
+ _dict['outcomeRuleSetJson'] = None
+
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of StepOperationConfig from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "operation": obj.get("operation"),
+ "requiredParameters": obj.get("requiredParameters"),
+ "optionalParameters": obj.get("optionalParameters"),
+ "triggerRuleParameters": obj.get("triggerRuleParameters"),
+ "outcomeEvaluationParameters": obj.get("outcomeEvaluationParameters"),
+ "outcomeMetaParameters": obj.get("outcomeMetaParameters"),
+ "triggerRuleSetStruct": RuleSet.from_dict(obj["triggerRuleSetStruct"]) if obj.get("triggerRuleSetStruct") is not None else None,
+ "triggerRuleSetJson": obj.get("triggerRuleSetJson"),
+ "outcomeRuleSetStruct": RuleSet.from_dict(obj["outcomeRuleSetStruct"]) if obj.get("outcomeRuleSetStruct") is not None else None,
+ "outcomeRuleSetJson": obj.get("outcomeRuleSetJson")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/step_result.py b/fireblocks/models/step_result.py
new file mode 100644
index 00000000..237a0492
--- /dev/null
+++ b/fireblocks/models/step_result.py
@@ -0,0 +1,173 @@
+# 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.bypass_reason_enum import BypassReasonEnum
+from fireblocks.models.connector_status_enum import ConnectorStatusEnum
+from fireblocks.models.connector_verdict_enum import ConnectorVerdictEnum
+from fireblocks.models.risk_level_enum import RiskLevelEnum
+from fireblocks.models.rule import Rule
+from fireblocks.models.screening_operation_enum import ScreeningOperationEnum
+from fireblocks.models.screening_outcome_enum import ScreeningOutcomeEnum
+from fireblocks.models.trigger_rule_outcome_enum import TriggerRuleOutcomeEnum
+from typing import Optional, Set
+from typing_extensions import Self
+
+class StepResult(BaseModel):
+ """
+ The result of one workflow step's execution during a screening. Carries the step's outcome next to the two rule evaluations that produced it — which trigger rule decided the connector should run, and which outcome rule read the response — plus the provider's own verdict and risk level. A step that did not screen carries a `bypassReason` instead of a risk level. Only `PASSED_BY_POLICY` means the policy deliberately let it through; every other reason means the check could not be performed, and the step is rejected rather than passed. A bypass is not an approval.
+ """ # noqa: E501
+ step_id: StrictStr = Field(description="Identifier of this step within the workflow.", alias="stepId")
+ connector_id: StrictStr = Field(description="Identifier of the connector that executed this step.", alias="connectorId")
+ operation: ScreeningOperationEnum
+ trigger_rule_outcome: TriggerRuleOutcomeEnum = Field(alias="triggerRuleOutcome")
+ matched_trigger_rule: Optional[Rule] = Field(default=None, alias="matchedTriggerRule")
+ outcome_rule_outcome: Optional[ScreeningOutcomeEnum] = Field(alias="outcomeRuleOutcome")
+ matched_outcome_rule: Optional[Rule] = Field(default=None, alias="matchedOutcomeRule")
+ outcome: Optional[ScreeningOutcomeEnum]
+ metadata: Optional[Dict[str, Any]] = Field(default=None, description="Connector-specific data, keyed by the connector's configured outcomeMetaParameters for this operation.")
+ ticket_id: Optional[StrictStr] = Field(default=None, description="The connector-side screening ticket identifier.", alias="ticketId")
+ verdict: Optional[ConnectorVerdictEnum] = None
+ connector_status: Optional[ConnectorStatusEnum] = Field(default=None, alias="connectorStatus")
+ bypass_reason: Optional[BypassReasonEnum] = Field(default=None, alias="bypassReason")
+ risk: Optional[RiskLevelEnum] = None
+ __properties: ClassVar[List[str]] = ["stepId", "connectorId", "operation", "triggerRuleOutcome", "matchedTriggerRule", "outcomeRuleOutcome", "matchedOutcomeRule", "outcome", "metadata", "ticketId", "verdict", "connectorStatus", "bypassReason", "risk"]
+
+ 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 StepResult 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 matched_trigger_rule
+ if self.matched_trigger_rule:
+ _dict['matchedTriggerRule'] = self.matched_trigger_rule.to_dict()
+ # override the default output from pydantic by calling `to_dict()` of matched_outcome_rule
+ if self.matched_outcome_rule:
+ _dict['matchedOutcomeRule'] = self.matched_outcome_rule.to_dict()
+ # set to None if matched_trigger_rule (nullable) is None
+ # and model_fields_set contains the field
+ if self.matched_trigger_rule is None and "matched_trigger_rule" in self.model_fields_set:
+ _dict['matchedTriggerRule'] = None
+
+ # set to None if outcome_rule_outcome (nullable) is None
+ # and model_fields_set contains the field
+ if self.outcome_rule_outcome is None and "outcome_rule_outcome" in self.model_fields_set:
+ _dict['outcomeRuleOutcome'] = None
+
+ # set to None if matched_outcome_rule (nullable) is None
+ # and model_fields_set contains the field
+ if self.matched_outcome_rule is None and "matched_outcome_rule" in self.model_fields_set:
+ _dict['matchedOutcomeRule'] = None
+
+ # set to None if outcome (nullable) is None
+ # and model_fields_set contains the field
+ if self.outcome is None and "outcome" in self.model_fields_set:
+ _dict['outcome'] = None
+
+ # set to None if ticket_id (nullable) is None
+ # and model_fields_set contains the field
+ if self.ticket_id is None and "ticket_id" in self.model_fields_set:
+ _dict['ticketId'] = None
+
+ # set to None if verdict (nullable) is None
+ # and model_fields_set contains the field
+ if self.verdict is None and "verdict" in self.model_fields_set:
+ _dict['verdict'] = None
+
+ # set to None if connector_status (nullable) is None
+ # and model_fields_set contains the field
+ if self.connector_status is None and "connector_status" in self.model_fields_set:
+ _dict['connectorStatus'] = None
+
+ # set to None if bypass_reason (nullable) is None
+ # and model_fields_set contains the field
+ if self.bypass_reason is None and "bypass_reason" in self.model_fields_set:
+ _dict['bypassReason'] = None
+
+ # set to None if risk (nullable) is None
+ # and model_fields_set contains the field
+ if self.risk is None and "risk" in self.model_fields_set:
+ _dict['risk'] = None
+
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of StepResult from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "stepId": obj.get("stepId"),
+ "connectorId": obj.get("connectorId"),
+ "operation": obj.get("operation"),
+ "triggerRuleOutcome": obj.get("triggerRuleOutcome"),
+ "matchedTriggerRule": Rule.from_dict(obj["matchedTriggerRule"]) if obj.get("matchedTriggerRule") is not None else None,
+ "outcomeRuleOutcome": obj.get("outcomeRuleOutcome"),
+ "matchedOutcomeRule": Rule.from_dict(obj["matchedOutcomeRule"]) if obj.get("matchedOutcomeRule") is not None else None,
+ "outcome": obj.get("outcome"),
+ "metadata": obj.get("metadata"),
+ "ticketId": obj.get("ticketId"),
+ "verdict": obj.get("verdict"),
+ "connectorStatus": obj.get("connectorStatus"),
+ "bypassReason": obj.get("bypassReason"),
+ "risk": obj.get("risk")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/transfer_direction_enum.py b/fireblocks/models/transfer_direction_enum.py
new file mode 100644
index 00000000..dc69ffa3
--- /dev/null
+++ b/fireblocks/models/transfer_direction_enum.py
@@ -0,0 +1,38 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import json
+from enum import Enum
+from typing_extensions import Self
+
+
+class TransferDirectionEnum(str, Enum):
+ """
+ A transfer's direction relative to the workspace. Set for `TRANSACTION_SCREENING` and `REGISTER_TRANSACTION`; it has no meaning for `ADDRESS_SCREENING`, which screens an address on its own.
+ """
+
+ """
+ allowed enum values
+ """
+ INBOUND = 'INBOUND'
+ OUTBOUND = 'OUTBOUND'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of TransferDirectionEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/trigger_rule_outcome_enum.py b/fireblocks/models/trigger_rule_outcome_enum.py
new file mode 100644
index 00000000..34d447f9
--- /dev/null
+++ b/fireblocks/models/trigger_rule_outcome_enum.py
@@ -0,0 +1,39 @@
+# 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 TriggerRuleOutcomeEnum(str, Enum):
+ """
+ Whether the step's trigger rules caused its connector to run. This is a decision about running, not about risk — `ACCEPT`/`REJECT` belong to the outcome fields. - `EXECUTE` — a rule called for screening, so the connector ran - `PASS` — a rule let the subject through without screening - `FAIL` — the step could not run; see `bypassReason`
+ """
+
+ """
+ allowed enum values
+ """
+ EXECUTE = 'EXECUTE'
+ PASS = 'PASS'
+ FAIL = 'FAIL'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of TriggerRuleOutcomeEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/trigger_screening_request.py b/fireblocks/models/trigger_screening_request.py
new file mode 100644
index 00000000..9a14cb32
--- /dev/null
+++ b/fireblocks/models/trigger_screening_request.py
@@ -0,0 +1,94 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from pydantic import BaseModel, ConfigDict, Field, StrictStr
+from typing import Any, ClassVar, Dict, List
+from fireblocks.models.screening_input import ScreeningInput
+from typing import Optional, Set
+from typing_extensions import Self
+
+class TriggerScreeningRequest(BaseModel):
+ """
+ Request to trigger a screening against an active workflow.
+ """ # noqa: E501
+ workflow_id: StrictStr = Field(description="The workflow to screen against. Must be in `ACTIVE` status.", alias="workflowId")
+ input: ScreeningInput
+ __properties: ClassVar[List[str]] = ["workflowId", "input"]
+
+ 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 TriggerScreeningRequest 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 input
+ if self.input:
+ _dict['input'] = self.input.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of TriggerScreeningRequest from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "workflowId": obj.get("workflowId"),
+ "input": ScreeningInput.from_dict(obj["input"]) if obj.get("input") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/trigger_screening_response.py b/fireblocks/models/trigger_screening_response.py
new file mode 100644
index 00000000..085d8747
--- /dev/null
+++ b/fireblocks/models/trigger_screening_response.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
+from fireblocks.models.compliance_screening_status_enum import ComplianceScreeningStatusEnum
+from typing import Optional, Set
+from typing_extensions import Self
+
+class TriggerScreeningResponse(BaseModel):
+ """
+ Acknowledgement that a screening was accepted and is now running.
+ """ # noqa: E501
+ screening_id: StrictStr = Field(description="Identifier of the screening that was created. Poll `GET /v1/compliance/orchestrator/screenings/{screeningId}` with it for the verdict.", alias="screeningId")
+ screening_status: ComplianceScreeningStatusEnum = Field(alias="screeningStatus")
+ __properties: ClassVar[List[str]] = ["screeningId", "screeningStatus"]
+
+ 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 TriggerScreeningResponse 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 TriggerScreeningResponse from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "screeningId": obj.get("screeningId"),
+ "screeningStatus": obj.get("screeningStatus")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/update_webhook_oauth_request.py b/fireblocks/models/update_webhook_oauth_request.py
index ba31eb42..2c0e6e40 100644
--- a/fireblocks/models/update_webhook_oauth_request.py
+++ b/fireblocks/models/update_webhook_oauth_request.py
@@ -26,7 +26,7 @@
class UpdateWebhookOauthRequest(BaseModel):
"""
- A partial update. Every field is optional and an omitted field is left as it is, so `{ \"clientSecret\": \"new-secret\" }` rotates the secret and changes nothing else. A rotation applies to every webhook referencing these credentials. The three custom maps merge: a key with a value is upserted, a key with `null` is deleted, a key you leave out is untouched. Because `null` inside a map means delete, none of the three is nullable as a whole — `customJwtClaims: null` and friends are rejected with a `400`. Clear a map by naming each key with a `null` value. `mtlsClientSignedCert` is a scalar, so `null` there does remove it.
+ A partial update. Every field is optional and an omitted field is left as it is, so `{ \"clientSecret\": \"new-secret\" }` rotates the secret and changes nothing else. A rotation applies to every webhook referencing these credentials. The three custom maps merge. A key with a value is upserted, a key with `null` is deleted, a key you leave out is untouched, and the whole field set to `null` clears the map. There is no ambiguity between the two uses of `null` — one names an entry, the other names the field. `mtlsClientSignedCert` is a scalar, so `null` there removes it.
""" # noqa: E501
name: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=128)]] = Field(default=None, description="A label for this credential set. Omit to leave it unchanged.")
client_id: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=255)]] = Field(default=None, description="OAuth client ID. Omit to leave it unchanged.", alias="clientId")
@@ -35,7 +35,7 @@ class UpdateWebhookOauthRequest(BaseModel):
auth_method: Optional[StrictStr] = Field(default=None, description="`client_secret_basic`, `client_secret_post` or `client_secret_jwt`. Omit to leave it unchanged — it does not revert to the default.", alias="authMethod")
custom_jwt_claims: Optional[Dict[str, Any]] = Field(default=None, description="A delta applied to the JWT assertion claims. A claim with a value is added or replaced, a claim with `null` is deleted, and a claim you leave out is untouched. So `{ \"aud\": \"https://auth.example.com\", \"resource\": null }` sets `aud`, drops `resource`, and changes nothing else. Send `customJwtClaims: null` to clear every claim in one call. That does not collide with a `null` value on a name: one names the claim to delete, the other names the whole field. Same rules as on create: any JSON type except `null`, `iss`/`sub`/`jti`/`iat`/`exp` reserved, names case-sensitive, resulting set under 16 KB, values write-only.", alias="customJwtClaims")
custom_body_params: Optional[Dict[str, Optional[StrictStr]]] = Field(default=None, description="A delta applied to the token request body parameters. A parameter with a value is added or replaced, a parameter with `null` is deleted, and one you leave out is untouched. So `{ \"scope\": \"payments.read\", \"audience\": null }` sets `scope`, drops `audience`, and changes nothing else. Send `customBodyParams: null` to clear every parameter in one call. That does not collide with a `null` value on a name: one names the parameter to delete, the other names the whole field. Same rules as on create: string values only, `grant_type`/`client_id`/`client_secret`/ `client_assertion`/`client_assertion_type` reserved, names case-sensitive, resulting set under 16 KB, values write-only.", alias="customBodyParams")
- custom_headers: Optional[Dict[str, Optional[StrictStr]]] = Field(default=None, description="A delta applied to the token request headers — not the webhook delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. So `{ \"X-Api-Key\": \"new-key\", \"X-Tenant\": null }` rotates `X-Api-Key`, drops `X-Tenant`, and changes nothing else. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another, and names are stored and returned lowercased. Same rules as on create: string values only, `Content-Type`/`Content-Length`/`Host` reserved, resulting set under 16 KB, values write-only.", alias="customHeaders")
+ custom_headers: Optional[Dict[str, Optional[StrictStr]]] = Field(default=None, description="A delta applied to the token request headers — not the webhook delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. So `{ \"X-Api-Key\": \"new-key\", \"X-Tenant\": null }` rotates `X-Api-Key`, drops `X-Tenant`, and changes nothing else. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another, and names are stored and returned lowercased. Same rules as on create: string values only, `Content-Type`, `Content-Length` and `Host` reserved, `Authorization` only with `client_secret_post` or `client_secret_jwt`, resulting set under 16 KB, values write-only.", alias="customHeaders")
mtls_client_signed_cert: Optional[StrictStr] = Field(default=None, description="PEM-encoded client certificate for mTLS. Must be a valid X.509 certificate inside its validity window. Omit to leave it unchanged, or send `null` to remove it.", alias="mtlsClientSignedCert")
__properties: ClassVar[List[str]] = ["name", "clientId", "clientSecret", "url", "authMethod", "customJwtClaims", "customBodyParams", "customHeaders", "mtlsClientSignedCert"]
diff --git a/fireblocks/models/update_webhook_request.py b/fireblocks/models/update_webhook_request.py
index e6a58fd3..873cecd7 100644
--- a/fireblocks/models/update_webhook_request.py
+++ b/fireblocks/models/update_webhook_request.py
@@ -35,8 +35,8 @@ class UpdateWebhookRequest(BaseModel):
events: Optional[List[WebhookEvent]] = Field(default=None, description="The events that the webhook will be subscribed to")
enabled: Optional[StrictBool] = Field(default=None, description="The status of the webhook")
mtls: Optional[WebhookMtls] = None
- webhook_oauth_id: Optional[StrictStr] = Field(default=None, description="The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook.", alias="webhookOauthId")
- custom_headers: Optional[Dict[str, Any]] = Field(default=None, description="A delta applied to the delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. A value replaces what is stored under that name rather than adding to it, so an array is the complete new set of lines for that header. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another. Same rules as on create: string or non-empty array, `Cookie` string-only, 10 lines total and under 16 KB in the resulting set, the same reserved names, and values write-only. Entries set to `null` do not count towards the limit.", alias="customHeaders")
+ webhook_oauth_id: Optional[StrictStr] = Field(default=None, description="The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook. Cannot be combined with an `authorization` custom header on the same webhook; a request that would leave both set is rejected.", alias="webhookOauthId")
+ custom_headers: Optional[Dict[str, Any]] = Field(default=None, description="A delta applied to the delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. A value replaces what is stored under that name rather than adding to it, so an array is the complete new set of lines for that header. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another. Same rules as on create: string or non-empty array, `Cookie` and `Authorization` string-only, 10 headers and under 16 KB in the resulting set, the same reserved names, and values write-only. Entries set to `null` do not count towards the limit. `Authorization` cannot be combined with `webhookOauthId`, though one request may add it and detach the credentials together.", alias="customHeaders")
__properties: ClassVar[List[str]] = ["url", "description", "events", "enabled", "mtls", "webhookOauthId", "customHeaders"]
model_config = ConfigDict(
diff --git a/fireblocks/models/update_workflow_status_request.py b/fireblocks/models/update_workflow_status_request.py
new file mode 100644
index 00000000..4bd7d89d
--- /dev/null
+++ b/fireblocks/models/update_workflow_status_request.py
@@ -0,0 +1,89 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from pydantic import BaseModel, ConfigDict
+from typing import Any, ClassVar, Dict, List
+from fireblocks.models.workflow_status_enum import WorkflowStatusEnum
+from typing import Optional, Set
+from typing_extensions import Self
+
+class UpdateWorkflowStatusRequest(BaseModel):
+ """
+ Request to change a workflow's status.
+ """ # noqa: E501
+ status: WorkflowStatusEnum
+ __properties: ClassVar[List[str]] = ["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 UpdateWorkflowStatusRequest 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 UpdateWorkflowStatusRequest from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "status": obj.get("status")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/update_workflow_status_response.py b/fireblocks/models/update_workflow_status_response.py
new file mode 100644
index 00000000..1994f21c
--- /dev/null
+++ b/fireblocks/models/update_workflow_status_response.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
+from fireblocks.models.workflow_status_enum import WorkflowStatusEnum
+from typing import Optional, Set
+from typing_extensions import Self
+
+class UpdateWorkflowStatusResponse(BaseModel):
+ """
+ The workflow's status after the update.
+ """ # noqa: E501
+ workflow_id: StrictStr = Field(description="Unique identifier of the workflow.", alias="workflowId")
+ status: WorkflowStatusEnum
+ __properties: ClassVar[List[str]] = ["workflowId", "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 UpdateWorkflowStatusResponse 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 UpdateWorkflowStatusResponse from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "workflowId": obj.get("workflowId"),
+ "status": obj.get("status")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/webhook_mtls_csr_response.py b/fireblocks/models/webhook_mtls_csr_response.py
index c7e78f4b..488cc4ef 100644
--- a/fireblocks/models/webhook_mtls_csr_response.py
+++ b/fireblocks/models/webhook_mtls_csr_response.py
@@ -20,6 +20,7 @@
from pydantic import BaseModel, ConfigDict, Field, StrictStr
from typing import Any, ClassVar, Dict, List
+from fireblocks.models.webhook_mtls_key_algorithm import WebhookMtlsKeyAlgorithm
from typing import Optional, Set
from typing_extensions import Self
@@ -28,7 +29,8 @@ class WebhookMtlsCsrResponse(BaseModel):
mTLS Certificate Signing Request response
""" # noqa: E501
csr: StrictStr = Field(description="The Fireblocks PEM-encoded Certificate Signing Request (CSR).")
- __properties: ClassVar[List[str]] = ["csr"]
+ key_algorithm: WebhookMtlsKeyAlgorithm = Field(alias="keyAlgorithm")
+ __properties: ClassVar[List[str]] = ["csr", "keyAlgorithm"]
model_config = ConfigDict(
populate_by_name=True,
@@ -81,7 +83,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
return cls.model_validate(obj)
_obj = cls.model_validate({
- "csr": obj.get("csr")
+ "csr": obj.get("csr"),
+ "keyAlgorithm": obj.get("keyAlgorithm")
})
return _obj
diff --git a/fireblocks/models/webhook_mtls_key_algorithm.py b/fireblocks/models/webhook_mtls_key_algorithm.py
new file mode 100644
index 00000000..257a72ab
--- /dev/null
+++ b/fireblocks/models/webhook_mtls_key_algorithm.py
@@ -0,0 +1,38 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import json
+from enum import Enum
+from typing_extensions import Self
+
+
+class WebhookMtlsKeyAlgorithm(str, Enum):
+ """
+ Algorithm of the Fireblocks-held mTLS private key. A workspace may hold one key of each type, so a CSR is always returned for the type requested, and the type is echoed back on the response. ECDSA keys are smaller and quicker to issue, but the certificate authority signing the request has to accept an EC subject key, which some do not by default.
+ """
+
+ """
+ allowed enum values
+ """
+ RSA = 'RSA'
+ ECDSA = 'ECDSA'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of WebhookMtlsKeyAlgorithm from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/webhook_oauth_credentials.py b/fireblocks/models/webhook_oauth_credentials.py
index ad006d1a..221b9435 100644
--- a/fireblocks/models/webhook_oauth_credentials.py
+++ b/fireblocks/models/webhook_oauth_credentials.py
@@ -25,7 +25,7 @@
class WebhookOauthCredentials(BaseModel):
"""
- A stored OAuth 2.0 client credential set, referenced by webhooks through their `webhookOauthId`. When a webhook references one, the dispatcher fetches a bearer token from `url` before each delivery and attaches it as `Authorization: Bearer {token}`. Secret material is never returned: `clientSecret` is absent from this schema entirely, and the `customJwtClaims`, `customBodyParams` and `customHeaders` fields are reduced to their names, without the configured values.
+ A stored OAuth 2.0 client credential set, referenced by webhooks through their `webhookOauthId`. Deliveries for a webhook that references one carry `Authorization: Bearer {token}`, using a token fetched from `url` and cached until it expires, so your authorization server sees far fewer token requests than deliveries. Secret material is never returned: `clientSecret` is absent from this schema entirely, and the `customJwtClaims`, `customBodyParams` and `customHeaders` fields are reduced to their names, without the configured values.
""" # noqa: E501
id: StrictStr = Field(description="The id of the OAuth credentials. Pass this as a webhook's `webhookOauthId` to attach them.")
name: StrictStr = Field(description="The label given to this credential set.")
diff --git a/fireblocks/models/workflow_status_enum.py b/fireblocks/models/workflow_status_enum.py
new file mode 100644
index 00000000..f76e3e7a
--- /dev/null
+++ b/fireblocks/models/workflow_status_enum.py
@@ -0,0 +1,38 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import json
+from enum import Enum
+from typing_extensions import Self
+
+
+class WorkflowStatusEnum(str, Enum):
+ """
+ A workflow's status, which controls whether it can be screened against. - `DRAFT` — the editing state. Rules can be changed while nothing is screening against them, so a screening never runs against a half-finished configuration. - `ACTIVE` — `POST /v1/compliance/orchestrator/screenings` accepts screenings against this workflow.
+ """
+
+ """
+ allowed enum values
+ """
+ ACTIVE = 'ACTIVE'
+ DRAFT = 'DRAFT'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of WorkflowStatusEnum from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/pyproject.toml b/pyproject.toml
index c7b6942c..08a27f53 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "fireblocks"
-version = "31.0.0"
+version = "0.0.0"
description = "Fireblocks API"
authors = ["Fireblocks "]
license = "MIT License"
diff --git a/setup.py b/setup.py
index 01271eac..8e55f57b 100644
--- a/setup.py
+++ b/setup.py
@@ -23,7 +23,7 @@
# prerequisite: setuptools
# http://pypi.python.org/pypi/setuptools
NAME = "fireblocks"
-VERSION = "31.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 9d57db9b..a0ed765d 100644
--- a/test/fireblocks/test_client.py
+++ b/test/fireblocks/test_client.py
@@ -22,6 +22,7 @@
from fireblocks.api.blockchain_link_beta_api import BlockchainLinkBetaApi
from fireblocks.api.blockchains_assets_api import BlockchainsAssetsApi
from fireblocks.api.compliance_api import ComplianceApi
+from fireblocks.api.compliance_orchestrator_beta_api import ComplianceOrchestratorBetaApi
from fireblocks.api.compliance_screening_configuration_api import ComplianceScreeningConfigurationApi
from fireblocks.api.connected_accounts_beta_api import ConnectedAccountsBetaApi
from fireblocks.api.console_user_api import ConsoleUserApi
@@ -103,6 +104,9 @@ def test_get_blockchains_assets(fireblocks_instance):
def test_get_compliance(fireblocks_instance):
assert isinstance(fireblocks_instance.compliance, ComplianceApi)
+def test_get_compliance_orchestrator_beta(fireblocks_instance):
+ assert isinstance(fireblocks_instance.compliance_orchestrator_beta, ComplianceOrchestratorBetaApi)
+
def test_get_compliance_screening_configuration(fireblocks_instance):
assert isinstance(fireblocks_instance.compliance_screening_configuration, ComplianceScreeningConfigurationApi)
diff --git a/test/test_add_connected_account_request.py b/test/test_add_connected_account_request.py
index 656f669b..bd79d65d 100644
--- a/test/test_add_connected_account_request.py
+++ b/test/test_add_connected_account_request.py
@@ -38,7 +38,7 @@ def make_instance(self, include_optional) -> AddConnectedAccountRequest:
return AddConnectedAccountRequest(
provider_id = 'BINANCE',
display_name = 'My Binance Account',
- creds = '[B@75a2dbb3',
+ creds = '[B@17269017',
api_key = 'api_key_abc123',
main_account_id = 'acc-parent-001',
account_id = 'provider-acc-001',
@@ -47,7 +47,7 @@ def make_instance(self, include_optional) -> AddConnectedAccountRequest:
else:
return AddConnectedAccountRequest(
provider_id = 'BINANCE',
- creds = '[B@75a2dbb3',
+ creds = '[B@17269017',
api_key = 'api_key_abc123',
)
"""
diff --git a/test/test_approval_api_key.py b/test/test_approval_api_key.py
new file mode 100644
index 00000000..591ac12f
--- /dev/null
+++ b/test/test_approval_api_key.py
@@ -0,0 +1,72 @@
+# 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.approval_api_key import ApprovalApiKey
+
+
+class TestApprovalApiKey(unittest.TestCase):
+ """ApprovalApiKey unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ApprovalApiKey:
+ """Test ApprovalApiKey
+ 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 `ApprovalApiKey`
+ """
+ model = ApprovalApiKey()
+ if include_optional:
+ return ApprovalApiKey(
+ id = 'fab543c0-d6be-414c-aa05-5c6c84269d7a',
+ name = 'primary signing key',
+ created_at = '1750000000',
+ last_used_at = '1750600000',
+ approval_api_public_key = fireblocks.models.approval_api_public_key.ApprovalApiPublicKey(
+ algorithm = 'ECDSA_SECP256R1',
+ public_key_pem = '-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQ...
+-----END PUBLIC KEY-----', ),
+ user_id = '8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94'
+ )
+ else:
+ return ApprovalApiKey(
+ id = 'fab543c0-d6be-414c-aa05-5c6c84269d7a',
+ name = 'primary signing key',
+ created_at = '1750000000',
+ last_used_at = '1750600000',
+ approval_api_public_key = fireblocks.models.approval_api_public_key.ApprovalApiPublicKey(
+ algorithm = 'ECDSA_SECP256R1',
+ public_key_pem = '-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQ...
+-----END PUBLIC KEY-----', ),
+ user_id = '8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94',
+ )
+ """
+
+ def testApprovalApiKey(self):
+ """Test ApprovalApiKey"""
+ # 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_approval_api_public_key.py b/test/test_approval_api_public_key.py
new file mode 100644
index 00000000..e944121c
--- /dev/null
+++ b/test/test_approval_api_public_key.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.approval_api_public_key import ApprovalApiPublicKey
+
+
+class TestApprovalApiPublicKey(unittest.TestCase):
+ """ApprovalApiPublicKey unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ApprovalApiPublicKey:
+ """Test ApprovalApiPublicKey
+ 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 `ApprovalApiPublicKey`
+ """
+ model = ApprovalApiPublicKey()
+ if include_optional:
+ return ApprovalApiPublicKey(
+ algorithm = 'ECDSA_SECP256R1',
+ public_key_pem = '-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQ...
+-----END PUBLIC KEY-----'
+ )
+ else:
+ return ApprovalApiPublicKey(
+ algorithm = 'ECDSA_SECP256R1',
+ public_key_pem = '-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQ...
+-----END PUBLIC KEY-----',
+ )
+ """
+
+ def testApprovalApiPublicKey(self):
+ """Test ApprovalApiPublicKey"""
+ # 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_approvals_beta_api.py b/test/test_approvals_beta_api.py
index 60e636a4..67f5f0ea 100644
--- a/test/test_approvals_beta_api.py
+++ b/test/test_approvals_beta_api.py
@@ -26,6 +26,27 @@ def setUp(self) -> None:
def tearDown(self) -> None:
pass
+ def test_approve_approval(self) -> None:
+ """Test case for approve_approval
+
+ Approve an approval request
+ """
+ pass
+
+ def test_create_approval_key(self) -> None:
+ """Test case for create_approval_key
+
+ Register an approval key
+ """
+ pass
+
+ def test_delete_approval_key(self) -> None:
+ """Test case for delete_approval_key
+
+ Delete an approval key
+ """
+ pass
+
def test_get_approval_by_id(self) -> None:
"""Test case for get_approval_by_id
@@ -33,6 +54,13 @@ def test_get_approval_by_id(self) -> None:
"""
pass
+ def test_get_approval_keys(self) -> None:
+ """Test case for get_approval_keys
+
+ List approval keys
+ """
+ pass
+
def test_get_approvals(self) -> None:
"""Test case for get_approvals
diff --git a/test/test_approve_approval_request.py b/test/test_approve_approval_request.py
new file mode 100644
index 00000000..2132a847
--- /dev/null
+++ b/test/test_approve_approval_request.py
@@ -0,0 +1,55 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+import unittest
+
+from fireblocks.models.approve_approval_request import ApproveApprovalRequest
+
+
+class TestApproveApprovalRequest(unittest.TestCase):
+ """ApproveApprovalRequest unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ApproveApprovalRequest:
+ """Test ApproveApprovalRequest
+ 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 `ApproveApprovalRequest`
+ """
+ model = ApproveApprovalRequest()
+ if include_optional:
+ return ApproveApprovalRequest(
+ key_id = '64e6b6a3-a607-40e0-8a1e-fe93976ffd46',
+ signature = 'MEUCIQD...signature...Ok'
+ )
+ else:
+ return ApproveApprovalRequest(
+ signature = 'MEUCIQD...signature...Ok',
+ )
+ """
+
+ def testApproveApprovalRequest(self):
+ """Test ApproveApprovalRequest"""
+ # 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_audit_event_type_enum.py b/test/test_audit_event_type_enum.py
new file mode 100644
index 00000000..2d993431
--- /dev/null
+++ b/test/test_audit_event_type_enum.py
@@ -0,0 +1,35 @@
+# 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.audit_event_type_enum import AuditEventTypeEnum
+
+
+class TestAuditEventTypeEnum(unittest.TestCase):
+ """AuditEventTypeEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testAuditEventTypeEnum(self):
+ """Test AuditEventTypeEnum"""
+ # inst = AuditEventTypeEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_audit_log_entry.py b/test/test_audit_log_entry.py
new file mode 100644
index 00000000..887eb311
--- /dev/null
+++ b/test/test_audit_log_entry.py
@@ -0,0 +1,58 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+import unittest
+
+from fireblocks.models.audit_log_entry import AuditLogEntry
+
+
+class TestAuditLogEntry(unittest.TestCase):
+ """AuditLogEntry unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> AuditLogEntry:
+ """Test AuditLogEntry
+ 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 `AuditLogEntry`
+ """
+ model = AuditLogEntry()
+ if include_optional:
+ return AuditLogEntry(
+ timestamp = '1700000000',
+ event_type = 'STATUS_TRANSITION',
+ data = '[B@71d3ee2a'
+ )
+ else:
+ return AuditLogEntry(
+ timestamp = '1700000000',
+ event_type = 'STATUS_TRANSITION',
+ data = '[B@71d3ee2a',
+ )
+ """
+
+ def testAuditLogEntry(self):
+ """Test AuditLogEntry"""
+ # 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_bypass_reason_enum.py b/test/test_bypass_reason_enum.py
new file mode 100644
index 00000000..cf227072
--- /dev/null
+++ b/test/test_bypass_reason_enum.py
@@ -0,0 +1,35 @@
+# 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.bypass_reason_enum import BypassReasonEnum
+
+
+class TestBypassReasonEnum(unittest.TestCase):
+ """BypassReasonEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testBypassReasonEnum(self):
+ """Test BypassReasonEnum"""
+ # inst = BypassReasonEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_compliance_orchestrator_beta_api.py b/test/test_compliance_orchestrator_beta_api.py
new file mode 100644
index 00000000..93587059
--- /dev/null
+++ b/test/test_compliance_orchestrator_beta_api.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.api.compliance_orchestrator_beta_api import (
+ ComplianceOrchestratorBetaApi,
+)
+
+
+class TestComplianceOrchestratorBetaApi(unittest.TestCase):
+ """ComplianceOrchestratorBetaApi unit test stubs"""
+
+ def setUp(self) -> None:
+ self.api = ComplianceOrchestratorBetaApi()
+
+ def tearDown(self) -> None:
+ pass
+
+ def test_get_screening_result(self) -> None:
+ """Test case for get_screening_result
+
+ Get a Compliance Orchestrator screening's result
+ """
+ pass
+
+ def test_get_workflow(self) -> None:
+ """Test case for get_workflow
+
+ Get a Compliance Orchestrator workflow
+ """
+ pass
+
+ def test_trigger_screening(self) -> None:
+ """Test case for trigger_screening
+
+ Trigger a Compliance Orchestrator screening
+ """
+ pass
+
+ def test_update_workflow_status(self) -> None:
+ """Test case for update_workflow_status
+
+ Update a Compliance Orchestrator workflow's status
+ """
+ pass
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_compliance_screening_status_enum.py b/test/test_compliance_screening_status_enum.py
new file mode 100644
index 00000000..c7e8f159
--- /dev/null
+++ b/test/test_compliance_screening_status_enum.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
+
+import unittest
+
+from fireblocks.models.compliance_screening_status_enum import (
+ ComplianceScreeningStatusEnum,
+)
+
+
+class TestComplianceScreeningStatusEnum(unittest.TestCase):
+ """ComplianceScreeningStatusEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testComplianceScreeningStatusEnum(self):
+ """Test ComplianceScreeningStatusEnum"""
+ # inst = ComplianceScreeningStatusEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_connector_status_enum.py b/test/test_connector_status_enum.py
new file mode 100644
index 00000000..11f6d60e
--- /dev/null
+++ b/test/test_connector_status_enum.py
@@ -0,0 +1,35 @@
+# 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.connector_status_enum import ConnectorStatusEnum
+
+
+class TestConnectorStatusEnum(unittest.TestCase):
+ """ConnectorStatusEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testConnectorStatusEnum(self):
+ """Test ConnectorStatusEnum"""
+ # inst = ConnectorStatusEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_connector_verdict_enum.py b/test/test_connector_verdict_enum.py
new file mode 100644
index 00000000..9ab0fd09
--- /dev/null
+++ b/test/test_connector_verdict_enum.py
@@ -0,0 +1,35 @@
+# 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.connector_verdict_enum import ConnectorVerdictEnum
+
+
+class TestConnectorVerdictEnum(unittest.TestCase):
+ """ConnectorVerdictEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testConnectorVerdictEnum(self):
+ """Test ConnectorVerdictEnum"""
+ # inst = ConnectorVerdictEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_contract_data_decode_response_params.py b/test/test_contract_data_decode_response_params.py
index 50e61779..d218705f 100644
--- a/test/test_contract_data_decode_response_params.py
+++ b/test/test_contract_data_decode_response_params.py
@@ -53,7 +53,7 @@ def make_instance(self, include_optional) -> ContractDataDecodeResponseParams:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
]
)
@@ -74,7 +74,7 @@ def make_instance(self, include_optional) -> ContractDataDecodeResponseParams:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
)
diff --git a/test/test_contract_data_decoded_response.py b/test/test_contract_data_decoded_response.py
index 27565c5d..5be5caae 100644
--- a/test/test_contract_data_decoded_response.py
+++ b/test/test_contract_data_decoded_response.py
@@ -53,7 +53,7 @@ def make_instance(self, include_optional) -> ContractDataDecodedResponse:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
], )
],
@@ -78,7 +78,7 @@ def make_instance(self, include_optional) -> ContractDataDecodedResponse:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
], )
],
diff --git a/test/test_deployed_contract_response_dto.py b/test/test_deployed_contract_response_dto.py
index 06455247..58a7acaa 100644
--- a/test/test_deployed_contract_response_dto.py
+++ b/test/test_deployed_contract_response_dto.py
@@ -68,7 +68,7 @@ def make_instance(self, include_optional) -> DeployedContractResponseDto:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
encoded_init_params = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', ),
diff --git a/test/test_get_screening_result_response.py b/test/test_get_screening_result_response.py
new file mode 100644
index 00000000..ff0a9c24
--- /dev/null
+++ b/test/test_get_screening_result_response.py
@@ -0,0 +1,63 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+import unittest
+
+from fireblocks.models.get_screening_result_response import GetScreeningResultResponse
+
+
+class TestGetScreeningResultResponse(unittest.TestCase):
+ """GetScreeningResultResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> GetScreeningResultResponse:
+ """Test GetScreeningResultResponse
+ 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 `GetScreeningResultResponse`
+ """
+ model = GetScreeningResultResponse()
+ if include_optional:
+ return GetScreeningResultResponse(
+ screening_id = 'a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d',
+ workflow_id = 'b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e',
+ screening_status = 'COMPLETED',
+ outcome = 'ACCEPT',
+ steps = [],
+ audit_log = []
+ )
+ else:
+ return GetScreeningResultResponse(
+ screening_id = 'a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d',
+ workflow_id = 'b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e',
+ screening_status = 'COMPLETED',
+ steps = [],
+ audit_log = [],
+ )
+ """
+
+ def testGetScreeningResultResponse(self):
+ """Test GetScreeningResultResponse"""
+ # 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_get_workflow_response.py b/test/test_get_workflow_response.py
new file mode 100644
index 00000000..a3cf1b21
--- /dev/null
+++ b/test/test_get_workflow_response.py
@@ -0,0 +1,64 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+import unittest
+
+from fireblocks.models.get_workflow_response import GetWorkflowResponse
+
+
+class TestGetWorkflowResponse(unittest.TestCase):
+ """GetWorkflowResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> GetWorkflowResponse:
+ """Test GetWorkflowResponse
+ 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 `GetWorkflowResponse`
+ """
+ model = GetWorkflowResponse()
+ if include_optional:
+ return GetWorkflowResponse(
+ workflow_id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
+ template_id = 'm1-kyt-workflow',
+ status = 'ACTIVE',
+ title = 'KYT Screening - EU Customers',
+ description = 'Screens EU customer addresses against KYT risk providers.',
+ created_at = '1735689600',
+ steps = [{"stepId":"f47ac10b-58cc-4372-a567-0e02b2c3d479","connectorId":"kyt_trmlabs","operations":[],"order":0}]
+ )
+ else:
+ return GetWorkflowResponse(
+ workflow_id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
+ status = 'ACTIVE',
+ title = 'KYT Screening - EU Customers',
+ created_at = '1735689600',
+ steps = [{"stepId":"f47ac10b-58cc-4372-a567-0e02b2c3d479","connectorId":"kyt_trmlabs","operations":[],"order":0}],
+ )
+ """
+
+ def testGetWorkflowResponse(self):
+ """Test GetWorkflowResponse"""
+ # 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_internal_transfer_response.py b/test/test_internal_transfer_response.py
index 2a7dded9..66d6cfb6 100644
--- a/test/test_internal_transfer_response.py
+++ b/test/test_internal_transfer_response.py
@@ -37,7 +37,9 @@ def make_instance(self, include_optional) -> InternalTransferResponse:
if include_optional:
return InternalTransferResponse(
success = True,
- id = ''
+ id = '',
+ status = 'SUCCESS',
+ system_messages = []
)
else:
return InternalTransferResponse(
diff --git a/test/test_lean_abi_function.py b/test/test_lean_abi_function.py
index ed66e013..0c878e29 100644
--- a/test/test_lean_abi_function.py
+++ b/test/test_lean_abi_function.py
@@ -50,7 +50,7 @@ def make_instance(self, include_optional) -> LeanAbiFunction:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
outputs = [
@@ -66,7 +66,7 @@ def make_instance(self, include_optional) -> LeanAbiFunction:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
state_mutability = 'nonpayable'
@@ -86,7 +86,7 @@ def make_instance(self, include_optional) -> LeanAbiFunction:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
)
diff --git a/test/test_list_approval_api_keys_response.py b/test/test_list_approval_api_keys_response.py
new file mode 100644
index 00000000..7b2099ee
--- /dev/null
+++ b/test/test_list_approval_api_keys_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.list_approval_api_keys_response import (
+ ListApprovalApiKeysResponse,
+)
+
+
+class TestListApprovalApiKeysResponse(unittest.TestCase):
+ """ListApprovalApiKeysResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ListApprovalApiKeysResponse:
+ """Test ListApprovalApiKeysResponse
+ 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 `ListApprovalApiKeysResponse`
+ """
+ model = ListApprovalApiKeysResponse()
+ if include_optional:
+ return ListApprovalApiKeysResponse(
+ data = [{"id":"fab543c0-d6be-414c-aa05-5c6c84269d7a","name":"primary signing key","createdAt":"1750000000","lastUsedAt":"1750600000","approvalApiPublicKey":{"algorithm":"ECDSA_SECP256R1","publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQ...\n-----END PUBLIC KEY-----"},"userId":"8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94"}],
+ next = 'cursor for the next page'
+ )
+ else:
+ return ListApprovalApiKeysResponse(
+ data = [{"id":"fab543c0-d6be-414c-aa05-5c6c84269d7a","name":"primary signing key","createdAt":"1750000000","lastUsedAt":"1750600000","approvalApiPublicKey":{"algorithm":"ECDSA_SECP256R1","publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQ...\n-----END PUBLIC KEY-----"},"userId":"8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94"}],
+ )
+ """
+
+ def testListApprovalApiKeysResponse(self):
+ """Test ListApprovalApiKeysResponse"""
+ # 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_multichain_deployment_metadata.py b/test/test_multichain_deployment_metadata.py
index 5c5cb711..db289675 100644
--- a/test/test_multichain_deployment_metadata.py
+++ b/test/test_multichain_deployment_metadata.py
@@ -55,7 +55,7 @@ def make_instance(self, include_optional) -> MultichainDeploymentMetadata:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
encoded_init_params = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
diff --git a/test/test_parameter_with_value.py b/test/test_parameter_with_value.py
index 045221aa..29437ec6 100644
--- a/test/test_parameter_with_value.py
+++ b/test/test_parameter_with_value.py
@@ -54,7 +54,7 @@ def make_instance(self, include_optional) -> ParameterWithValue:
type = 'string', )
], )
],
- value = 'true',
+ value = true,
function_value = fireblocks.models.lean_abi_function.LeanAbiFunction(
name = 'initialize',
inputs = [
@@ -70,7 +70,7 @@ def make_instance(self, include_optional) -> ParameterWithValue:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
outputs = [
@@ -79,7 +79,7 @@ def make_instance(self, include_optional) -> ParameterWithValue:
description = 'The name of the token',
internal_type = 'string',
type = 'string',
- value = 'true',
+ value = true,
function_value = null, )
],
state_mutability = 'nonpayable', )
diff --git a/test/test_read_abi_function.py b/test/test_read_abi_function.py
index f33018b1..f52f00f2 100644
--- a/test/test_read_abi_function.py
+++ b/test/test_read_abi_function.py
@@ -66,7 +66,7 @@ def make_instance(self, include_optional) -> ReadAbiFunction:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
description = ''
@@ -88,7 +88,7 @@ def make_instance(self, include_optional) -> ReadAbiFunction:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
)
diff --git a/test/test_read_call_function_dto_abi_function.py b/test/test_read_call_function_dto_abi_function.py
index 84487774..a71aa242 100644
--- a/test/test_read_call_function_dto_abi_function.py
+++ b/test/test_read_call_function_dto_abi_function.py
@@ -68,7 +68,7 @@ def make_instance(self, include_optional) -> ReadCallFunctionDtoAbiFunction:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
description = '',
@@ -105,7 +105,7 @@ def make_instance(self, include_optional) -> ReadCallFunctionDtoAbiFunction:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
discriminator = [13],
diff --git a/test/test_register_approval_api_key_request.py b/test/test_register_approval_api_key_request.py
new file mode 100644
index 00000000..719188ac
--- /dev/null
+++ b/test/test_register_approval_api_key_request.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.register_approval_api_key_request import (
+ RegisterApprovalApiKeyRequest,
+)
+
+
+class TestRegisterApprovalApiKeyRequest(unittest.TestCase):
+ """RegisterApprovalApiKeyRequest unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> RegisterApprovalApiKeyRequest:
+ """Test RegisterApprovalApiKeyRequest
+ 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 `RegisterApprovalApiKeyRequest`
+ """
+ model = RegisterApprovalApiKeyRequest()
+ if include_optional:
+ return RegisterApprovalApiKeyRequest(
+ name = 'primary signing key',
+ approval_api_public_key = fireblocks.models.approval_api_public_key.ApprovalApiPublicKey(
+ algorithm = 'ECDSA_SECP256R1',
+ public_key_pem = '-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQ...
+-----END PUBLIC KEY-----', )
+ )
+ else:
+ return RegisterApprovalApiKeyRequest(
+ name = 'primary signing key',
+ approval_api_public_key = fireblocks.models.approval_api_public_key.ApprovalApiPublicKey(
+ algorithm = 'ECDSA_SECP256R1',
+ public_key_pem = '-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQ...
+-----END PUBLIC KEY-----', ),
+ )
+ """
+
+ def testRegisterApprovalApiKeyRequest(self):
+ """Test RegisterApprovalApiKeyRequest"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_register_approval_api_key_response.py b/test/test_register_approval_api_key_response.py
new file mode 100644
index 00000000..4fd5679c
--- /dev/null
+++ b/test/test_register_approval_api_key_response.py
@@ -0,0 +1,56 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+import unittest
+
+from fireblocks.models.register_approval_api_key_response import (
+ RegisterApprovalApiKeyResponse,
+)
+
+
+class TestRegisterApprovalApiKeyResponse(unittest.TestCase):
+ """RegisterApprovalApiKeyResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> RegisterApprovalApiKeyResponse:
+ """Test RegisterApprovalApiKeyResponse
+ 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 `RegisterApprovalApiKeyResponse`
+ """
+ model = RegisterApprovalApiKeyResponse()
+ if include_optional:
+ return RegisterApprovalApiKeyResponse(
+ key_id = 'fab543c0-d6be-414c-aa05-5c6c84269d7a'
+ )
+ else:
+ return RegisterApprovalApiKeyResponse(
+ key_id = 'fab543c0-d6be-414c-aa05-5c6c84269d7a',
+ )
+ """
+
+ def testRegisterApprovalApiKeyResponse(self):
+ """Test RegisterApprovalApiKeyResponse"""
+ # 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_risk_level_enum.py b/test/test_risk_level_enum.py
new file mode 100644
index 00000000..f3c7d8ea
--- /dev/null
+++ b/test/test_risk_level_enum.py
@@ -0,0 +1,35 @@
+# 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.risk_level_enum import RiskLevelEnum
+
+
+class TestRiskLevelEnum(unittest.TestCase):
+ """RiskLevelEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testRiskLevelEnum(self):
+ """Test RiskLevelEnum"""
+ # inst = RiskLevelEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_rule.py b/test/test_rule.py
new file mode 100644
index 00000000..1f28af55
--- /dev/null
+++ b/test/test_rule.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.rule import Rule
+
+
+class TestRule(unittest.TestCase):
+ """Rule unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> Rule:
+ """Test Rule
+ 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 `Rule`
+ """
+ model = Rule()
+ if include_optional:
+ return Rule(
+ rule_id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
+ conditions = [],
+ rule_action = 'SCREEN',
+ order = 0,
+ title = 'High risk score'
+ )
+ else:
+ return Rule(
+ )
+ """
+
+ def testRule(self):
+ """Test Rule"""
+ # 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_rule_action_enum.py b/test/test_rule_action_enum.py
new file mode 100644
index 00000000..bb84fff9
--- /dev/null
+++ b/test/test_rule_action_enum.py
@@ -0,0 +1,35 @@
+# 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.rule_action_enum import RuleActionEnum
+
+
+class TestRuleActionEnum(unittest.TestCase):
+ """RuleActionEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testRuleActionEnum(self):
+ """Test RuleActionEnum"""
+ # inst = RuleActionEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_rule_condition.py b/test/test_rule_condition.py
new file mode 100644
index 00000000..a339f4b5
--- /dev/null
+++ b/test/test_rule_condition.py
@@ -0,0 +1,58 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+import unittest
+
+from fireblocks.models.rule_condition import RuleCondition
+
+
+class TestRuleCondition(unittest.TestCase):
+ """RuleCondition unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> RuleCondition:
+ """Test RuleCondition
+ 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 `RuleCondition`
+ """
+ model = RuleCondition()
+ if include_optional:
+ return RuleCondition(
+ var_field = 'blockchain',
+ operator = 'EQUALS',
+ value = 'ETH'
+ )
+ else:
+ return RuleCondition(
+ var_field = 'blockchain',
+ operator = 'EQUALS',
+ value = 'ETH',
+ )
+ """
+
+ def testRuleCondition(self):
+ """Test RuleCondition"""
+ # 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_rule_condition_operator_enum.py b/test/test_rule_condition_operator_enum.py
new file mode 100644
index 00000000..2aad296d
--- /dev/null
+++ b/test/test_rule_condition_operator_enum.py
@@ -0,0 +1,35 @@
+# 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.rule_condition_operator_enum import RuleConditionOperatorEnum
+
+
+class TestRuleConditionOperatorEnum(unittest.TestCase):
+ """RuleConditionOperatorEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testRuleConditionOperatorEnum(self):
+ """Test RuleConditionOperatorEnum"""
+ # inst = RuleConditionOperatorEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_rule_set.py b/test/test_rule_set.py
new file mode 100644
index 00000000..b6c420da
--- /dev/null
+++ b/test/test_rule_set.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.models.rule_set import RuleSet
+
+
+class TestRuleSet(unittest.TestCase):
+ """RuleSet unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> RuleSet:
+ """Test RuleSet
+ 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 `RuleSet`
+ """
+ model = RuleSet()
+ if include_optional:
+ return RuleSet(
+ rules = [{"ruleId":"f47ac10b-58cc-4372-a567-0e02b2c3d479","conditions":[{"field":"blockchain","operator":"EQUALS","value":"ETH"}],"ruleAction":"SCREEN","order":0}]
+ )
+ else:
+ return RuleSet(
+ )
+ """
+
+ def testRuleSet(self):
+ """Test RuleSet"""
+ # 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_screening_input.py b/test/test_screening_input.py
new file mode 100644
index 00000000..01846704
--- /dev/null
+++ b/test/test_screening_input.py
@@ -0,0 +1,56 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+import unittest
+
+from fireblocks.models.screening_input import ScreeningInput
+
+
+class TestScreeningInput(unittest.TestCase):
+ """ScreeningInput unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ScreeningInput:
+ """Test ScreeningInput
+ 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 `ScreeningInput`
+ """
+ model = ScreeningInput()
+ if include_optional:
+ return ScreeningInput(
+ operation = 'ADDRESS_SCREENING',
+ payload = [{"blockchain":"ETH","asset":"ETH","address":"0x9876543210fedcba9876543210fedcba98765432"}]
+ )
+ else:
+ return ScreeningInput(
+ operation = 'ADDRESS_SCREENING',
+ payload = [{"blockchain":"ETH","asset":"ETH","address":"0x9876543210fedcba9876543210fedcba98765432"}],
+ )
+ """
+
+ def testScreeningInput(self):
+ """Test ScreeningInput"""
+ # 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_screening_operation_enum.py b/test/test_screening_operation_enum.py
new file mode 100644
index 00000000..bd8fdea9
--- /dev/null
+++ b/test/test_screening_operation_enum.py
@@ -0,0 +1,35 @@
+# 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.screening_operation_enum import ScreeningOperationEnum
+
+
+class TestScreeningOperationEnum(unittest.TestCase):
+ """ScreeningOperationEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testScreeningOperationEnum(self):
+ """Test ScreeningOperationEnum"""
+ # inst = ScreeningOperationEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_screening_outcome_enum.py b/test/test_screening_outcome_enum.py
new file mode 100644
index 00000000..b3aa93e9
--- /dev/null
+++ b/test/test_screening_outcome_enum.py
@@ -0,0 +1,35 @@
+# 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.screening_outcome_enum import ScreeningOutcomeEnum
+
+
+class TestScreeningOutcomeEnum(unittest.TestCase):
+ """ScreeningOutcomeEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testScreeningOutcomeEnum(self):
+ """Test ScreeningOutcomeEnum"""
+ # inst = ScreeningOutcomeEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_screening_payload.py b/test/test_screening_payload.py
new file mode 100644
index 00000000..374eed86
--- /dev/null
+++ b/test/test_screening_payload.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.screening_payload import ScreeningPayload
+
+
+class TestScreeningPayload(unittest.TestCase):
+ """ScreeningPayload unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ScreeningPayload:
+ """Test ScreeningPayload
+ 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 `ScreeningPayload`
+ """
+ model = ScreeningPayload()
+ if include_optional:
+ return ScreeningPayload(
+ blockchain = 'ETH',
+ asset = 'ETH',
+ asset_amount = '1.5',
+ usd_value = '3000.00',
+ customer_ref_id = 'customer_ref_789',
+ external_id = 'aml_screening_12345',
+ address = '0x9876543210fedcba9876543210fedcba98765432',
+ direction = 'OUTBOUND',
+ source_address = ["0x9876543210fedcba9876543210fedcba98765432"],
+ destination_address = ["0x1234567890abcdef1234567890abcdef12345678"],
+ tx_hash = '0xabc123...'
+ )
+ else:
+ return ScreeningPayload(
+ )
+ """
+
+ def testScreeningPayload(self):
+ """Test ScreeningPayload"""
+ # 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_step_config.py b/test/test_step_config.py
new file mode 100644
index 00000000..1c7b98da
--- /dev/null
+++ b/test/test_step_config.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.step_config import StepConfig
+
+
+class TestStepConfig(unittest.TestCase):
+ """StepConfig unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> StepConfig:
+ """Test StepConfig
+ 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 `StepConfig`
+ """
+ model = StepConfig()
+ if include_optional:
+ return StepConfig(
+ step_id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
+ connector_id = 'kyt_trmlabs',
+ operations = [{"operation":"ADDRESS_SCREENING","requiredParameters":["address","blockchain"],"optionalParameters":[],"triggerRuleParameters":[],"outcomeEvaluationParameters":[],"outcomeMetaParameters":[]}],
+ order = 0
+ )
+ else:
+ return StepConfig(
+ step_id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
+ connector_id = 'kyt_trmlabs',
+ operations = [{"operation":"ADDRESS_SCREENING","requiredParameters":["address","blockchain"],"optionalParameters":[],"triggerRuleParameters":[],"outcomeEvaluationParameters":[],"outcomeMetaParameters":[]}],
+ order = 0,
+ )
+ """
+
+ def testStepConfig(self):
+ """Test StepConfig"""
+ # 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_step_operation_config.py b/test/test_step_operation_config.py
new file mode 100644
index 00000000..7d79002a
--- /dev/null
+++ b/test/test_step_operation_config.py
@@ -0,0 +1,64 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+import unittest
+
+from fireblocks.models.step_operation_config import StepOperationConfig
+
+
+class TestStepOperationConfig(unittest.TestCase):
+ """StepOperationConfig unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> StepOperationConfig:
+ """Test StepOperationConfig
+ 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 `StepOperationConfig`
+ """
+ model = StepOperationConfig()
+ if include_optional:
+ return StepOperationConfig(
+ operation = 'ADDRESS_SCREENING',
+ required_parameters = ["address","blockchain"],
+ optional_parameters = ["asset","assetAmount","usdValue"],
+ trigger_rule_parameters = ["address","blockchain","asset"],
+ outcome_evaluation_parameters = ["addressHighestRiskScoreLevel"],
+ outcome_meta_parameters = ["address","blockchain"],
+ trigger_rule_set_struct = fireblocks.models.rule_set.RuleSet(
+ rules = [{"ruleId":"f47ac10b-58cc-4372-a567-0e02b2c3d479","conditions":[{"field":"blockchain","operator":"EQUALS","value":"ETH"}],"ruleAction":"SCREEN","order":0}], ),
+ trigger_rule_set_json = '[{"ruleId":"f47ac10b-58cc-4372-a567-0e02b2c3d479","action":"REJECT"}]',
+ outcome_rule_set_struct = fireblocks.models.rule_set.RuleSet(
+ rules = [{"ruleId":"f47ac10b-58cc-4372-a567-0e02b2c3d479","conditions":[{"field":"blockchain","operator":"EQUALS","value":"ETH"}],"ruleAction":"SCREEN","order":0}], ),
+ outcome_rule_set_json = '[{"ruleId":"f47ac10b-58cc-4372-a567-0e02b2c3d479","action":"REJECT"}]'
+ )
+ else:
+ return StepOperationConfig(
+ )
+ """
+
+ def testStepOperationConfig(self):
+ """Test StepOperationConfig"""
+ # 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_step_result.py b/test/test_step_result.py
new file mode 100644
index 00000000..44e38aad
--- /dev/null
+++ b/test/test_step_result.py
@@ -0,0 +1,82 @@
+# 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.step_result import StepResult
+
+
+class TestStepResult(unittest.TestCase):
+ """StepResult unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> StepResult:
+ """Test StepResult
+ 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 `StepResult`
+ """
+ model = StepResult()
+ if include_optional:
+ return StepResult(
+ step_id = 'step-1',
+ connector_id = 'connector-kyt',
+ operation = 'ADDRESS_SCREENING',
+ trigger_rule_outcome = 'EXECUTE',
+ matched_trigger_rule = fireblocks.models.rule.Rule(
+ rule_id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
+ conditions = [],
+ rule_action = 'SCREEN',
+ order = 0,
+ title = 'High risk score', ),
+ outcome_rule_outcome = 'ACCEPT',
+ matched_outcome_rule = fireblocks.models.rule.Rule(
+ rule_id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
+ conditions = [],
+ rule_action = 'SCREEN',
+ order = 0,
+ title = 'High risk score', ),
+ outcome = 'ACCEPT',
+ metadata = {"address":"0x9876543210fedcba9876543210fedcba98765432","blockchain":"ETH"},
+ ticket_id = 'ticket-12345',
+ verdict = 'ACCEPT',
+ connector_status = 'COMPLETED',
+ bypass_reason = 'PASSED_BY_POLICY',
+ risk = 'LOW'
+ )
+ else:
+ return StepResult(
+ step_id = 'step-1',
+ connector_id = 'connector-kyt',
+ operation = 'ADDRESS_SCREENING',
+ trigger_rule_outcome = 'EXECUTE',
+ outcome_rule_outcome = 'ACCEPT',
+ outcome = 'ACCEPT',
+ )
+ """
+
+ def testStepResult(self):
+ """Test StepResult"""
+ # 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_transfer_direction_enum.py b/test/test_transfer_direction_enum.py
new file mode 100644
index 00000000..55c71ac6
--- /dev/null
+++ b/test/test_transfer_direction_enum.py
@@ -0,0 +1,35 @@
+# 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.transfer_direction_enum import TransferDirectionEnum
+
+
+class TestTransferDirectionEnum(unittest.TestCase):
+ """TransferDirectionEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testTransferDirectionEnum(self):
+ """Test TransferDirectionEnum"""
+ # inst = TransferDirectionEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_trigger_rule_outcome_enum.py b/test/test_trigger_rule_outcome_enum.py
new file mode 100644
index 00000000..cfdd551f
--- /dev/null
+++ b/test/test_trigger_rule_outcome_enum.py
@@ -0,0 +1,35 @@
+# 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.trigger_rule_outcome_enum import TriggerRuleOutcomeEnum
+
+
+class TestTriggerRuleOutcomeEnum(unittest.TestCase):
+ """TriggerRuleOutcomeEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testTriggerRuleOutcomeEnum(self):
+ """Test TriggerRuleOutcomeEnum"""
+ # inst = TriggerRuleOutcomeEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_trigger_screening_request.py b/test/test_trigger_screening_request.py
new file mode 100644
index 00000000..ef1a6381
--- /dev/null
+++ b/test/test_trigger_screening_request.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.trigger_screening_request import TriggerScreeningRequest
+
+
+class TestTriggerScreeningRequest(unittest.TestCase):
+ """TriggerScreeningRequest unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> TriggerScreeningRequest:
+ """Test TriggerScreeningRequest
+ 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 `TriggerScreeningRequest`
+ """
+ model = TriggerScreeningRequest()
+ if include_optional:
+ return TriggerScreeningRequest(
+ workflow_id = 'b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e',
+ input = fireblocks.models.screening_input.ScreeningInput(
+ operation = 'ADDRESS_SCREENING',
+ payload = [{"blockchain":"ETH","asset":"ETH","address":"0x9876543210fedcba9876543210fedcba98765432"}], )
+ )
+ else:
+ return TriggerScreeningRequest(
+ workflow_id = 'b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e',
+ input = fireblocks.models.screening_input.ScreeningInput(
+ operation = 'ADDRESS_SCREENING',
+ payload = [{"blockchain":"ETH","asset":"ETH","address":"0x9876543210fedcba9876543210fedcba98765432"}], ),
+ )
+ """
+
+ def testTriggerScreeningRequest(self):
+ """Test TriggerScreeningRequest"""
+ # 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_trigger_screening_response.py b/test/test_trigger_screening_response.py
new file mode 100644
index 00000000..099e27b1
--- /dev/null
+++ b/test/test_trigger_screening_response.py
@@ -0,0 +1,56 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+import unittest
+
+from fireblocks.models.trigger_screening_response import TriggerScreeningResponse
+
+
+class TestTriggerScreeningResponse(unittest.TestCase):
+ """TriggerScreeningResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> TriggerScreeningResponse:
+ """Test TriggerScreeningResponse
+ 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 `TriggerScreeningResponse`
+ """
+ model = TriggerScreeningResponse()
+ if include_optional:
+ return TriggerScreeningResponse(
+ screening_id = 'a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d',
+ screening_status = 'COMPLETED'
+ )
+ else:
+ return TriggerScreeningResponse(
+ screening_id = 'a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d',
+ screening_status = 'COMPLETED',
+ )
+ """
+
+ def testTriggerScreeningResponse(self):
+ """Test TriggerScreeningResponse"""
+ # 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_update_connected_account_credentials_request.py b/test/test_update_connected_account_credentials_request.py
index 5509a7a1..f94525da 100644
--- a/test/test_update_connected_account_credentials_request.py
+++ b/test/test_update_connected_account_credentials_request.py
@@ -40,12 +40,12 @@ def make_instance(
model = UpdateConnectedAccountCredentialsRequest()
if include_optional:
return UpdateConnectedAccountCredentialsRequest(
- creds = '[B@1cad7fc4',
+ creds = '[B@70fe91a4',
api_key = 'api_key_new_abc123'
)
else:
return UpdateConnectedAccountCredentialsRequest(
- creds = '[B@1cad7fc4',
+ creds = '[B@70fe91a4',
api_key = 'api_key_new_abc123',
)
"""
diff --git a/test/test_update_workflow_status_request.py b/test/test_update_workflow_status_request.py
new file mode 100644
index 00000000..f6e6112d
--- /dev/null
+++ b/test/test_update_workflow_status_request.py
@@ -0,0 +1,54 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+import unittest
+
+from fireblocks.models.update_workflow_status_request import UpdateWorkflowStatusRequest
+
+
+class TestUpdateWorkflowStatusRequest(unittest.TestCase):
+ """UpdateWorkflowStatusRequest unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> UpdateWorkflowStatusRequest:
+ """Test UpdateWorkflowStatusRequest
+ 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 `UpdateWorkflowStatusRequest`
+ """
+ model = UpdateWorkflowStatusRequest()
+ if include_optional:
+ return UpdateWorkflowStatusRequest(
+ status = 'ACTIVE'
+ )
+ else:
+ return UpdateWorkflowStatusRequest(
+ status = 'ACTIVE',
+ )
+ """
+
+ def testUpdateWorkflowStatusRequest(self):
+ """Test UpdateWorkflowStatusRequest"""
+ # 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_update_workflow_status_response.py b/test/test_update_workflow_status_response.py
new file mode 100644
index 00000000..9fdbc08c
--- /dev/null
+++ b/test/test_update_workflow_status_response.py
@@ -0,0 +1,58 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+import unittest
+
+from fireblocks.models.update_workflow_status_response import (
+ UpdateWorkflowStatusResponse,
+)
+
+
+class TestUpdateWorkflowStatusResponse(unittest.TestCase):
+ """UpdateWorkflowStatusResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> UpdateWorkflowStatusResponse:
+ """Test UpdateWorkflowStatusResponse
+ 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 `UpdateWorkflowStatusResponse`
+ """
+ model = UpdateWorkflowStatusResponse()
+ if include_optional:
+ return UpdateWorkflowStatusResponse(
+ workflow_id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
+ status = 'ACTIVE'
+ )
+ else:
+ return UpdateWorkflowStatusResponse(
+ workflow_id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
+ status = 'ACTIVE',
+ )
+ """
+
+ def testUpdateWorkflowStatusResponse(self):
+ """Test UpdateWorkflowStatusResponse"""
+ # 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_webhook_mtls_csr_response.py b/test/test_webhook_mtls_csr_response.py
index d01e210c..c1b353e3 100644
--- a/test/test_webhook_mtls_csr_response.py
+++ b/test/test_webhook_mtls_csr_response.py
@@ -38,13 +38,15 @@ def make_instance(self, include_optional) -> WebhookMtlsCsrResponse:
return WebhookMtlsCsrResponse(
csr = '-----BEGIN CERTIFICATE REQUEST-----
...
------END CERTIFICATE REQUEST-----'
+-----END CERTIFICATE REQUEST-----',
+ key_algorithm = 'RSA'
)
else:
return WebhookMtlsCsrResponse(
csr = '-----BEGIN CERTIFICATE REQUEST-----
...
-----END CERTIFICATE REQUEST-----',
+ key_algorithm = 'RSA',
)
"""
diff --git a/test/test_webhook_mtls_key_algorithm.py b/test/test_webhook_mtls_key_algorithm.py
new file mode 100644
index 00000000..672fcd46
--- /dev/null
+++ b/test/test_webhook_mtls_key_algorithm.py
@@ -0,0 +1,35 @@
+# 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.webhook_mtls_key_algorithm import WebhookMtlsKeyAlgorithm
+
+
+class TestWebhookMtlsKeyAlgorithm(unittest.TestCase):
+ """WebhookMtlsKeyAlgorithm unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testWebhookMtlsKeyAlgorithm(self):
+ """Test WebhookMtlsKeyAlgorithm"""
+ # inst = WebhookMtlsKeyAlgorithm()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_workflow_status_enum.py b/test/test_workflow_status_enum.py
new file mode 100644
index 00000000..257872ec
--- /dev/null
+++ b/test/test_workflow_status_enum.py
@@ -0,0 +1,35 @@
+# 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.workflow_status_enum import WorkflowStatusEnum
+
+
+class TestWorkflowStatusEnum(unittest.TestCase):
+ """WorkflowStatusEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testWorkflowStatusEnum(self):
+ """Test WorkflowStatusEnum"""
+ # inst = WorkflowStatusEnum()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_write_abi_function.py b/test/test_write_abi_function.py
index bf07d7f6..955f1e81 100644
--- a/test/test_write_abi_function.py
+++ b/test/test_write_abi_function.py
@@ -66,7 +66,7 @@ def make_instance(self, include_optional) -> WriteAbiFunction:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
description = ''
@@ -88,7 +88,7 @@ def make_instance(self, include_optional) -> WriteAbiFunction:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
)
diff --git a/test/test_write_call_function_dto_abi_function.py b/test/test_write_call_function_dto_abi_function.py
index 7edd9fa5..28be1f49 100644
--- a/test/test_write_call_function_dto_abi_function.py
+++ b/test/test_write_call_function_dto_abi_function.py
@@ -68,7 +68,7 @@ def make_instance(self, include_optional) -> WriteCallFunctionDtoAbiFunction:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
description = '',
@@ -105,7 +105,7 @@ def make_instance(self, include_optional) -> WriteCallFunctionDtoAbiFunction:
internal_type = 'string',
type = 'string', )
],
- value = 'true',
+ value = true,
function_value = null, )
],
discriminator = [13],