diff --git a/.auto-changelog b/.auto-changelog
new file mode 100644
index 00000000..05dc0059
--- /dev/null
+++ b/.auto-changelog
@@ -0,0 +1,11 @@
+{
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": 0,
+ "backfillLimit": 3,
+ "hideCredit": true,
+ "replaceText": {
+ "\\[([^\\]]+)\\]\\(https://github.com/[^/]+/([^/]+)/compare/[^)]+\\)": "[$1](https://github.com/fireblocks/$2/releases/tag/$1)"
+ }
+}
\ No newline at end of file
diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
deleted file mode 100644
index 197fe048..00000000
--- a/.github/release-drafter.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-name-template: 'v$RESOLVED_VERSION'
-tag-template: 'v$RESOLVED_VERSION'
-categories:
- - title: '🚀 Features'
- labels:
- - 'feature'
- - 'enhancement'
- - title: '🐛 Bug Fixes'
- labels:
- - 'fix'
- - 'bugfix'
- - 'bug'
- - title: '🧰 Maintenance'
- label: 'chore'
-change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
-change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
-version-resolver:
- major:
- labels:
- - 'major'
- - 'breaking'
- minor:
- labels:
- - 'minor'
- - 'enhancement'
- patch:
- labels:
- - 'patch'
- - 'bug'
- default: patch
-template: |
- ## Changes
-
- $CHANGES
-autolabeler:
- - label: 'chore'
- files:
- - '*.md'
- branch:
- - '/docs{0,1}\/.+/'
- - label: 'bug'
- branch:
- - '/fix\/.+/'
- title:
- - '/fix/i'
- - '/bugfix/i'
- - label: 'enhancement'
- title:
- - '/added/i'
- - '/add/i'
- - '/feature/i'
- - '/feat/i'
- - '/support/i'
- - '/enable/i'
- branch:
- - '/feature\/.+/'
diff --git a/.github/workflows/draft-release-from-pr.yml b/.github/workflows/draft-release-from-pr.yml
new file mode 100644
index 00000000..ae3c2269
--- /dev/null
+++ b/.github/workflows/draft-release-from-pr.yml
@@ -0,0 +1,91 @@
+name: Draft Release from PR
+
+on:
+ push:
+ branches:
+ - master
+
+permissions:
+ contents: write
+ pull-requests: read
+
+jobs:
+ draft-release:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Get last merged PR
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ gh pr list \
+ --state merged \
+ --base master \
+ --limit 1 \
+ --json number,title,body,labels \
+ > pr.json
+
+ PR_NUM=$(jq -r '.[0].number // "none"' pr.json)
+ PR_TITLE=$(jq -r '.[0].title // "none"' pr.json)
+ echo "Found merged PR: #$PR_NUM - $PR_TITLE"
+
+ - name: Get latest release version
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ LAST_TAG=$(gh release list --limit 1 --json tagName -q '.[0].tagName')
+
+ if [[ -z "$LAST_TAG" || "$LAST_TAG" == "null" ]]; then
+ echo "No existing release found. A release tag is required to calculate the next version."
+ exit 1
+ fi
+
+ echo "Found latest release: $LAST_TAG"
+ echo "LAST_TAG=$LAST_TAG" >> $GITHUB_ENV
+
+ - name: Calculate next version from labels
+ run: |
+ V="${LAST_TAG#v}"
+
+ MAJOR=$(echo $V | cut -d. -f1)
+ MINOR=$(echo $V | cut -d. -f2)
+ PATCH=$(echo $V | cut -d. -f3)
+
+ LABELS=$(jq -r '.[0].labels[].name' pr.json)
+ echo "Found labels: $LABELS"
+
+ if echo "$LABELS" | grep -q "major"; then
+ echo "Bumping MAJOR version"
+ MAJOR=$((MAJOR+1))
+ MINOR=0
+ PATCH=0
+ elif echo "$LABELS" | grep -q "minor"; then
+ echo "Bumping MINOR version"
+ MINOR=$((MINOR+1))
+ PATCH=0
+ else
+ echo "Bumping PATCH version"
+ PATCH=$((PATCH+1))
+ fi
+
+ echo "Calculated next version: v$MAJOR.$MINOR.$PATCH"
+ echo "VERSION=v$MAJOR.$MINOR.$PATCH" >> $GITHUB_ENV
+
+ - name: Create DRAFT release using PR BODY
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ PR_BODY=$(jq -r '.[0].body // ""' pr.json)
+
+ echo "Creating draft release..."
+ echo "Version: $VERSION"
+
+ gh release create "$VERSION" \
+ --draft \
+ --title "$VERSION" \
+ --notes "$PR_BODY"
+
+ echo "Draft release created successfully!"
\ No newline at end of file
diff --git a/.github/workflows/pr-auto-label.yml b/.github/workflows/pr-auto-label.yml
new file mode 100644
index 00000000..e5df470a
--- /dev/null
+++ b/.github/workflows/pr-auto-label.yml
@@ -0,0 +1,37 @@
+name: PR Auto Label
+
+on:
+ pull_request:
+ types: [opened, edited, reopened, synchronize]
+
+permissions:
+ pull-requests: write
+ contents: read
+
+jobs:
+ label:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Label PR by title
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ TITLE: ${{ github.event.pull_request.title }}
+ PR: ${{ github.event.pull_request.number }}
+ REPO: ${{ github.repository }}
+ run: |
+ label=""
+
+ if [[ "$TITLE" =~ \(major\) ]]; then
+ label="major"
+ elif [[ "$TITLE" =~ \(minor\) ]]; then
+ label="minor"
+ elif [[ "$TITLE" =~ \(patch\) ]]; then
+ label="patch"
+ fi
+
+ if [[ -n "$label" ]]; then
+ echo "Found label: $label"
+ gh pr edit "$PR" --repo "$REPO" --add-label "$label"
+ else
+ echo "No label found in title: $TITLE"
+ fi
diff --git a/.github/workflows/pr-title.yml b/.github/workflows/pr-title-validation.yml
similarity index 87%
rename from .github/workflows/pr-title.yml
rename to .github/workflows/pr-title-validation.yml
index b9ada4e0..6cf926de 100644
--- a/.github/workflows/pr-title.yml
+++ b/.github/workflows/pr-title-validation.yml
@@ -9,4 +9,4 @@ jobs:
- uses: deepakputhraya/action-pr-title@master
with:
disallowed_prefixes: 'COR-'
- prefix_case_sensitive: false
\ No newline at end of file
+ prefix_case_sensitive: false
diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml
index 9ca92546..cf89a0ef 100644
--- a/.github/workflows/python-publish.yml
+++ b/.github/workflows/python-publish.yml
@@ -45,6 +45,7 @@ jobs:
echo "finished configuration"
bump-my-version bump --config-file .bump_version.toml --current-version 0.0.0 --new-version $tag
echo "bumpversion finished"
+ auto-changelog
git add .
git commit -m "release $tag"
git push
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
deleted file mode 100644
index ecba06c6..00000000
--- a/.github/workflows/release-drafter.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-name: Release Drafter
-
-on:
- push:
- branches:
- - master
- pull_request:
- types: [opened, reopened, synchronize]
-
-jobs:
- update_release_draft:
- runs-on: ubuntu-latest
- steps:
- - uses: release-drafter/release-drafter@v5
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES
index 7f8d79c5..5bb694a0 100644
--- a/.openapi-generator/FILES
+++ b/.openapi-generator/FILES
@@ -129,6 +129,9 @@ docs/ChainInfoResponse.md
docs/ChannelDvnConfigWithConfirmations.md
docs/ChannelDvnConfigWithConfirmationsReceiveConfig.md
docs/ChannelDvnConfigWithConfirmationsSendConfig.md
+docs/ChapsAddress.md
+docs/ChapsDestination.md
+docs/ChapsPaymentInfo.md
docs/ClaimRewardsRequest.md
docs/CollectionBurnRequestDto.md
docs/CollectionBurnResponseDto.md
@@ -359,7 +362,6 @@ docs/ExecutionStepType.md
docs/ExecutionTransferOperation.md
docs/ExternalAccount.md
docs/ExternalAccountLocalBankAfrica.md
-docs/ExternalAccountLocalBankAfricaType.md
docs/ExternalAccountMobileMoney.md
docs/ExternalAccountMobileMoneyProvider.md
docs/ExternalAccountMobileMoneyType.md
@@ -367,6 +369,7 @@ docs/ExternalAccountSenderInformation.md
docs/ExternalAccountType.md
docs/ExternalWalletAsset.md
docs/ExternalWalletsApi.md
+docs/ExtraParameters.md
docs/Failure.md
docs/FailureReason.md
docs/Fee.md
@@ -430,7 +433,12 @@ docs/IndicativeQuoteType.md
docs/InitiatorConfig.md
docs/InitiatorConfigPattern.md
docs/InstructionAmount.md
+docs/InteracAddress.md
+docs/InteracDestination.md
+docs/InteracPaymentInfo.md
docs/InternalReference.md
+docs/InternalTransferAddress.md
+docs/InternalTransferDestination.md
docs/InternalTransferResponse.md
docs/InternalWalletsApi.md
docs/InvalidParamaterValueError.md
@@ -546,11 +554,15 @@ docs/ParticipantsIdentification.md
docs/PayeeAccount.md
docs/PayeeAccountResponse.md
docs/PayeeAccountType.md
+docs/PayidAddress.md
+docs/PayidDestination.md
+docs/PayidPaymentInfo.md
docs/PaymentAccount.md
docs/PaymentAccountResponse.md
docs/PaymentAccountType.md
docs/PaymentInstructions.md
docs/PaymentInstructionsOneOf.md
+docs/PaymentRedirect.md
docs/PaymentsPayoutApi.md
docs/PayoutInitMethod.md
docs/PayoutInstruction.md
@@ -613,6 +625,7 @@ docs/ReQuoteDetailsReQuote.md
docs/ReadAbiFunction.md
docs/ReadCallFunctionDto.md
docs/ReadCallFunctionDtoAbiFunction.md
+docs/RecipientHandle.md
docs/RedeemFundsToLinkedDDAResponse.md
docs/RegisterNewAssetRequest.md
docs/ReissueMultichainTokenRequest.md
@@ -1020,6 +1033,8 @@ docs/WithdrawRequest.md
docs/WorkflowConfigStatus.md
docs/WorkflowConfigurationId.md
docs/WorkflowExecutionOperation.md
+docs/Workspace.md
+docs/WorkspaceApi.md
docs/WorkspaceStatusBetaApi.md
docs/WriteAbiFunction.md
docs/WriteCallFunctionDto.md
@@ -1072,6 +1087,7 @@ fireblocks/api/web3_connections_api.py
fireblocks/api/webhooks_api.py
fireblocks/api/webhooks_v2_api.py
fireblocks/api/whitelist_ip_addresses_api.py
+fireblocks/api/workspace_api.py
fireblocks/api/workspace_status_beta_api.py
fireblocks/api_client.py
fireblocks/api_response.py
@@ -1206,6 +1222,9 @@ fireblocks/models/chain_info_response.py
fireblocks/models/channel_dvn_config_with_confirmations.py
fireblocks/models/channel_dvn_config_with_confirmations_receive_config.py
fireblocks/models/channel_dvn_config_with_confirmations_send_config.py
+fireblocks/models/chaps_address.py
+fireblocks/models/chaps_destination.py
+fireblocks/models/chaps_payment_info.py
fireblocks/models/claim_rewards_request.py
fireblocks/models/collection_burn_request_dto.py
fireblocks/models/collection_burn_response_dto.py
@@ -1425,13 +1444,13 @@ fireblocks/models/execution_step_type.py
fireblocks/models/execution_transfer_operation.py
fireblocks/models/external_account.py
fireblocks/models/external_account_local_bank_africa.py
-fireblocks/models/external_account_local_bank_africa_type.py
fireblocks/models/external_account_mobile_money.py
fireblocks/models/external_account_mobile_money_provider.py
fireblocks/models/external_account_mobile_money_type.py
fireblocks/models/external_account_sender_information.py
fireblocks/models/external_account_type.py
fireblocks/models/external_wallet_asset.py
+fireblocks/models/extra_parameters.py
fireblocks/models/failure.py
fireblocks/models/failure_reason.py
fireblocks/models/fee.py
@@ -1493,7 +1512,12 @@ fireblocks/models/indicative_quote_type.py
fireblocks/models/initiator_config.py
fireblocks/models/initiator_config_pattern.py
fireblocks/models/instruction_amount.py
+fireblocks/models/interac_address.py
+fireblocks/models/interac_destination.py
+fireblocks/models/interac_payment_info.py
fireblocks/models/internal_reference.py
+fireblocks/models/internal_transfer_address.py
+fireblocks/models/internal_transfer_destination.py
fireblocks/models/internal_transfer_response.py
fireblocks/models/invalid_paramater_value_error.py
fireblocks/models/job_created.py
@@ -1601,11 +1625,15 @@ fireblocks/models/participants_identification.py
fireblocks/models/payee_account.py
fireblocks/models/payee_account_response.py
fireblocks/models/payee_account_type.py
+fireblocks/models/payid_address.py
+fireblocks/models/payid_destination.py
+fireblocks/models/payid_payment_info.py
fireblocks/models/payment_account.py
fireblocks/models/payment_account_response.py
fireblocks/models/payment_account_type.py
fireblocks/models/payment_instructions.py
fireblocks/models/payment_instructions_one_of.py
+fireblocks/models/payment_redirect.py
fireblocks/models/payout_init_method.py
fireblocks/models/payout_instruction.py
fireblocks/models/payout_instruction_response.py
@@ -1665,6 +1693,7 @@ fireblocks/models/re_quote_details_re_quote.py
fireblocks/models/read_abi_function.py
fireblocks/models/read_call_function_dto.py
fireblocks/models/read_call_function_dto_abi_function.py
+fireblocks/models/recipient_handle.py
fireblocks/models/redeem_funds_to_linked_dda_response.py
fireblocks/models/register_new_asset_request.py
fireblocks/models/reissue_multichain_token_request.py
@@ -2056,6 +2085,7 @@ 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/workspace.py
fireblocks/models/write_abi_function.py
fireblocks/models/write_call_function_dto.py
fireblocks/models/write_call_function_dto_abi_function.py
@@ -2210,6 +2240,9 @@ test/test_chain_info_response.py
test/test_channel_dvn_config_with_confirmations.py
test/test_channel_dvn_config_with_confirmations_receive_config.py
test/test_channel_dvn_config_with_confirmations_send_config.py
+test/test_chaps_address.py
+test/test_chaps_destination.py
+test/test_chaps_payment_info.py
test/test_claim_rewards_request.py
test/test_collection_burn_request_dto.py
test/test_collection_burn_response_dto.py
@@ -2440,7 +2473,6 @@ test/test_execution_step_type.py
test/test_execution_transfer_operation.py
test/test_external_account.py
test/test_external_account_local_bank_africa.py
-test/test_external_account_local_bank_africa_type.py
test/test_external_account_mobile_money.py
test/test_external_account_mobile_money_provider.py
test/test_external_account_mobile_money_type.py
@@ -2448,6 +2480,7 @@ test/test_external_account_sender_information.py
test/test_external_account_type.py
test/test_external_wallet_asset.py
test/test_external_wallets_api.py
+test/test_extra_parameters.py
test/test_failure.py
test/test_failure_reason.py
test/test_fee.py
@@ -2511,7 +2544,12 @@ test/test_indicative_quote_type.py
test/test_initiator_config.py
test/test_initiator_config_pattern.py
test/test_instruction_amount.py
+test/test_interac_address.py
+test/test_interac_destination.py
+test/test_interac_payment_info.py
test/test_internal_reference.py
+test/test_internal_transfer_address.py
+test/test_internal_transfer_destination.py
test/test_internal_transfer_response.py
test/test_internal_wallets_api.py
test/test_invalid_paramater_value_error.py
@@ -2627,11 +2665,15 @@ test/test_participants_identification.py
test/test_payee_account.py
test/test_payee_account_response.py
test/test_payee_account_type.py
+test/test_payid_address.py
+test/test_payid_destination.py
+test/test_payid_payment_info.py
test/test_payment_account.py
test/test_payment_account_response.py
test/test_payment_account_type.py
test/test_payment_instructions.py
test/test_payment_instructions_one_of.py
+test/test_payment_redirect.py
test/test_payments_payout_api.py
test/test_payout_init_method.py
test/test_payout_instruction.py
@@ -2694,6 +2736,7 @@ test/test_re_quote_details_re_quote.py
test/test_read_abi_function.py
test/test_read_call_function_dto.py
test/test_read_call_function_dto_abi_function.py
+test/test_recipient_handle.py
test/test_redeem_funds_to_linked_dda_response.py
test/test_register_new_asset_request.py
test/test_reissue_multichain_token_request.py
@@ -3101,6 +3144,8 @@ 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_workspace.py
+test/test_workspace_api.py
test/test_workspace_status_beta_api.py
test/test_write_abi_function.py
test/test_write_call_function_dto.py
diff --git a/README.md b/README.md
index 4cb01a50..4ca24e78 100644
--- a/README.md
+++ b/README.md
@@ -441,6 +441,7 @@ Class | Method | HTTP request | Description
*SmartTransferApi* | [**update_ticket_term**](docs/SmartTransferApi.md#update_ticket_term) | **PUT** /smart-transfers/{ticketId}/terms/{termId} | Update ticket leg (term)
*StakingApi* | [**approve_terms_of_service_by_provider_id**](docs/StakingApi.md#approve_terms_of_service_by_provider_id) | **POST** /staking/providers/{providerId}/approveTermsOfService | Approve provider terms of service
*StakingApi* | [**claim_rewards**](docs/StakingApi.md#claim_rewards) | **POST** /staking/chains/{chainDescriptor}/claim_rewards | Claim accrued rewards
+*StakingApi* | [**consolidate**](docs/StakingApi.md#consolidate) | **POST** /staking/chains/{chainDescriptor}/consolidate | Consolidate staking positions (ETH validator consolidation)
*StakingApi* | [**get_all_delegations**](docs/StakingApi.md#get_all_delegations) | **GET** /staking/positions | List staking positions
*StakingApi* | [**get_chain_info**](docs/StakingApi.md#get_chain_info) | **GET** /staking/chains/{chainDescriptor}/chainInfo | Get chain-level staking parameters
*StakingApi* | [**get_chains**](docs/StakingApi.md#get_chains) | **GET** /staking/chains | List supported staking chains
@@ -590,6 +591,7 @@ Class | Method | HTTP request | Description
*WebhooksV2Api* | [**resend_notification_by_id**](docs/WebhooksV2Api.md#resend_notification_by_id) | **POST** /webhooks/{webhookId}/notifications/{notificationId}/resend | Resend notification by id
*WebhooksV2Api* | [**resend_notifications_by_resource_id**](docs/WebhooksV2Api.md#resend_notifications_by_resource_id) | **POST** /webhooks/{webhookId}/notifications/resend_by_resource | Resend notifications by resource Id
*WebhooksV2Api* | [**update_webhook**](docs/WebhooksV2Api.md#update_webhook) | **PATCH** /webhooks/{webhookId} | Update webhook
+*WorkspaceApi* | [**get_workspace**](docs/WorkspaceApi.md#get_workspace) | **GET** /workspace | Get workspace
*WorkspaceStatusBetaApi* | [**get_workspace_status**](docs/WorkspaceStatusBetaApi.md#get_workspace_status) | **GET** /management/workspace_status | Returns current workspace status
*WhitelistIpAddressesApi* | [**get_whitelist_ip_addresses**](docs/WhitelistIpAddressesApi.md#get_whitelist_ip_addresses) | **GET** /management/api_users/{userId}/whitelist_ip_addresses | Get whitelisted ip addresses for an API Key
@@ -720,6 +722,9 @@ Class | Method | HTTP request | Description
- [ChannelDvnConfigWithConfirmations](docs/ChannelDvnConfigWithConfirmations.md)
- [ChannelDvnConfigWithConfirmationsReceiveConfig](docs/ChannelDvnConfigWithConfirmationsReceiveConfig.md)
- [ChannelDvnConfigWithConfirmationsSendConfig](docs/ChannelDvnConfigWithConfirmationsSendConfig.md)
+ - [ChapsAddress](docs/ChapsAddress.md)
+ - [ChapsDestination](docs/ChapsDestination.md)
+ - [ChapsPaymentInfo](docs/ChapsPaymentInfo.md)
- [ClaimRewardsRequest](docs/ClaimRewardsRequest.md)
- [CollectionBurnRequestDto](docs/CollectionBurnRequestDto.md)
- [CollectionBurnResponseDto](docs/CollectionBurnResponseDto.md)
@@ -939,13 +944,13 @@ Class | Method | HTTP request | Description
- [ExecutionTransferOperation](docs/ExecutionTransferOperation.md)
- [ExternalAccount](docs/ExternalAccount.md)
- [ExternalAccountLocalBankAfrica](docs/ExternalAccountLocalBankAfrica.md)
- - [ExternalAccountLocalBankAfricaType](docs/ExternalAccountLocalBankAfricaType.md)
- [ExternalAccountMobileMoney](docs/ExternalAccountMobileMoney.md)
- [ExternalAccountMobileMoneyProvider](docs/ExternalAccountMobileMoneyProvider.md)
- [ExternalAccountMobileMoneyType](docs/ExternalAccountMobileMoneyType.md)
- [ExternalAccountSenderInformation](docs/ExternalAccountSenderInformation.md)
- [ExternalAccountType](docs/ExternalAccountType.md)
- [ExternalWalletAsset](docs/ExternalWalletAsset.md)
+ - [ExtraParameters](docs/ExtraParameters.md)
- [Failure](docs/Failure.md)
- [FailureReason](docs/FailureReason.md)
- [Fee](docs/Fee.md)
@@ -1007,7 +1012,12 @@ Class | Method | HTTP request | Description
- [InitiatorConfig](docs/InitiatorConfig.md)
- [InitiatorConfigPattern](docs/InitiatorConfigPattern.md)
- [InstructionAmount](docs/InstructionAmount.md)
+ - [InteracAddress](docs/InteracAddress.md)
+ - [InteracDestination](docs/InteracDestination.md)
+ - [InteracPaymentInfo](docs/InteracPaymentInfo.md)
- [InternalReference](docs/InternalReference.md)
+ - [InternalTransferAddress](docs/InternalTransferAddress.md)
+ - [InternalTransferDestination](docs/InternalTransferDestination.md)
- [InternalTransferResponse](docs/InternalTransferResponse.md)
- [InvalidParamaterValueError](docs/InvalidParamaterValueError.md)
- [JobCreated](docs/JobCreated.md)
@@ -1115,11 +1125,15 @@ Class | Method | HTTP request | Description
- [PayeeAccount](docs/PayeeAccount.md)
- [PayeeAccountResponse](docs/PayeeAccountResponse.md)
- [PayeeAccountType](docs/PayeeAccountType.md)
+ - [PayidAddress](docs/PayidAddress.md)
+ - [PayidDestination](docs/PayidDestination.md)
+ - [PayidPaymentInfo](docs/PayidPaymentInfo.md)
- [PaymentAccount](docs/PaymentAccount.md)
- [PaymentAccountResponse](docs/PaymentAccountResponse.md)
- [PaymentAccountType](docs/PaymentAccountType.md)
- [PaymentInstructions](docs/PaymentInstructions.md)
- [PaymentInstructionsOneOf](docs/PaymentInstructionsOneOf.md)
+ - [PaymentRedirect](docs/PaymentRedirect.md)
- [PayoutInitMethod](docs/PayoutInitMethod.md)
- [PayoutInstruction](docs/PayoutInstruction.md)
- [PayoutInstructionResponse](docs/PayoutInstructionResponse.md)
@@ -1179,6 +1193,7 @@ Class | Method | HTTP request | Description
- [ReadAbiFunction](docs/ReadAbiFunction.md)
- [ReadCallFunctionDto](docs/ReadCallFunctionDto.md)
- [ReadCallFunctionDtoAbiFunction](docs/ReadCallFunctionDtoAbiFunction.md)
+ - [RecipientHandle](docs/RecipientHandle.md)
- [RedeemFundsToLinkedDDAResponse](docs/RedeemFundsToLinkedDDAResponse.md)
- [RegisterNewAssetRequest](docs/RegisterNewAssetRequest.md)
- [ReissueMultichainTokenRequest](docs/ReissueMultichainTokenRequest.md)
@@ -1570,6 +1585,7 @@ Class | Method | HTTP request | Description
- [WorkflowConfigStatus](docs/WorkflowConfigStatus.md)
- [WorkflowConfigurationId](docs/WorkflowConfigurationId.md)
- [WorkflowExecutionOperation](docs/WorkflowExecutionOperation.md)
+ - [Workspace](docs/Workspace.md)
- [WriteAbiFunction](docs/WriteAbiFunction.md)
- [WriteCallFunctionDto](docs/WriteCallFunctionDto.md)
- [WriteCallFunctionDtoAbiFunction](docs/WriteCallFunctionDtoAbiFunction.md)
diff --git a/docs/AdditionalInfoRequestAdditionalInfo.md b/docs/AdditionalInfoRequestAdditionalInfo.md
index 839f3ecf..066973e1 100644
--- a/docs/AdditionalInfoRequestAdditionalInfo.md
+++ b/docs/AdditionalInfoRequestAdditionalInfo.md
@@ -22,8 +22,8 @@ Name | Type | Description | Notes
**aba_country** | **str** | The country for the ABA transfer (ISO 3166-1 alpha-2 code) |
**spei_clabe** | **str** | The CLABE (Clave Bancaria Estandarizada) number for SPEI transfers |
**spei_name** | **str** | The name associated with the SPEI account | [optional]
-**rail** | **str** | The payment rail type for Lebanese bank transfers |
-**addressing_system** | **str** | The addressing system used for Lebanese bank transfers (Bank Account Number) |
+**rail** | **str** | The payment rail type for CHAPS transfers |
+**addressing_system** | **str** | The addressing system used for CHAPS transfers |
**country** | **str** | The country for the transfer (ISO 3166-1 alpha-2 code) |
**bank_name** | **str** | The name of the bank |
**beneficiary_rfc** | **str** | The RFC (Registro Federal de Contribuyentes) of the beneficiary | [optional]
@@ -38,7 +38,7 @@ Name | Type | Description | Notes
**bank_address** | **str** | The address of the bank | [optional]
**purpose_code** | **str** | The purpose code for the transfer | [optional]
**tax_id** | **str** | The tax identification number | [optional]
-**account_number** | **str** | The bank account number |
+**account_number** | **str** | UK bank account number |
**routing_number** | **str** | The bank routing number (ABA routing number) |
**account_type** | **str** | The type of bank account |
**swift_code** | **str** | The SWIFT/BIC code of the bank |
@@ -52,6 +52,15 @@ Name | Type | Description | Notes
**provider** | **str** | The mobile money service provider |
**beneficiary_document_id** | **str** | The document ID of the beneficiary | [optional]
**beneficiary_relationship** | **str** | The relationship between sender and beneficiary | [optional]
+**recipient_handle_type** | **str** | The type of recipient handler being used |
+**recipient_handle_value** | **str** | Email address registered for Interac e-Transfer |
+**message** | **str** | The message to be sent to the recipient |
+**value** | **str** | The PayID identifier (email, phone, ABN, or organization ID) |
+**type** | **str** | The type of PayID being used |
+**bsb** | **str** | Bank State Branch (BSB) number (6 digits, format XXX-XXX) | [optional]
+**sort_code** | **str** | UK bank sort code (format XX-XX-XX) |
+**bank_account_country** | **str** | CHAPS bank account holder name |
+**bank_account_holder_name** | **str** | CHAPS bank account holder name |
## Example
diff --git a/docs/ChapsAddress.md b/docs/ChapsAddress.md
new file mode 100644
index 00000000..9f95ba82
--- /dev/null
+++ b/docs/ChapsAddress.md
@@ -0,0 +1,34 @@
+# ChapsAddress
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**account_holder** | [**AccountHolderDetails**](AccountHolderDetails.md) | |
+**sort_code** | **str** | UK bank sort code (format XX-XX-XX) |
+**account_number** | **str** | UK bank account number |
+**bank_name** | **str** | Name of the bank | [optional]
+**bank_account_country** | **str** | CHAPS bank account holder name |
+**bank_account_holder_name** | **str** | CHAPS bank account holder name |
+
+## Example
+
+```python
+from fireblocks.models.chaps_address import ChapsAddress
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ChapsAddress from a JSON string
+chaps_address_instance = ChapsAddress.from_json(json)
+# print the JSON string representation of the object
+print(ChapsAddress.to_json())
+
+# convert the object into a dict
+chaps_address_dict = chaps_address_instance.to_dict()
+# create an instance of ChapsAddress from a dict
+chaps_address_from_dict = ChapsAddress.from_dict(chaps_address_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/ChapsDestination.md b/docs/ChapsDestination.md
new file mode 100644
index 00000000..d3b81b3b
--- /dev/null
+++ b/docs/ChapsDestination.md
@@ -0,0 +1,30 @@
+# ChapsDestination
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **str** | |
+**address** | [**ChapsAddress**](ChapsAddress.md) | |
+
+## Example
+
+```python
+from fireblocks.models.chaps_destination import ChapsDestination
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ChapsDestination from a JSON string
+chaps_destination_instance = ChapsDestination.from_json(json)
+# print the JSON string representation of the object
+print(ChapsDestination.to_json())
+
+# convert the object into a dict
+chaps_destination_dict = chaps_destination_instance.to_dict()
+# create an instance of ChapsDestination from a dict
+chaps_destination_from_dict = ChapsDestination.from_dict(chaps_destination_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/ChapsPaymentInfo.md b/docs/ChapsPaymentInfo.md
new file mode 100644
index 00000000..4417d600
--- /dev/null
+++ b/docs/ChapsPaymentInfo.md
@@ -0,0 +1,39 @@
+# ChapsPaymentInfo
+
+CHAPS payment information for UK pound sterling same-day transfers
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**rail** | **str** | The payment rail type for CHAPS transfers |
+**addressing_system** | **str** | The addressing system used for CHAPS transfers |
+**account_holder_given_name** | **str** | The given name (first name) of the account holder |
+**account_holder_surname** | **str** | The surname (last name) of the account holder |
+**country** | **str** | The country for the transfer (ISO 3166-1 alpha-2 code) |
+**sort_code** | **str** | UK bank sort code (format XX-XX-XX) |
+**account_number** | **str** | UK bank account number |
+**bank_name** | **str** | The name of the bank | [optional]
+**bank_account_country** | **str** | CHAPS bank account holder name |
+**bank_account_holder_name** | **str** | CHAPS bank account holder name |
+
+## Example
+
+```python
+from fireblocks.models.chaps_payment_info import ChapsPaymentInfo
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ChapsPaymentInfo from a JSON string
+chaps_payment_info_instance = ChapsPaymentInfo.from_json(json)
+# print the JSON string representation of the object
+print(ChapsPaymentInfo.to_json())
+
+# convert the object into a dict
+chaps_payment_info_dict = chaps_payment_info_instance.to_dict()
+# create an instance of ChapsPaymentInfo from a dict
+chaps_payment_info_from_dict = ChapsPaymentInfo.from_dict(chaps_payment_info_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/docs/CreateQuote.md b/docs/CreateQuote.md
index b57cf95a..e11c2dd6 100644
--- a/docs/CreateQuote.md
+++ b/docs/CreateQuote.md
@@ -7,8 +7,10 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**scope** | [**List[CreateQuoteScopeInner]**](CreateQuoteScopeInner.md) | |
**base_asset_id** | **str** | The asset you receive on BUY / give on SELL. |
+**base_asset_rail** | [**TransferRail**](TransferRail.md) | | [optional]
**quote_asset_id** | **str** | The counter asset used to pay/receive. |
-**base_amount** | **str** | The amount to convert from |
+**quote_asset_rail** | [**TransferRail**](TransferRail.md) | | [optional]
+**base_amount** | **str** | Amount in baseAssetId. BUY = base amount to receive; SELL = base amount to sell. |
**slippage_bps** | **float** | Slippage tolerance in basis points (bps) for defi quotes - 1 is 0.01% and 10000 is 100% | [optional] [default to 50]
**settlement** | [**DVPSettlement**](DVPSettlement.md) | | [optional]
**side** | [**Side**](Side.md) | |
diff --git a/docs/ExecutionRequestBaseDetails.md b/docs/ExecutionRequestBaseDetails.md
index dfd636e7..521d0365 100644
--- a/docs/ExecutionRequestBaseDetails.md
+++ b/docs/ExecutionRequestBaseDetails.md
@@ -6,10 +6,10 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**side** | [**Side**](Side.md) | |
-**base_amount** | **str** | Amount to convert |
-**base_asset_id** | **str** | Source asset identifier |
+**base_amount** | **str** | Amount in baseAssetId. BUY = base amount to receive; SELL = base amount to sell. |
+**base_asset_id** | **str** | The asset you receive on BUY / give on SELL. |
**base_asset_rail** | [**TransferRail**](TransferRail.md) | | [optional]
-**quote_asset_id** | **str** | Target asset identifier |
+**quote_asset_id** | **str** | Counter asset used to pay/receive |
**quote_asset_rail** | [**TransferRail**](TransferRail.md) | | [optional]
## Example
diff --git a/docs/ExecutionRequestDetails.md b/docs/ExecutionRequestDetails.md
index 7c7b8243..ef4445cd 100644
--- a/docs/ExecutionRequestDetails.md
+++ b/docs/ExecutionRequestDetails.md
@@ -8,10 +8,10 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**type** | [**QuoteTypeEnum**](QuoteTypeEnum.md) | |
**side** | [**Side**](Side.md) | |
-**base_amount** | **str** | Amount to convert |
-**base_asset_id** | **str** | Source asset identifier |
+**base_amount** | **str** | Amount in baseAssetId. BUY = base amount to receive; SELL = base amount to sell. |
+**base_asset_id** | **str** | The asset you receive on BUY / give on SELL. |
**base_asset_rail** | [**TransferRail**](TransferRail.md) | | [optional]
-**quote_asset_id** | **str** | Target asset identifier |
+**quote_asset_id** | **str** | Counter asset used to pay/receive |
**quote_asset_rail** | [**TransferRail**](TransferRail.md) | | [optional]
**quote_id** | **str** | Quote ID for quote orders |
**re_quote** | [**ReQuoteDetailsReQuote**](ReQuoteDetailsReQuote.md) | | [optional]
diff --git a/docs/ExternalAccountLocalBankAfrica.md b/docs/ExternalAccountLocalBankAfrica.md
index d42e65e3..bd5b92fd 100644
--- a/docs/ExternalAccountLocalBankAfrica.md
+++ b/docs/ExternalAccountLocalBankAfrica.md
@@ -5,10 +5,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**type** | [**ExternalAccountLocalBankAfricaType**](ExternalAccountLocalBankAfricaType.md) | |
-**account_number** | **str** | |
-**bank_name** | **str** | Name of the bank |
-**bank_code** | **str** | Internal bank identifier |
+**success_redirect_url** | **str** | URL to redirect the end user back to after they complete the payment on the bank/mobile provider page (e.g., the merchant checkout page) | [optional]
## Example
diff --git a/docs/ExternalAccountLocalBankAfricaType.md b/docs/ExternalAccountLocalBankAfricaType.md
deleted file mode 100644
index 6559c395..00000000
--- a/docs/ExternalAccountLocalBankAfricaType.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# ExternalAccountLocalBankAfricaType
-
-
-## Enum
-
-* `LOCAL_BANK_AFRICA_RAIL` (value: `'LOCAL_BANK_AFRICA_RAIL'`)
-
-[[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/ExternalAccountMobileMoney.md b/docs/ExternalAccountMobileMoney.md
index 8b241d2b..f5c34019 100644
--- a/docs/ExternalAccountMobileMoney.md
+++ b/docs/ExternalAccountMobileMoney.md
@@ -9,6 +9,7 @@ Name | Type | Description | Notes
**mobile_phone_number** | **str** | Mobile phone number in E.164 format |
**provider** | [**ExternalAccountMobileMoneyProvider**](ExternalAccountMobileMoneyProvider.md) | |
**email** | **str** | |
+**success_redirect_url** | **str** | URL to redirect the end user back to after they complete the payment on the bank/mobile provider page (e.g., the merchant checkout page) | [optional]
## Example
diff --git a/docs/ExternalAccountSenderInformation.md b/docs/ExternalAccountSenderInformation.md
index 7e648051..e174606f 100644
--- a/docs/ExternalAccountSenderInformation.md
+++ b/docs/ExternalAccountSenderInformation.md
@@ -6,13 +6,11 @@ Additional data for the external account, depending on the type used.
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**type** | [**ExternalAccountLocalBankAfricaType**](ExternalAccountLocalBankAfricaType.md) | |
+**type** | [**ExternalAccountMobileMoneyType**](ExternalAccountMobileMoneyType.md) | |
**mobile_phone_number** | **str** | Mobile phone number in E.164 format |
**provider** | [**ExternalAccountMobileMoneyProvider**](ExternalAccountMobileMoneyProvider.md) | |
**email** | **str** | |
-**account_number** | **str** | |
-**bank_name** | **str** | Name of the bank |
-**bank_code** | **str** | Internal bank identifier |
+**success_redirect_url** | **str** | URL to redirect the end user back to after they complete the payment on the bank/mobile provider page (e.g., the merchant checkout page) | [optional]
## Example
diff --git a/docs/ExtraParameters.md b/docs/ExtraParameters.md
new file mode 100644
index 00000000..7817a9e6
--- /dev/null
+++ b/docs/ExtraParameters.md
@@ -0,0 +1,36 @@
+# ExtraParameters
+
+Additional protocol / operation specific key-value parameters: For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set to the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs) For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata) For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. For **exchange compliance (e.g., Binance) and Travel Rule purposes**, include the key `piiData` containing a **custom JSON structure** with Personally Identifiable Information (PII) relevant to the transaction. This data must be fully **encrypted by the sender** before being submitted to the Fireblocks API. The recommended encryption method is **hybrid encryption** using AES-256-GCM for the payload and RSA-OAEP for key exchange, with the recipient exchange's public key. [development libraries](https://developers.fireblocks.com/docs/a-developers-guide-to-constructing-encrypted-pii-messages-for-binance-via-fireblocks) **Note:** `rawMessageData`, `contractCallData`, and `inputsSelection` cannot be used together in the same call.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**node_controls** | **Dict[str, object]** | | [optional]
+**raw_message_data** | **Dict[str, object]** | | [optional]
+**contract_call_data** | **str** | | [optional]
+**program_call_data** | **str** | | [optional]
+**inputs_selection** | **Dict[str, object]** | | [optional]
+**allow_base_asset_address** | **bool** | | [optional]
+**pii_data** | **Dict[str, object]** | | [optional]
+
+## Example
+
+```python
+from fireblocks.models.extra_parameters import ExtraParameters
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ExtraParameters from a JSON string
+extra_parameters_instance = ExtraParameters.from_json(json)
+# print the JSON string representation of the object
+print(ExtraParameters.to_json())
+
+# convert the object into a dict
+extra_parameters_dict = extra_parameters_instance.to_dict()
+# create an instance of ExtraParameters from a dict
+extra_parameters_from_dict = ExtraParameters.from_dict(extra_parameters_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/FiatDestination.md b/docs/FiatDestination.md
index 89f645db..adbd15da 100644
--- a/docs/FiatDestination.md
+++ b/docs/FiatDestination.md
@@ -6,7 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**type** | **str** | |
-**address** | [**EuropeanSEPAAddress**](EuropeanSEPAAddress.md) | |
+**address** | [**InternalTransferAddress**](InternalTransferAddress.md) | |
## Example
diff --git a/docs/InteracAddress.md b/docs/InteracAddress.md
new file mode 100644
index 00000000..c6ad53a5
--- /dev/null
+++ b/docs/InteracAddress.md
@@ -0,0 +1,31 @@
+# InteracAddress
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**account_holder** | [**AccountHolderDetails**](AccountHolderDetails.md) | |
+**recipient_handle** | [**RecipientHandle**](RecipientHandle.md) | |
+**message** | **str** | The message to be sent to the recipient | [optional]
+
+## Example
+
+```python
+from fireblocks.models.interac_address import InteracAddress
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of InteracAddress from a JSON string
+interac_address_instance = InteracAddress.from_json(json)
+# print the JSON string representation of the object
+print(InteracAddress.to_json())
+
+# convert the object into a dict
+interac_address_dict = interac_address_instance.to_dict()
+# create an instance of InteracAddress from a dict
+interac_address_from_dict = InteracAddress.from_dict(interac_address_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/InteracDestination.md b/docs/InteracDestination.md
new file mode 100644
index 00000000..8cce329d
--- /dev/null
+++ b/docs/InteracDestination.md
@@ -0,0 +1,30 @@
+# InteracDestination
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **str** | |
+**address** | [**InteracAddress**](InteracAddress.md) | |
+
+## Example
+
+```python
+from fireblocks.models.interac_destination import InteracDestination
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of InteracDestination from a JSON string
+interac_destination_instance = InteracDestination.from_json(json)
+# print the JSON string representation of the object
+print(InteracDestination.to_json())
+
+# convert the object into a dict
+interac_destination_dict = interac_destination_instance.to_dict()
+# create an instance of InteracDestination from a dict
+interac_destination_from_dict = InteracDestination.from_dict(interac_destination_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/InteracPaymentInfo.md b/docs/InteracPaymentInfo.md
new file mode 100644
index 00000000..b9f38cd1
--- /dev/null
+++ b/docs/InteracPaymentInfo.md
@@ -0,0 +1,37 @@
+# InteracPaymentInfo
+
+Interac e-Transfer payment information for Canadian dollar transfers
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**rail** | **str** | The payment rail type for Interac transfers |
+**addressing_system** | **str** | The addressing system used for Interac transfers |
+**account_holder_given_name** | **str** | The given name (first name) of the account holder |
+**account_holder_surname** | **str** | The surname (last name) of the account holder |
+**country** | **str** | The country for the transfer (ISO 3166-1 alpha-2 code) |
+**recipient_handle_type** | **str** | The type of recipient handler being used |
+**recipient_handle_value** | **str** | Email address registered for Interac e-Transfer |
+**message** | **str** | The message to be sent to the recipient |
+
+## Example
+
+```python
+from fireblocks.models.interac_payment_info import InteracPaymentInfo
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of InteracPaymentInfo from a JSON string
+interac_payment_info_instance = InteracPaymentInfo.from_json(json)
+# print the JSON string representation of the object
+print(InteracPaymentInfo.to_json())
+
+# convert the object into a dict
+interac_payment_info_dict = interac_payment_info_instance.to_dict()
+# create an instance of InteracPaymentInfo from a dict
+interac_payment_info_from_dict = InteracPaymentInfo.from_dict(interac_payment_info_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/docs/InternalTransferAddress.md b/docs/InternalTransferAddress.md
new file mode 100644
index 00000000..2f7414dd
--- /dev/null
+++ b/docs/InternalTransferAddress.md
@@ -0,0 +1,30 @@
+# InternalTransferAddress
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**external_account_id** | **str** | The provider's identifier for the external account. This enables the user to fund the account externally (outside of Fireblocks) if needed. | [optional]
+**account_id** | **str** | The Fireblocks account ID where the user should deposit the funds. |
+
+## Example
+
+```python
+from fireblocks.models.internal_transfer_address import InternalTransferAddress
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of InternalTransferAddress from a JSON string
+internal_transfer_address_instance = InternalTransferAddress.from_json(json)
+# print the JSON string representation of the object
+print(InternalTransferAddress.to_json())
+
+# convert the object into a dict
+internal_transfer_address_dict = internal_transfer_address_instance.to_dict()
+# create an instance of InternalTransferAddress from a dict
+internal_transfer_address_from_dict = InternalTransferAddress.from_dict(internal_transfer_address_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/InternalTransferDestination.md b/docs/InternalTransferDestination.md
new file mode 100644
index 00000000..41e8b9a7
--- /dev/null
+++ b/docs/InternalTransferDestination.md
@@ -0,0 +1,30 @@
+# InternalTransferDestination
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **str** | |
+**address** | [**InternalTransferAddress**](InternalTransferAddress.md) | | [optional]
+
+## Example
+
+```python
+from fireblocks.models.internal_transfer_destination import InternalTransferDestination
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of InternalTransferDestination from a JSON string
+internal_transfer_destination_instance = InternalTransferDestination.from_json(json)
+# print the JSON string representation of the object
+print(InternalTransferDestination.to_json())
+
+# convert the object into a dict
+internal_transfer_destination_dict = internal_transfer_destination_instance.to_dict()
+# create an instance of InternalTransferDestination from a dict
+internal_transfer_destination_from_dict = InternalTransferDestination.from_dict(internal_transfer_destination_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/LocalBankTransferAfricaAddress.md b/docs/LocalBankTransferAfricaAddress.md
index 61830dd5..6d68c49d 100644
--- a/docs/LocalBankTransferAfricaAddress.md
+++ b/docs/LocalBankTransferAfricaAddress.md
@@ -9,6 +9,8 @@ Name | Type | Description | Notes
**account_number** | **str** | |
**bank_name** | **str** | Name of the bank |
**bank_code** | **str** | Internal bank identifier |
+**success_payment_instruction_redirect_url** | **str** | The URL to redirect to after the payment instruction is successful | [optional]
+**payment_redirect** | [**PaymentRedirect**](PaymentRedirect.md) | | [optional]
## Example
diff --git a/docs/MarketExecutionRequestDetails.md b/docs/MarketExecutionRequestDetails.md
index e35808b5..508bb1e7 100644
--- a/docs/MarketExecutionRequestDetails.md
+++ b/docs/MarketExecutionRequestDetails.md
@@ -7,10 +7,10 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**type** | [**MarketTypeEnum**](MarketTypeEnum.md) | |
**side** | [**Side**](Side.md) | |
-**base_amount** | **str** | Amount to convert |
-**base_asset_id** | **str** | Source asset identifier |
+**base_amount** | **str** | Amount in baseAssetId. BUY = base amount to receive; SELL = base amount to sell. |
+**base_asset_id** | **str** | The asset you receive on BUY / give on SELL. |
**base_asset_rail** | [**TransferRail**](TransferRail.md) | | [optional]
-**quote_asset_id** | **str** | Target asset identifier |
+**quote_asset_id** | **str** | Counter asset used to pay/receive |
**quote_asset_rail** | [**TransferRail**](TransferRail.md) | | [optional]
## Example
diff --git a/docs/MobileMoneyAddress.md b/docs/MobileMoneyAddress.md
index b5783c24..fdb34182 100644
--- a/docs/MobileMoneyAddress.md
+++ b/docs/MobileMoneyAddress.md
@@ -10,6 +10,8 @@ Name | Type | Description | Notes
**provider** | **str** | Mobile money provider |
**beneficiary_document_id** | **str** | Beneficiary document identification (may be required) | [optional]
**beneficiary_relationship** | **str** | Relationship to beneficiary for AML purposes | [optional]
+**success_payment_instruction_redirect_url** | **str** | The URL to redirect to after the payment instruction is successful | [optional]
+**payment_redirect** | [**PaymentRedirect**](PaymentRedirect.md) | | [optional]
## Example
diff --git a/docs/PayidAddress.md b/docs/PayidAddress.md
new file mode 100644
index 00000000..cb6b0dae
--- /dev/null
+++ b/docs/PayidAddress.md
@@ -0,0 +1,33 @@
+# PayidAddress
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**account_holder** | [**AccountHolderDetails**](AccountHolderDetails.md) | |
+**value** | **str** | The PayID identifier (email, phone, ABN, or organization ID) |
+**type** | **str** | The type of PayID being used |
+**bsb** | **str** | Bank State Branch (BSB) number (6 digits, format XXX-XXX) | [optional]
+**account_number** | **str** | Australian bank account number |
+
+## Example
+
+```python
+from fireblocks.models.payid_address import PayidAddress
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of PayidAddress from a JSON string
+payid_address_instance = PayidAddress.from_json(json)
+# print the JSON string representation of the object
+print(PayidAddress.to_json())
+
+# convert the object into a dict
+payid_address_dict = payid_address_instance.to_dict()
+# create an instance of PayidAddress from a dict
+payid_address_from_dict = PayidAddress.from_dict(payid_address_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/PayidDestination.md b/docs/PayidDestination.md
new file mode 100644
index 00000000..73fb8c1b
--- /dev/null
+++ b/docs/PayidDestination.md
@@ -0,0 +1,30 @@
+# PayidDestination
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **str** | |
+**address** | [**PayidAddress**](PayidAddress.md) | |
+
+## Example
+
+```python
+from fireblocks.models.payid_destination import PayidDestination
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of PayidDestination from a JSON string
+payid_destination_instance = PayidDestination.from_json(json)
+# print the JSON string representation of the object
+print(PayidDestination.to_json())
+
+# convert the object into a dict
+payid_destination_dict = payid_destination_instance.to_dict()
+# create an instance of PayidDestination from a dict
+payid_destination_from_dict = PayidDestination.from_dict(payid_destination_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/PayidPaymentInfo.md b/docs/PayidPaymentInfo.md
new file mode 100644
index 00000000..16b6a1e6
--- /dev/null
+++ b/docs/PayidPaymentInfo.md
@@ -0,0 +1,38 @@
+# PayidPaymentInfo
+
+PayID payment information for Australian dollar transfers
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**rail** | **str** | The payment rail type for PayID transfers |
+**addressing_system** | **str** | The addressing system used for PayID transfers |
+**account_holder_given_name** | **str** | The given name (first name) of the account holder |
+**account_holder_surname** | **str** | The surname (last name) of the account holder |
+**country** | **str** | The country for the transfer (ISO 3166-1 alpha-2 code) |
+**value** | **str** | The PayID identifier (email, phone, ABN, or organization ID) |
+**type** | **str** | The type of PayID being used |
+**bsb** | **str** | Bank State Branch (BSB) number (6 digits, format XXX-XXX) | [optional]
+**account_number** | **str** | Australian bank account number |
+
+## Example
+
+```python
+from fireblocks.models.payid_payment_info import PayidPaymentInfo
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of PayidPaymentInfo from a JSON string
+payid_payment_info_instance = PayidPaymentInfo.from_json(json)
+# print the JSON string representation of the object
+print(PayidPaymentInfo.to_json())
+
+# convert the object into a dict
+payid_payment_info_dict = payid_payment_info_instance.to_dict()
+# create an instance of PayidPaymentInfo from a dict
+payid_payment_info_from_dict = PayidPaymentInfo.from_dict(payid_payment_info_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/docs/PaymentInstructions.md b/docs/PaymentInstructions.md
index b5f4a75d..d25655d4 100644
--- a/docs/PaymentInstructions.md
+++ b/docs/PaymentInstructions.md
@@ -6,7 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**type** | **str** | The type of destination. Use \"BLOCKCHAIN\" for blockchain address destinations. |
-**address** | [**EuropeanSEPAAddress**](EuropeanSEPAAddress.md) | |
+**address** | [**InternalTransferAddress**](InternalTransferAddress.md) | |
**reference_id** | **str** | | [optional]
## Example
diff --git a/docs/PaymentInstructionsOneOf.md b/docs/PaymentInstructionsOneOf.md
index eeb80383..40ccef8e 100644
--- a/docs/PaymentInstructionsOneOf.md
+++ b/docs/PaymentInstructionsOneOf.md
@@ -6,7 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**type** | **str** | |
-**address** | [**EuropeanSEPAAddress**](EuropeanSEPAAddress.md) | |
+**address** | [**InternalTransferAddress**](InternalTransferAddress.md) | |
**reference_id** | **str** | | [optional]
## Example
diff --git a/docs/PaymentRedirect.md b/docs/PaymentRedirect.md
new file mode 100644
index 00000000..76c6f9c1
--- /dev/null
+++ b/docs/PaymentRedirect.md
@@ -0,0 +1,31 @@
+# PaymentRedirect
+
+URL returned by the provider that the end user will be redirected to in order to complete the payment on the bank/mobile provider page. After completion, the bank/mobile provider redirects the end user back to successRedirectUrl (provided in the RAMP request)
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**url** | **str** | URL to redirect to | [optional]
+**expires_at** | **str** | Expiration date of the redirect | [optional]
+
+## Example
+
+```python
+from fireblocks.models.payment_redirect import PaymentRedirect
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of PaymentRedirect from a JSON string
+payment_redirect_instance = PaymentRedirect.from_json(json)
+# print the JSON string representation of the object
+print(PaymentRedirect.to_json())
+
+# convert the object into a dict
+payment_redirect_dict = payment_redirect_instance.to_dict()
+# create an instance of PaymentRedirect from a dict
+payment_redirect_from_dict = PaymentRedirect.from_dict(payment_redirect_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/PixAddress.md b/docs/PixAddress.md
index ecf970dd..a847ed2c 100644
--- a/docs/PixAddress.md
+++ b/docs/PixAddress.md
@@ -10,6 +10,8 @@ Name | Type | Description | Notes
**key_type** | **str** | |
**bank_name** | **str** | | [optional]
**bank_code** | **str** | | [optional]
+**qr_code** | **str** | The QR code to be used for the transfer | [optional]
+**expiration_date** | **str** | The expiration date of the QR code | [optional]
## Example
diff --git a/docs/RecipientHandle.md b/docs/RecipientHandle.md
new file mode 100644
index 00000000..3629eea4
--- /dev/null
+++ b/docs/RecipientHandle.md
@@ -0,0 +1,30 @@
+# RecipientHandle
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **str** | |
+**value** | **str** | The value of the recipient handle |
+
+## Example
+
+```python
+from fireblocks.models.recipient_handle import RecipientHandle
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of RecipientHandle from a JSON string
+recipient_handle_instance = RecipientHandle.from_json(json)
+# print the JSON string representation of the object
+print(RecipientHandle.to_json())
+
+# convert the object into a dict
+recipient_handle_dict = recipient_handle_instance.to_dict()
+# create an instance of RecipientHandle from a dict
+recipient_handle_from_dict = RecipientHandle.from_dict(recipient_handle_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/StakingApi.md b/docs/StakingApi.md
index 189a46e6..de0371ea 100644
--- a/docs/StakingApi.md
+++ b/docs/StakingApi.md
@@ -6,6 +6,7 @@ Method | HTTP request | Description
------------- | ------------- | -------------
[**approve_terms_of_service_by_provider_id**](StakingApi.md#approve_terms_of_service_by_provider_id) | **POST** /staking/providers/{providerId}/approveTermsOfService | Approve provider terms of service
[**claim_rewards**](StakingApi.md#claim_rewards) | **POST** /staking/chains/{chainDescriptor}/claim_rewards | Claim accrued rewards
+[**consolidate**](StakingApi.md#consolidate) | **POST** /staking/chains/{chainDescriptor}/consolidate | Consolidate staking positions (ETH validator consolidation)
[**get_all_delegations**](StakingApi.md#get_all_delegations) | **GET** /staking/positions | List staking positions
[**get_chain_info**](StakingApi.md#get_chain_info) | **GET** /staking/chains/{chainDescriptor}/chainInfo | Get chain-level staking parameters
[**get_chains**](StakingApi.md#get_chains) | **GET** /staking/chains | List supported staking chains
@@ -178,6 +179,91 @@ 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)
+# **consolidate**
+> MergeStakeAccountsResponse consolidate(chain_descriptor, merge_stake_accounts_request, idempotency_key=idempotency_key)
+
+Consolidate staking positions (ETH validator consolidation)
+
+Consolidates the source staking position into the destination, merging the balance into the destination and closing the source position once complete. Both positions must be from the same validator provider and same vault account. On chain, this translates into a consolidation transaction, where the source validator is consolidated into the destination validator. Supported chains: Ethereum (ETH) only.
+Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor.
+
+### Example
+
+
+```python
+from fireblocks.models.merge_stake_accounts_request import MergeStakeAccountsRequest
+from fireblocks.models.merge_stake_accounts_response import MergeStakeAccountsResponse
+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:
+ chain_descriptor = 'ETH' # str | Protocol identifier for the staking operation (e.g., ETH).
+ merge_stake_accounts_request = fireblocks.MergeStakeAccountsRequest() # MergeStakeAccountsRequest |
+ 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:
+ # Consolidate staking positions (ETH validator consolidation)
+ api_response = fireblocks.staking.consolidate(chain_descriptor, merge_stake_accounts_request, idempotency_key=idempotency_key).result()
+ print("The response of StakingApi->consolidate:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling StakingApi->consolidate: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **chain_descriptor** | **str**| Protocol identifier for the staking operation (e.g., ETH). |
+ **merge_stake_accounts_request** | [**MergeStakeAccountsRequest**](MergeStakeAccountsRequest.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
+
+[**MergeStakeAccountsResponse**](MergeStakeAccountsResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**201** | Merge request accepted and created. | * X-Request-ID -
|
+**400** | Bad request: missing/invalid fields, unsupported amount, or malformed payload. | * X-Request-ID -
|
+**403** | Forbidden: insufficient permissions, disabled feature, or restricted provider/validator. | * X-Request-ID -
|
+**404** | Not found: requested resource does not exist (e.g., position, validator, provider, or wallet). | * X-Request-ID -
|
+**429** | Rate limit exceeded: slow down and retry later. | * X-Request-ID -
|
+**500** | Internal error while processing the request. | * X-Request-ID -
|
+**0** | Error Response | * X-Request-ID -
|
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
# **get_all_delegations**
> List[Delegation] get_all_delegations(chain_descriptor=chain_descriptor)
diff --git a/docs/TransactionRequest.md b/docs/TransactionRequest.md
index 94608d94..2dfbbc3b 100644
--- a/docs/TransactionRequest.md
+++ b/docs/TransactionRequest.md
@@ -25,7 +25,7 @@ Name | Type | Description | Notes
**gas_price** | [**TransactionRequestGasPrice**](TransactionRequestGasPrice.md) | | [optional]
**network_fee** | [**TransactionRequestNetworkFee**](TransactionRequestNetworkFee.md) | | [optional]
**replace_tx_by_hash** | **str** | For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain. | [optional]
-**extra_parameters** | **object** | Additional protocol / operation specific key-value parameters: For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs) For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata) For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. For **exchange compliance (e.g., Binance) and Travel Rule purposes**, include the key `piiData` containing a **custom JSON structure** with Personally Identifiable Information (PII) relevant to the transaction. This data must be fully **encrypted by the sender** before being submitted to the Fireblocks API. The recommended encryption method is **hybrid encryption** using AES-256-GCM for the payload and RSA-OAEP for key exchange, with the recipient exchange’s public key. [development libraries](https://developers.fireblocks.com/docs/a-developers-guide-to-constructing-encrypted-pii-messages-for-binance-via-fireblocks) | [optional]
+**extra_parameters** | [**ExtraParameters**](ExtraParameters.md) | | [optional]
**customer_ref_id** | **str** | The ID for AML providers to associate the owner of funds with transactions. | [optional]
**travel_rule_message** | [**TravelRuleCreateTransactionRequest**](TravelRuleCreateTransactionRequest.md) | | [optional]
**travel_rule_message_id** | **str** | The ID of the travel rule message from any travel rule provider. Used for travel rule supporting functionality to associate transactions with existing travel rule messages. | [optional]
diff --git a/docs/TransactionResponse.md b/docs/TransactionResponse.md
index 0c7cf95a..201a8708 100644
--- a/docs/TransactionResponse.md
+++ b/docs/TransactionResponse.md
@@ -44,7 +44,7 @@ Name | Type | Description | Notes
**gas_limit** | **str** | Gas limit for EVM-based blockchain transactions | [optional]
**blockchain_index** | **str** | Blockchain-specific index or identifier for the transaction | [optional]
**paid_rent** | **str** | Solana rent payment amount | [optional]
-**extra_parameters** | **object** | Additional protocol / operation specific key-value parameters: For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs) For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata) For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. For **exchange compliance (e.g., Binance) and Travel Rule purposes**, include the key `piiData` containing a **custom JSON structure** with Personally Identifiable Information (PII) relevant to the transaction. This data must be fully **encrypted by the sender** before being submitted to the Fireblocks API. The recommended encryption method is **hybrid encryption** using AES-256-GCM for the payload and RSA-OAEP for key exchange, with the recipient exchange’s public key. [development libraries](https://developers.fireblocks.com/docs/a-developers-guide-to-constructing-encrypted-pii-messages-for-binance-via-fireblocks) | [optional]
+**extra_parameters** | [**ExtraParameters**](ExtraParameters.md) | | [optional]
**signed_messages** | [**List[SignedMessage]**](SignedMessage.md) | | [optional]
**num_of_confirmations** | **float** | The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy. | [optional]
**block_info** | [**BlockInfo**](BlockInfo.md) | | [optional]
diff --git a/docs/TransferRail.md b/docs/TransferRail.md
index ce37218b..9343dd6e 100644
--- a/docs/TransferRail.md
+++ b/docs/TransferRail.md
@@ -1,6 +1,6 @@
# TransferRail
-Transfer rail: * **BLOCKCHAIN** - Transfer over the public blockchain * **INTERNAL** - Internal transfer within the same account (e.g. sub-accounts or same api key) * **PEER** - Peer transfer within the same provider network * **SWIFT** - International wire transfer * **IBAN** - International Bank Account Number transfer * **US_WIRE** - Domestic wire transfer within the United States (e.g. FedWire) * **ACH** - Automated Clearing House transfer, typically takes longer but not as expensive as wire transfers * **SEPA** - Euro transfers within the SEPA zone * **SPEI** - Mexican interbank electronic payment system * **PIX** - Brazilian instant payment system * **LOCAL_BANK_TRANSFER_AFRICA** - Local bank transfers within Africa * **MOBILE_MONEY** - Mobile money transfers (e.g. M-Pesa)
+Transfer rail: * **BLOCKCHAIN** - Transfer over the public blockchain * **INTERNAL** - Internal transfer within the same account (e.g. sub-accounts or same api key) * **PEER** - Peer transfer within the same provider network * **SWIFT** - International wire transfer * **IBAN** - International Bank Account Number transfer * **US_WIRE** - Domestic wire transfer within the United States (e.g. FedWire) * **ACH** - Automated Clearing House transfer, typically takes longer but not as expensive as wire transfers * **SEPA** - Euro transfers within the SEPA zone * **SPEI** - Mexican interbank electronic payment system * **PIX** - Brazilian instant payment system * **LOCAL_BANK_TRANSFER_AFRICA** - Local bank transfers within Africa * **MOBILE_MONEY** - Mobile money transfers (e.g. M-Pesa) * **INTERNAL_TRANSFER** - Internal transfer within the same account * **INTERAC** - Canadian interbank transfer system * **PAYID** - Australian PayID payment system * **CHAPS** - The Clearing House Automated Payment System (CHAPS) is a real-time gross settlement payment system used for transactions in the United Kingdom
## Enum
@@ -28,6 +28,14 @@ Transfer rail: * **BLOCKCHAIN** - Transfer over the public blockchain * **INTER
* `MOBILE_MONEY` (value: `'MOBILE_MONEY'`)
+* `INTERNAL_TRANSFER` (value: `'INTERNAL_TRANSFER'`)
+
+* `INTERAC` (value: `'INTERAC'`)
+
+* `PAYID` (value: `'PAYID'`)
+
+* `CHAPS` (value: `'CHAPS'`)
+
[[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/VaultsApi.md b/docs/VaultsApi.md
index e2891f90..4c2232de 100644
--- a/docs/VaultsApi.md
+++ b/docs/VaultsApi.md
@@ -37,7 +37,7 @@ Method | HTTP request | Description
# **activate_asset_for_vault_account**
-> CreateVaultAssetResponse activate_asset_for_vault_account(vault_account_id, asset_id, idempotency_key=idempotency_key)
+> CreateVaultAssetResponse activate_asset_for_vault_account(vault_account_id, asset_id, idempotency_key=idempotency_key, blockchain_wallet_type=blockchain_wallet_type)
Activate a wallet in a vault account
@@ -73,10 +73,11 @@ with Fireblocks(configuration) as fireblocks:
vault_account_id = 'vault_account_id_example' # str | The ID of the vault account to return, or 'default' for the default vault account
asset_id = 'asset_id_example' # str | The ID of the asset
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)
+ blockchain_wallet_type = 'blockchain_wallet_type_example' # str | Optional immutable blockchain wallet type to store per tenant+vault (optional)
try:
# Activate a wallet in a vault account
- api_response = fireblocks.vaults.activate_asset_for_vault_account(vault_account_id, asset_id, idempotency_key=idempotency_key).result()
+ api_response = fireblocks.vaults.activate_asset_for_vault_account(vault_account_id, asset_id, idempotency_key=idempotency_key, blockchain_wallet_type=blockchain_wallet_type).result()
print("The response of VaultsApi->activate_asset_for_vault_account:\n")
pprint(api_response)
except Exception as e:
@@ -93,6 +94,7 @@ Name | Type | Description | Notes
**vault_account_id** | **str**| The ID of the vault account to return, or 'default' for the default vault account |
**asset_id** | **str**| The ID of the asset |
**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]
+ **blockchain_wallet_type** | **str**| Optional immutable blockchain wallet type to store per tenant+vault | [optional]
### Return type
@@ -283,6 +285,7 @@ Bulk creation of new vault accounts
Create multiple vault accounts by running an async job.
- The HBAR, TON, SUI, TERRA, ALGO, and DOT blockchains are not supported.
+- These endpoints are currently in beta and might be subject to changes.
- Limited to a maximum of 10,000 accounts per operation.
**Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor.
@@ -523,7 +526,7 @@ No authorization required
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **create_vault_account_asset**
-> CreateVaultAssetResponse create_vault_account_asset(vault_account_id, asset_id, idempotency_key=idempotency_key, create_assets_request=create_assets_request)
+> CreateVaultAssetResponse create_vault_account_asset(vault_account_id, asset_id, idempotency_key=idempotency_key, blockchain_wallet_type=blockchain_wallet_type, create_assets_request=create_assets_request)
Create a new vault wallet
@@ -560,11 +563,12 @@ with Fireblocks(configuration) as fireblocks:
vault_account_id = 'vault_account_id_example' # str | The ID of the vault account to return, or 'default' for the default vault account
asset_id = 'asset_id_example' # str | The ID of the asset
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)
+ blockchain_wallet_type = 'blockchain_wallet_type_example' # str | Optional immutable blockchain wallet type to store per tenant+vault (optional)
create_assets_request = fireblocks.CreateAssetsRequest() # CreateAssetsRequest | (optional)
try:
# Create a new vault wallet
- api_response = fireblocks.vaults.create_vault_account_asset(vault_account_id, asset_id, idempotency_key=idempotency_key, create_assets_request=create_assets_request).result()
+ api_response = fireblocks.vaults.create_vault_account_asset(vault_account_id, asset_id, idempotency_key=idempotency_key, blockchain_wallet_type=blockchain_wallet_type, create_assets_request=create_assets_request).result()
print("The response of VaultsApi->create_vault_account_asset:\n")
pprint(api_response)
except Exception as e:
@@ -581,6 +585,7 @@ Name | Type | Description | Notes
**vault_account_id** | **str**| The ID of the vault account to return, or 'default' for the default vault account |
**asset_id** | **str**| The ID of the asset |
**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]
+ **blockchain_wallet_type** | **str**| Optional immutable blockchain wallet type to store per tenant+vault | [optional]
**create_assets_request** | [**CreateAssetsRequest**](CreateAssetsRequest.md)| | [optional]
### Return type
diff --git a/docs/Workspace.md b/docs/Workspace.md
new file mode 100644
index 00000000..893f3d6d
--- /dev/null
+++ b/docs/Workspace.md
@@ -0,0 +1,30 @@
+# Workspace
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **str** | The ID of the workspace |
+**name** | **str** | The name of the workspace |
+
+## Example
+
+```python
+from fireblocks.models.workspace import Workspace
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of Workspace from a JSON string
+workspace_instance = Workspace.from_json(json)
+# print the JSON string representation of the object
+print(Workspace.to_json())
+
+# convert the object into a dict
+workspace_dict = workspace_instance.to_dict()
+# create an instance of Workspace from a dict
+workspace_from_dict = Workspace.from_dict(workspace_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/WorkspaceApi.md b/docs/WorkspaceApi.md
new file mode 100644
index 00000000..0f5b88db
--- /dev/null
+++ b/docs/WorkspaceApi.md
@@ -0,0 +1,80 @@
+# fireblocks.WorkspaceApi
+
+All URIs are relative to *https://api.fireblocks.io/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**get_workspace**](WorkspaceApi.md#get_workspace) | **GET** /workspace | Get workspace
+
+
+# **get_workspace**
+> Workspace get_workspace()
+
+Get workspace
+
+Returns the workspace ID and name for the authenticated user.
+
+
+### Example
+
+
+```python
+from fireblocks.models.workspace import Workspace
+from fireblocks.client import Fireblocks
+from fireblocks.client_configuration import ClientConfiguration
+from fireblocks.exceptions import ApiException
+from fireblocks.base_path import BasePath
+from pprint import pprint
+
+# load the secret key content from a file
+with open('your_secret_key_file_path', 'r') as file:
+ secret_key_value = file.read()
+
+# build the configuration
+configuration = ClientConfiguration(
+ api_key="your_api_key",
+ secret_key=secret_key_value,
+ base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1"
+)
+
+
+# Enter a context with an instance of the API client
+with Fireblocks(configuration) as fireblocks:
+
+ try:
+ # Get workspace
+ api_response = fireblocks.workspace.get_workspace().result()
+ print("The response of WorkspaceApi->get_workspace:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling WorkspaceApi->get_workspace: %s\n" % e)
+```
+
+
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+[**Workspace**](Workspace.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Workspace details | * X-Request-ID -
|
+**0** | Error Response | * X-Request-ID -
|
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/fireblocks/__init__.py b/fireblocks/__init__.py
index 574b4b69..a1994d50 100644
--- a/fireblocks/__init__.py
+++ b/fireblocks/__init__.py
@@ -15,7 +15,7 @@
""" # noqa: E501
-__version__ = "14.1.0"
+__version__ = "0.0.0"
# import apis into sdk package
from fireblocks.api.api_user_api import ApiUserApi
@@ -63,6 +63,7 @@
from fireblocks.api.web3_connections_api import Web3ConnectionsApi
from fireblocks.api.webhooks_api import WebhooksApi
from fireblocks.api.webhooks_v2_api import WebhooksV2Api
+from fireblocks.api.workspace_api import WorkspaceApi
from fireblocks.api.workspace_status_beta_api import WorkspaceStatusBetaApi
from fireblocks.api.whitelist_ip_addresses_api import WhitelistIpAddressesApi
@@ -234,6 +235,9 @@
from fireblocks.models.channel_dvn_config_with_confirmations_send_config import (
ChannelDvnConfigWithConfirmationsSendConfig,
)
+from fireblocks.models.chaps_address import ChapsAddress
+from fireblocks.models.chaps_destination import ChapsDestination
+from fireblocks.models.chaps_payment_info import ChapsPaymentInfo
from fireblocks.models.claim_rewards_request import ClaimRewardsRequest
from fireblocks.models.collection_burn_request_dto import CollectionBurnRequestDto
from fireblocks.models.collection_burn_response_dto import CollectionBurnResponseDto
@@ -611,9 +615,6 @@
from fireblocks.models.external_account_local_bank_africa import (
ExternalAccountLocalBankAfrica,
)
-from fireblocks.models.external_account_local_bank_africa_type import (
- ExternalAccountLocalBankAfricaType,
-)
from fireblocks.models.external_account_mobile_money import ExternalAccountMobileMoney
from fireblocks.models.external_account_mobile_money_provider import (
ExternalAccountMobileMoneyProvider,
@@ -626,6 +627,7 @@
)
from fireblocks.models.external_account_type import ExternalAccountType
from fireblocks.models.external_wallet_asset import ExternalWalletAsset
+from fireblocks.models.extra_parameters import ExtraParameters
from fireblocks.models.failure import Failure
from fireblocks.models.failure_reason import FailureReason
from fireblocks.models.fee import Fee
@@ -713,7 +715,12 @@
from fireblocks.models.initiator_config import InitiatorConfig
from fireblocks.models.initiator_config_pattern import InitiatorConfigPattern
from fireblocks.models.instruction_amount import InstructionAmount
+from fireblocks.models.interac_address import InteracAddress
+from fireblocks.models.interac_destination import InteracDestination
+from fireblocks.models.interac_payment_info import InteracPaymentInfo
from fireblocks.models.internal_reference import InternalReference
+from fireblocks.models.internal_transfer_address import InternalTransferAddress
+from fireblocks.models.internal_transfer_destination import InternalTransferDestination
from fireblocks.models.internal_transfer_response import InternalTransferResponse
from fireblocks.models.invalid_paramater_value_error import InvalidParamaterValueError
from fireblocks.models.job_created import JobCreated
@@ -877,11 +884,15 @@
from fireblocks.models.payee_account import PayeeAccount
from fireblocks.models.payee_account_response import PayeeAccountResponse
from fireblocks.models.payee_account_type import PayeeAccountType
+from fireblocks.models.payid_address import PayidAddress
+from fireblocks.models.payid_destination import PayidDestination
+from fireblocks.models.payid_payment_info import PayidPaymentInfo
from fireblocks.models.payment_account import PaymentAccount
from fireblocks.models.payment_account_response import PaymentAccountResponse
from fireblocks.models.payment_account_type import PaymentAccountType
from fireblocks.models.payment_instructions import PaymentInstructions
from fireblocks.models.payment_instructions_one_of import PaymentInstructionsOneOf
+from fireblocks.models.payment_redirect import PaymentRedirect
from fireblocks.models.payout_init_method import PayoutInitMethod
from fireblocks.models.payout_instruction import PayoutInstruction
from fireblocks.models.payout_instruction_response import PayoutInstructionResponse
@@ -951,6 +962,7 @@
from fireblocks.models.read_call_function_dto_abi_function import (
ReadCallFunctionDtoAbiFunction,
)
+from fireblocks.models.recipient_handle import RecipientHandle
from fireblocks.models.redeem_funds_to_linked_dda_response import (
RedeemFundsToLinkedDDAResponse,
)
@@ -1602,6 +1614,7 @@
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.workspace import Workspace
from fireblocks.models.write_abi_function import WriteAbiFunction
from fireblocks.models.write_call_function_dto import WriteCallFunctionDto
from fireblocks.models.write_call_function_dto_abi_function import (
diff --git a/fireblocks/api/__init__.py b/fireblocks/api/__init__.py
index 67dacdff..4a84f2bc 100644
--- a/fireblocks/api/__init__.py
+++ b/fireblocks/api/__init__.py
@@ -44,6 +44,7 @@
from fireblocks.api.web3_connections_api import Web3ConnectionsApi
from fireblocks.api.webhooks_api import WebhooksApi
from fireblocks.api.webhooks_v2_api import WebhooksV2Api
+from fireblocks.api.workspace_api import WorkspaceApi
from fireblocks.api.workspace_status_beta_api import WorkspaceStatusBetaApi
from fireblocks.api.whitelist_ip_addresses_api import WhitelistIpAddressesApi
diff --git a/fireblocks/api/staking_api.py b/fireblocks/api/staking_api.py
index 19cbbc96..cfb1fd11 100644
--- a/fireblocks/api/staking_api.py
+++ b/fireblocks/api/staking_api.py
@@ -357,6 +357,167 @@ def _claim_rewards_serialize(
+ @validate_call
+ def consolidate(
+ self,
+ chain_descriptor: Annotated[StrictStr, Field(description="Protocol identifier for the staking operation (e.g., ETH).")],
+ merge_stake_accounts_request: MergeStakeAccountsRequest,
+ 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[MergeStakeAccountsResponse]]:
+ """Consolidate staking positions (ETH validator consolidation)
+
+ Consolidates the source staking position into the destination, merging the balance into the destination and closing the source position once complete. Both positions must be from the same validator provider and same vault account. On chain, this translates into a consolidation transaction, where the source validator is consolidated into the destination validator. Supported chains: Ethereum (ETH) only. Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor.
+
+ :param chain_descriptor: Protocol identifier for the staking operation (e.g., ETH). (required)
+ :type chain_descriptor: str
+ :param merge_stake_accounts_request: (required)
+ :type merge_stake_accounts_request: MergeStakeAccountsRequest
+ :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="consolidate", param_name="chain_descriptor", param_value=chain_descriptor)
+
+ _param = self._consolidate_serialize(
+ chain_descriptor=chain_descriptor,
+ merge_stake_accounts_request=merge_stake_accounts_request,
+ idempotency_key=idempotency_key,
+ _request_auth=_request_auth,
+ _content_type=_content_type,
+ _headers=_headers,
+ _host_index=_host_index
+ )
+
+ _response_types_map: Dict[str, Optional[str]] = {
+ '201': "MergeStakeAccountsResponse",
+ '400': "ErrorSchema",
+ '403': "ErrorSchema",
+ '404': "ErrorSchema",
+ '429': "ErrorSchema",
+ '500': "ErrorSchema",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _consolidate_serialize(
+ self,
+ chain_descriptor,
+ merge_stake_accounts_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 chain_descriptor is not None:
+ _path_params['chainDescriptor'] = chain_descriptor
+ # 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 merge_stake_accounts_request is not None:
+ _body_params = merge_stake_accounts_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='/staking/chains/{chainDescriptor}/consolidate',
+ 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_all_delegations(
self,
diff --git a/fireblocks/api/vaults_api.py b/fireblocks/api/vaults_api.py
index a28fb393..d05ab8d7 100644
--- a/fireblocks/api/vaults_api.py
+++ b/fireblocks/api/vaults_api.py
@@ -75,6 +75,7 @@ def activate_asset_for_vault_account(
vault_account_id: Annotated[StrictStr, Field(description="The ID of the vault account to return, or 'default' for the default vault account")],
asset_id: Annotated[StrictStr, Field(description="The ID of the asset")],
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,
+ blockchain_wallet_type: Annotated[Optional[StrictStr], Field(description="Optional immutable blockchain wallet type to store per tenant+vault")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -98,6 +99,8 @@ def activate_asset_for_vault_account(
:type asset_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 blockchain_wallet_type: Optional immutable blockchain wallet type to store per tenant+vault
+ :type blockchain_wallet_type: 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
@@ -127,6 +130,7 @@ def activate_asset_for_vault_account(
vault_account_id=vault_account_id,
asset_id=asset_id,
idempotency_key=idempotency_key,
+ blockchain_wallet_type=blockchain_wallet_type,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -149,6 +153,7 @@ def _activate_asset_for_vault_account_serialize(
vault_account_id,
asset_id,
idempotency_key,
+ blockchain_wallet_type,
_request_auth,
_content_type,
_headers,
@@ -175,6 +180,10 @@ def _activate_asset_for_vault_account_serialize(
if asset_id is not None:
_path_params['assetId'] = asset_id
# process the query parameters
+ if blockchain_wallet_type is not None:
+
+ _query_params.append(('blockchainWalletType', blockchain_wallet_type))
+
# process the header parameters
if idempotency_key is not None:
_header_params['Idempotency-Key'] = idempotency_key
@@ -534,7 +543,7 @@ def create_multiple_accounts(
) -> Future[ApiResponse[JobCreated]]:
"""Bulk creation of new vault accounts
- Create multiple vault accounts by running an async job. - The HBAR, TON, SUI, TERRA, ALGO, and DOT blockchains are not supported. - Limited to a maximum of 10,000 accounts per operation. **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor.
+ Create multiple vault accounts by running an async job. - The HBAR, TON, SUI, TERRA, ALGO, and DOT blockchains are not supported. - These endpoints are currently in beta and might be subject to changes. - Limited to a maximum of 10,000 accounts per operation. **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor.
:param create_multiple_accounts_request: (required)
:type create_multiple_accounts_request: CreateMultipleAccountsRequest
@@ -964,6 +973,7 @@ def create_vault_account_asset(
vault_account_id: Annotated[StrictStr, Field(description="The ID of the vault account to return, or 'default' for the default vault account")],
asset_id: Annotated[StrictStr, Field(description="The ID of the asset")],
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,
+ blockchain_wallet_type: Annotated[Optional[StrictStr], Field(description="Optional immutable blockchain wallet type to store per tenant+vault")] = None,
create_assets_request: Optional[CreateAssetsRequest] = None,
_request_timeout: Union[
None,
@@ -988,6 +998,8 @@ def create_vault_account_asset(
:type asset_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 blockchain_wallet_type: Optional immutable blockchain wallet type to store per tenant+vault
+ :type blockchain_wallet_type: str
:param create_assets_request:
:type create_assets_request: CreateAssetsRequest
:param _request_timeout: timeout setting for this request. If one
@@ -1019,6 +1031,7 @@ def create_vault_account_asset(
vault_account_id=vault_account_id,
asset_id=asset_id,
idempotency_key=idempotency_key,
+ blockchain_wallet_type=blockchain_wallet_type,
create_assets_request=create_assets_request,
_request_auth=_request_auth,
_content_type=_content_type,
@@ -1042,6 +1055,7 @@ def _create_vault_account_asset_serialize(
vault_account_id,
asset_id,
idempotency_key,
+ blockchain_wallet_type,
create_assets_request,
_request_auth,
_content_type,
@@ -1069,6 +1083,10 @@ def _create_vault_account_asset_serialize(
if asset_id is not None:
_path_params['assetId'] = asset_id
# process the query parameters
+ if blockchain_wallet_type is not None:
+
+ _query_params.append(('blockchainWalletType', blockchain_wallet_type))
+
# process the header parameters
if idempotency_key is not None:
_header_params['Idempotency-Key'] = idempotency_key
diff --git a/fireblocks/api/workspace_api.py b/fireblocks/api/workspace_api.py
new file mode 100644
index 00000000..cba2fa90
--- /dev/null
+++ b/fireblocks/api/workspace_api.py
@@ -0,0 +1,160 @@
+# 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 fireblocks.models.workspace import Workspace
+
+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 WorkspaceApi:
+ """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_workspace(
+ self,
+ _request_timeout: Union[
+ None,
+ Annotated[StrictFloat, Field(gt=0)],
+ Tuple[
+ Annotated[StrictFloat, Field(gt=0)],
+ Annotated[StrictFloat, Field(gt=0)]
+ ]
+ ] = None,
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
+ _content_type: Optional[StrictStr] = None,
+ _headers: Optional[Dict[StrictStr, Any]] = None,
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
+ ) -> Future[ApiResponse[Workspace]]:
+ """Get workspace
+
+ Returns the workspace ID and name for the authenticated user.
+
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :type _request_timeout: int, tuple(int, int), optional
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the
+ authentication in the spec for a single request.
+ :type _request_auth: dict, optional
+ :param _content_type: force content-type for the request.
+ :type _content_type: str, Optional
+ :param _headers: set to override the headers for a single
+ request; this effectively ignores the headers
+ in the spec for a single request.
+ :type _headers: dict, optional
+ :param _host_index: set to override the host_index for a single
+ request; this effectively ignores the host_index
+ in the spec for a single request.
+ :type _host_index: int, optional
+ :return: Returns the result object.
+ """ # noqa: E501
+
+
+ _param = self._get_workspace_serialize(
+ _request_auth=_request_auth,
+ _content_type=_content_type,
+ _headers=_headers,
+ _host_index=_host_index
+ )
+
+ _response_types_map: Dict[str, Optional[str]] = {
+ '200': "Workspace",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _get_workspace_serialize(
+ self,
+ _request_auth,
+ _content_type,
+ _headers,
+ _host_index,
+ ) -> RequestSerialized:
+
+ _host = None
+
+ _collection_formats: Dict[str, str] = {
+ }
+
+ _path_params: Dict[str, str] = {}
+ _query_params: List[Tuple[str, str]] = []
+ _header_params: Dict[str, Optional[str]] = _headers or {}
+ _form_params: List[Tuple[str, str]] = []
+ _files: Dict[
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
+ ] = {}
+ _body_params: Optional[bytes] = None
+
+ # process the path parameters
+ # process the query parameters
+ # process the header parameters
+ # process the form parameters
+ # process the body parameter
+
+
+ # set the HTTP header `Accept`
+ if 'Accept' not in _header_params:
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ [
+ 'application/json'
+ ]
+ )
+
+
+ # authentication setting
+ _auth_settings: List[str] = [
+ ]
+
+ return self.api_client.param_serialize(
+ method='GET',
+ resource_path='/workspace',
+ 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/client.py b/fireblocks/client.py
index 3666ef9d..32633838 100644
--- a/fireblocks/client.py
+++ b/fireblocks/client.py
@@ -59,6 +59,7 @@
from fireblocks.api.web3_connections_api import Web3ConnectionsApi
from fireblocks.api.webhooks_api import WebhooksApi
from fireblocks.api.webhooks_v2_api import WebhooksV2Api
+from fireblocks.api.workspace_api import WorkspaceApi
from fireblocks.api.workspace_status_beta_api import WorkspaceStatusBetaApi
from fireblocks.api.whitelist_ip_addresses_api import WhitelistIpAddressesApi
@@ -115,6 +116,7 @@ def __init__(self, configuration: ClientConfiguration = None):
self._web3_connections = None
self._webhooks = None
self._webhooks_v2 = None
+ self._workspace = None
self._workspace_status_beta = None
self._whitelist_ip_addresses = None
@@ -387,6 +389,12 @@ def webhooks_v2(self) -> WebhooksV2Api:
self._webhooks_v2 = WebhooksV2Api(self._api_client)
return self._webhooks_v2
+ @property
+ def workspace(self) -> WorkspaceApi:
+ if self._workspace is None:
+ self._workspace = WorkspaceApi(self._api_client)
+ return self._workspace
+
@property
def workspace_status_beta(self) -> WorkspaceStatusBetaApi:
if self._workspace_status_beta is None:
diff --git a/fireblocks/configuration.py b/fireblocks/configuration.py
index c51e19f9..3f2e5962 100644
--- a/fireblocks/configuration.py
+++ b/fireblocks/configuration.py
@@ -552,7 +552,7 @@ def to_debug_report(self) -> str:
"OS: {env}\n"
"Python Version: {pyversion}\n"
"Version of the API: 1.6.2\n"
- "SDK Package Version: 14.1.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 8d9f2795..1ac4e333 100644
--- a/fireblocks/models/__init__.py
+++ b/fireblocks/models/__init__.py
@@ -139,6 +139,9 @@
from fireblocks.models.channel_dvn_config_with_confirmations import ChannelDvnConfigWithConfirmations
from fireblocks.models.channel_dvn_config_with_confirmations_receive_config import ChannelDvnConfigWithConfirmationsReceiveConfig
from fireblocks.models.channel_dvn_config_with_confirmations_send_config import ChannelDvnConfigWithConfirmationsSendConfig
+from fireblocks.models.chaps_address import ChapsAddress
+from fireblocks.models.chaps_destination import ChapsDestination
+from fireblocks.models.chaps_payment_info import ChapsPaymentInfo
from fireblocks.models.claim_rewards_request import ClaimRewardsRequest
from fireblocks.models.collection_burn_request_dto import CollectionBurnRequestDto
from fireblocks.models.collection_burn_response_dto import CollectionBurnResponseDto
@@ -358,13 +361,13 @@
from fireblocks.models.execution_transfer_operation import ExecutionTransferOperation
from fireblocks.models.external_account import ExternalAccount
from fireblocks.models.external_account_local_bank_africa import ExternalAccountLocalBankAfrica
-from fireblocks.models.external_account_local_bank_africa_type import ExternalAccountLocalBankAfricaType
from fireblocks.models.external_account_mobile_money import ExternalAccountMobileMoney
from fireblocks.models.external_account_mobile_money_provider import ExternalAccountMobileMoneyProvider
from fireblocks.models.external_account_mobile_money_type import ExternalAccountMobileMoneyType
from fireblocks.models.external_account_sender_information import ExternalAccountSenderInformation
from fireblocks.models.external_account_type import ExternalAccountType
from fireblocks.models.external_wallet_asset import ExternalWalletAsset
+from fireblocks.models.extra_parameters import ExtraParameters
from fireblocks.models.failure import Failure
from fireblocks.models.failure_reason import FailureReason
from fireblocks.models.fee import Fee
@@ -426,7 +429,12 @@
from fireblocks.models.initiator_config import InitiatorConfig
from fireblocks.models.initiator_config_pattern import InitiatorConfigPattern
from fireblocks.models.instruction_amount import InstructionAmount
+from fireblocks.models.interac_address import InteracAddress
+from fireblocks.models.interac_destination import InteracDestination
+from fireblocks.models.interac_payment_info import InteracPaymentInfo
from fireblocks.models.internal_reference import InternalReference
+from fireblocks.models.internal_transfer_address import InternalTransferAddress
+from fireblocks.models.internal_transfer_destination import InternalTransferDestination
from fireblocks.models.internal_transfer_response import InternalTransferResponse
from fireblocks.models.invalid_paramater_value_error import InvalidParamaterValueError
from fireblocks.models.job_created import JobCreated
@@ -534,11 +542,15 @@
from fireblocks.models.payee_account import PayeeAccount
from fireblocks.models.payee_account_response import PayeeAccountResponse
from fireblocks.models.payee_account_type import PayeeAccountType
+from fireblocks.models.payid_address import PayidAddress
+from fireblocks.models.payid_destination import PayidDestination
+from fireblocks.models.payid_payment_info import PayidPaymentInfo
from fireblocks.models.payment_account import PaymentAccount
from fireblocks.models.payment_account_response import PaymentAccountResponse
from fireblocks.models.payment_account_type import PaymentAccountType
from fireblocks.models.payment_instructions import PaymentInstructions
from fireblocks.models.payment_instructions_one_of import PaymentInstructionsOneOf
+from fireblocks.models.payment_redirect import PaymentRedirect
from fireblocks.models.payout_init_method import PayoutInitMethod
from fireblocks.models.payout_instruction import PayoutInstruction
from fireblocks.models.payout_instruction_response import PayoutInstructionResponse
@@ -598,6 +610,7 @@
from fireblocks.models.read_abi_function import ReadAbiFunction
from fireblocks.models.read_call_function_dto import ReadCallFunctionDto
from fireblocks.models.read_call_function_dto_abi_function import ReadCallFunctionDtoAbiFunction
+from fireblocks.models.recipient_handle import RecipientHandle
from fireblocks.models.redeem_funds_to_linked_dda_response import RedeemFundsToLinkedDDAResponse
from fireblocks.models.register_new_asset_request import RegisterNewAssetRequest
from fireblocks.models.reissue_multichain_token_request import ReissueMultichainTokenRequest
@@ -989,6 +1002,7 @@
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.workspace import Workspace
from fireblocks.models.write_abi_function import WriteAbiFunction
from fireblocks.models.write_call_function_dto import WriteCallFunctionDto
from fireblocks.models.write_call_function_dto_abi_function import WriteCallFunctionDtoAbiFunction
diff --git a/fireblocks/models/additional_info_request_additional_info.py b/fireblocks/models/additional_info_request_additional_info.py
index 6c44831b..3dff5075 100644
--- a/fireblocks/models/additional_info_request_additional_info.py
+++ b/fireblocks/models/additional_info_request_additional_info.py
@@ -20,9 +20,12 @@
from typing import Any, List, Optional
from fireblocks.models.aba_payment_info import AbaPaymentInfo
from fireblocks.models.ach_payment_info import AchPaymentInfo
+from fireblocks.models.chaps_payment_info import ChapsPaymentInfo
from fireblocks.models.iban_payment_info import IbanPaymentInfo
+from fireblocks.models.interac_payment_info import InteracPaymentInfo
from fireblocks.models.lbt_payment_info import LbtPaymentInfo
from fireblocks.models.momo_payment_info import MomoPaymentInfo
+from fireblocks.models.payid_payment_info import PayidPaymentInfo
from fireblocks.models.pix_payment_info import PixPaymentInfo
from fireblocks.models.sepa_payment_info import SepaPaymentInfo
from fireblocks.models.spei_advanced_payment_info import SpeiAdvancedPaymentInfo
@@ -32,7 +35,7 @@
from typing import Union, List, Set, Optional, Dict
from typing_extensions import Literal, Self
-ADDITIONALINFOREQUESTADDITIONALINFO_ONE_OF_SCHEMAS = ["AbaPaymentInfo", "AchPaymentInfo", "IbanPaymentInfo", "LbtPaymentInfo", "MomoPaymentInfo", "PixPaymentInfo", "SepaPaymentInfo", "SpeiAdvancedPaymentInfo", "SpeiBasicPaymentInfo", "UsWirePaymentInfo"]
+ADDITIONALINFOREQUESTADDITIONALINFO_ONE_OF_SCHEMAS = ["AbaPaymentInfo", "AchPaymentInfo", "ChapsPaymentInfo", "IbanPaymentInfo", "InteracPaymentInfo", "LbtPaymentInfo", "MomoPaymentInfo", "PayidPaymentInfo", "PixPaymentInfo", "SepaPaymentInfo", "SpeiAdvancedPaymentInfo", "SpeiBasicPaymentInfo", "UsWirePaymentInfo"]
class AdditionalInfoRequestAdditionalInfo(BaseModel):
"""
@@ -58,8 +61,14 @@ class AdditionalInfoRequestAdditionalInfo(BaseModel):
oneof_schema_9_validator: Optional[MomoPaymentInfo] = None
# data type: LbtPaymentInfo
oneof_schema_10_validator: Optional[LbtPaymentInfo] = None
- actual_instance: Optional[Union[AbaPaymentInfo, AchPaymentInfo, IbanPaymentInfo, LbtPaymentInfo, MomoPaymentInfo, PixPaymentInfo, SepaPaymentInfo, SpeiAdvancedPaymentInfo, SpeiBasicPaymentInfo, UsWirePaymentInfo]] = None
- one_of_schemas: Set[str] = { "AbaPaymentInfo", "AchPaymentInfo", "IbanPaymentInfo", "LbtPaymentInfo", "MomoPaymentInfo", "PixPaymentInfo", "SepaPaymentInfo", "SpeiAdvancedPaymentInfo", "SpeiBasicPaymentInfo", "UsWirePaymentInfo" }
+ # data type: InteracPaymentInfo
+ oneof_schema_11_validator: Optional[InteracPaymentInfo] = None
+ # data type: PayidPaymentInfo
+ oneof_schema_12_validator: Optional[PayidPaymentInfo] = None
+ # data type: ChapsPaymentInfo
+ oneof_schema_13_validator: Optional[ChapsPaymentInfo] = None
+ actual_instance: Optional[Union[AbaPaymentInfo, AchPaymentInfo, ChapsPaymentInfo, IbanPaymentInfo, InteracPaymentInfo, LbtPaymentInfo, MomoPaymentInfo, PayidPaymentInfo, PixPaymentInfo, SepaPaymentInfo, SpeiAdvancedPaymentInfo, SpeiBasicPaymentInfo, UsWirePaymentInfo]] = None
+ one_of_schemas: Set[str] = { "AbaPaymentInfo", "AchPaymentInfo", "ChapsPaymentInfo", "IbanPaymentInfo", "InteracPaymentInfo", "LbtPaymentInfo", "MomoPaymentInfo", "PayidPaymentInfo", "PixPaymentInfo", "SepaPaymentInfo", "SpeiAdvancedPaymentInfo", "SpeiBasicPaymentInfo", "UsWirePaymentInfo" }
model_config = ConfigDict(
validate_assignment=True,
@@ -132,12 +141,27 @@ def actual_instance_must_validate_oneof(cls, v):
error_messages.append(f"Error! Input type `{type(v)}` is not `LbtPaymentInfo`")
else:
match += 1
+ # validate data type: InteracPaymentInfo
+ if not isinstance(v, InteracPaymentInfo):
+ error_messages.append(f"Error! Input type `{type(v)}` is not `InteracPaymentInfo`")
+ else:
+ match += 1
+ # validate data type: PayidPaymentInfo
+ if not isinstance(v, PayidPaymentInfo):
+ error_messages.append(f"Error! Input type `{type(v)}` is not `PayidPaymentInfo`")
+ else:
+ match += 1
+ # validate data type: ChapsPaymentInfo
+ if not isinstance(v, ChapsPaymentInfo):
+ error_messages.append(f"Error! Input type `{type(v)}` is not `ChapsPaymentInfo`")
+ else:
+ match += 1
if match > 1:
# more than 1 match
- raise ValueError("Multiple matches found when setting `actual_instance` in AdditionalInfoRequestAdditionalInfo with oneOf schemas: AbaPaymentInfo, AchPaymentInfo, IbanPaymentInfo, LbtPaymentInfo, MomoPaymentInfo, PixPaymentInfo, SepaPaymentInfo, SpeiAdvancedPaymentInfo, SpeiBasicPaymentInfo, UsWirePaymentInfo. Details: " + ", ".join(error_messages))
+ raise ValueError("Multiple matches found when setting `actual_instance` in AdditionalInfoRequestAdditionalInfo with oneOf schemas: AbaPaymentInfo, AchPaymentInfo, ChapsPaymentInfo, IbanPaymentInfo, InteracPaymentInfo, LbtPaymentInfo, MomoPaymentInfo, PayidPaymentInfo, PixPaymentInfo, SepaPaymentInfo, SpeiAdvancedPaymentInfo, SpeiBasicPaymentInfo, UsWirePaymentInfo. Details: " + ", ".join(error_messages))
elif match == 0:
# no match
- raise ValueError("No match found when setting `actual_instance` in AdditionalInfoRequestAdditionalInfo with oneOf schemas: AbaPaymentInfo, AchPaymentInfo, IbanPaymentInfo, LbtPaymentInfo, MomoPaymentInfo, PixPaymentInfo, SepaPaymentInfo, SpeiAdvancedPaymentInfo, SpeiBasicPaymentInfo, UsWirePaymentInfo. Details: " + ", ".join(error_messages))
+ raise ValueError("No match found when setting `actual_instance` in AdditionalInfoRequestAdditionalInfo with oneOf schemas: AbaPaymentInfo, AchPaymentInfo, ChapsPaymentInfo, IbanPaymentInfo, InteracPaymentInfo, LbtPaymentInfo, MomoPaymentInfo, PayidPaymentInfo, PixPaymentInfo, SepaPaymentInfo, SpeiAdvancedPaymentInfo, SpeiBasicPaymentInfo, UsWirePaymentInfo. Details: " + ", ".join(error_messages))
else:
return v
@@ -212,13 +236,31 @@ def from_json(cls, json_str: str) -> Self:
match += 1
except (ValidationError, ValueError) as e:
error_messages.append(str(e))
+ # deserialize data into InteracPaymentInfo
+ try:
+ instance.actual_instance = InteracPaymentInfo.from_json(json_str)
+ match += 1
+ except (ValidationError, ValueError) as e:
+ error_messages.append(str(e))
+ # deserialize data into PayidPaymentInfo
+ try:
+ instance.actual_instance = PayidPaymentInfo.from_json(json_str)
+ match += 1
+ except (ValidationError, ValueError) as e:
+ error_messages.append(str(e))
+ # deserialize data into ChapsPaymentInfo
+ try:
+ instance.actual_instance = ChapsPaymentInfo.from_json(json_str)
+ match += 1
+ except (ValidationError, ValueError) as e:
+ error_messages.append(str(e))
if match > 1:
# more than 1 match
- raise ValueError("Multiple matches found when deserializing the JSON string into AdditionalInfoRequestAdditionalInfo with oneOf schemas: AbaPaymentInfo, AchPaymentInfo, IbanPaymentInfo, LbtPaymentInfo, MomoPaymentInfo, PixPaymentInfo, SepaPaymentInfo, SpeiAdvancedPaymentInfo, SpeiBasicPaymentInfo, UsWirePaymentInfo. Details: " + ", ".join(error_messages))
+ raise ValueError("Multiple matches found when deserializing the JSON string into AdditionalInfoRequestAdditionalInfo with oneOf schemas: AbaPaymentInfo, AchPaymentInfo, ChapsPaymentInfo, IbanPaymentInfo, InteracPaymentInfo, LbtPaymentInfo, MomoPaymentInfo, PayidPaymentInfo, PixPaymentInfo, SepaPaymentInfo, SpeiAdvancedPaymentInfo, SpeiBasicPaymentInfo, UsWirePaymentInfo. Details: " + ", ".join(error_messages))
elif match == 0:
# no match
- raise ValueError("No match found when deserializing the JSON string into AdditionalInfoRequestAdditionalInfo with oneOf schemas: AbaPaymentInfo, AchPaymentInfo, IbanPaymentInfo, LbtPaymentInfo, MomoPaymentInfo, PixPaymentInfo, SepaPaymentInfo, SpeiAdvancedPaymentInfo, SpeiBasicPaymentInfo, UsWirePaymentInfo. Details: " + ", ".join(error_messages))
+ raise ValueError("No match found when deserializing the JSON string into AdditionalInfoRequestAdditionalInfo with oneOf schemas: AbaPaymentInfo, AchPaymentInfo, ChapsPaymentInfo, IbanPaymentInfo, InteracPaymentInfo, LbtPaymentInfo, MomoPaymentInfo, PayidPaymentInfo, PixPaymentInfo, SepaPaymentInfo, SpeiAdvancedPaymentInfo, SpeiBasicPaymentInfo, UsWirePaymentInfo. Details: " + ", ".join(error_messages))
else:
return instance
@@ -232,7 +274,7 @@ def to_json(self) -> str:
else:
return json.dumps(self.actual_instance)
- def to_dict(self) -> Optional[Union[Dict[str, Any], AbaPaymentInfo, AchPaymentInfo, IbanPaymentInfo, LbtPaymentInfo, MomoPaymentInfo, PixPaymentInfo, SepaPaymentInfo, SpeiAdvancedPaymentInfo, SpeiBasicPaymentInfo, UsWirePaymentInfo]]:
+ def to_dict(self) -> Optional[Union[Dict[str, Any], AbaPaymentInfo, AchPaymentInfo, ChapsPaymentInfo, IbanPaymentInfo, InteracPaymentInfo, LbtPaymentInfo, MomoPaymentInfo, PayidPaymentInfo, PixPaymentInfo, SepaPaymentInfo, SpeiAdvancedPaymentInfo, SpeiBasicPaymentInfo, UsWirePaymentInfo]]:
"""Returns the dict representation of the actual instance"""
if self.actual_instance is None:
return None
diff --git a/fireblocks/models/chaps_address.py b/fireblocks/models/chaps_address.py
new file mode 100644
index 00000000..f1f0e551
--- /dev/null
+++ b/fireblocks/models/chaps_address.py
@@ -0,0 +1,117 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
+from typing import Any, ClassVar, Dict, List, Optional
+from typing_extensions import Annotated
+from fireblocks.models.account_holder_details import AccountHolderDetails
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ChapsAddress(BaseModel):
+ """
+ ChapsAddress
+ """ # noqa: E501
+ account_holder: AccountHolderDetails = Field(alias="accountHolder")
+ sort_code: StrictStr = Field(description="UK bank sort code (format XX-XX-XX)", alias="sortCode")
+ account_number: StrictStr = Field(description="UK bank account number", alias="accountNumber")
+ bank_name: Optional[StrictStr] = Field(default=None, description="Name of the bank", alias="bankName")
+ bank_account_country: Annotated[str, Field(strict=True)] = Field(description="CHAPS bank account holder name", alias="bankAccountCountry")
+ bank_account_holder_name: Annotated[str, Field(strict=True)] = Field(description="CHAPS bank account holder name", alias="bankAccountHolderName")
+ __properties: ClassVar[List[str]] = ["accountHolder", "sortCode", "accountNumber", "bankName", "bankAccountCountry", "bankAccountHolderName"]
+
+ @field_validator('bank_account_country')
+ def bank_account_country_validate_regular_expression(cls, value):
+ """Validates the regular expression"""
+ if not re.match(r"^\d{2}$", value):
+ raise ValueError(r"must validate the regular expression /^\d{2}$/")
+ return value
+
+ @field_validator('bank_account_holder_name')
+ def bank_account_holder_name_validate_regular_expression(cls, value):
+ """Validates the regular expression"""
+ if not re.match(r"^(?=.{1,140}$)[^\s]+(\s+[^\s]+)*$", value):
+ raise ValueError(r"must validate the regular expression /^(?=.{1,140}$)[^\s]+(\s+[^\s]+)*$/")
+ 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 ChapsAddress 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 account_holder
+ if self.account_holder:
+ _dict['accountHolder'] = self.account_holder.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of ChapsAddress from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "accountHolder": AccountHolderDetails.from_dict(obj["accountHolder"]) if obj.get("accountHolder") is not None else None,
+ "sortCode": obj.get("sortCode"),
+ "accountNumber": obj.get("accountNumber"),
+ "bankName": obj.get("bankName"),
+ "bankAccountCountry": obj.get("bankAccountCountry"),
+ "bankAccountHolderName": obj.get("bankAccountHolderName")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/chaps_destination.py b/fireblocks/models/chaps_destination.py
new file mode 100644
index 00000000..d49cea6d
--- /dev/null
+++ b/fireblocks/models/chaps_destination.py
@@ -0,0 +1,101 @@
+# 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, StrictStr, field_validator
+from typing import Any, ClassVar, Dict, List
+from fireblocks.models.chaps_address import ChapsAddress
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ChapsDestination(BaseModel):
+ """
+ ChapsDestination
+ """ # noqa: E501
+ type: StrictStr
+ address: ChapsAddress
+ __properties: ClassVar[List[str]] = ["type", "address"]
+
+ @field_validator('type')
+ def type_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['CHAPS']):
+ raise ValueError("must be one of enum values ('CHAPS')")
+ 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 ChapsDestination 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 address
+ if self.address:
+ _dict['address'] = self.address.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of ChapsDestination from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "type": obj.get("type"),
+ "address": ChapsAddress.from_dict(obj["address"]) if obj.get("address") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/chaps_payment_info.py b/fireblocks/models/chaps_payment_info.py
new file mode 100644
index 00000000..9bba3de0
--- /dev/null
+++ b/fireblocks/models/chaps_payment_info.py
@@ -0,0 +1,149 @@
+# 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, Optional
+from typing_extensions import Annotated
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ChapsPaymentInfo(BaseModel):
+ """
+ CHAPS payment information for UK pound sterling same-day transfers
+ """ # noqa: E501
+ rail: StrictStr = Field(description="The payment rail type for CHAPS transfers")
+ addressing_system: StrictStr = Field(description="The addressing system used for CHAPS transfers", alias="addressingSystem")
+ account_holder_given_name: StrictStr = Field(description="The given name (first name) of the account holder", alias="accountHolderGivenName")
+ account_holder_surname: StrictStr = Field(description="The surname (last name) of the account holder", alias="accountHolderSurname")
+ country: StrictStr = Field(description="The country for the transfer (ISO 3166-1 alpha-2 code)")
+ sort_code: Annotated[str, Field(strict=True)] = Field(description="UK bank sort code (format XX-XX-XX)", alias="sortCode")
+ account_number: Annotated[str, Field(strict=True)] = Field(description="UK bank account number", alias="accountNumber")
+ bank_name: Optional[StrictStr] = Field(default=None, description="The name of the bank", alias="bankName")
+ bank_account_country: Annotated[str, Field(strict=True)] = Field(description="CHAPS bank account holder name", alias="bankAccountCountry")
+ bank_account_holder_name: Annotated[str, Field(strict=True)] = Field(description="CHAPS bank account holder name", alias="bankAccountHolderName")
+ __properties: ClassVar[List[str]] = ["rail", "addressingSystem", "accountHolderGivenName", "accountHolderSurname", "country", "sortCode", "accountNumber", "bankName", "bankAccountCountry", "bankAccountHolderName"]
+
+ @field_validator('rail')
+ def rail_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['CHAPS']):
+ raise ValueError("must be one of enum values ('CHAPS')")
+ return value
+
+ @field_validator('addressing_system')
+ def addressing_system_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['CHAPS']):
+ raise ValueError("must be one of enum values ('CHAPS')")
+ return value
+
+ @field_validator('sort_code')
+ def sort_code_validate_regular_expression(cls, value):
+ """Validates the regular expression"""
+ if not re.match(r"^\d{6}$", value):
+ raise ValueError(r"must validate the regular expression /^\d{6}$/")
+ return value
+
+ @field_validator('account_number')
+ def account_number_validate_regular_expression(cls, value):
+ """Validates the regular expression"""
+ if not re.match(r"^\d{8}$", value):
+ raise ValueError(r"must validate the regular expression /^\d{8}$/")
+ return value
+
+ @field_validator('bank_account_country')
+ def bank_account_country_validate_regular_expression(cls, value):
+ """Validates the regular expression"""
+ if not re.match(r"^\d{2}$", value):
+ raise ValueError(r"must validate the regular expression /^\d{2}$/")
+ return value
+
+ @field_validator('bank_account_holder_name')
+ def bank_account_holder_name_validate_regular_expression(cls, value):
+ """Validates the regular expression"""
+ if not re.match(r"^(?=.{1,140}$)[^\s]+(\s+[^\s]+)*$", value):
+ raise ValueError(r"must validate the regular expression /^(?=.{1,140}$)[^\s]+(\s+[^\s]+)*$/")
+ 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 ChapsPaymentInfo 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 ChapsPaymentInfo from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "rail": obj.get("rail"),
+ "addressingSystem": obj.get("addressingSystem"),
+ "accountHolderGivenName": obj.get("accountHolderGivenName"),
+ "accountHolderSurname": obj.get("accountHolderSurname"),
+ "country": obj.get("country"),
+ "sortCode": obj.get("sortCode"),
+ "accountNumber": obj.get("accountNumber"),
+ "bankName": obj.get("bankName"),
+ "bankAccountCountry": obj.get("bankAccountCountry"),
+ "bankAccountHolderName": obj.get("bankAccountHolderName")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/create_quote.py b/fireblocks/models/create_quote.py
index 6a5b9b6d..fafb1887 100644
--- a/fireblocks/models/create_quote.py
+++ b/fireblocks/models/create_quote.py
@@ -24,6 +24,7 @@
from fireblocks.models.create_quote_scope_inner import CreateQuoteScopeInner
from fireblocks.models.dvp_settlement import DVPSettlement
from fireblocks.models.side import Side
+from fireblocks.models.transfer_rail import TransferRail
from typing import Optional, Set
from typing_extensions import Self
@@ -33,12 +34,14 @@ class CreateQuote(BaseModel):
""" # noqa: E501
scope: List[CreateQuoteScopeInner]
base_asset_id: StrictStr = Field(description="The asset you receive on BUY / give on SELL.", alias="baseAssetId")
+ base_asset_rail: Optional[TransferRail] = Field(default=None, alias="baseAssetRail")
quote_asset_id: StrictStr = Field(description="The counter asset used to pay/receive.", alias="quoteAssetId")
- base_amount: Annotated[str, Field(strict=True)] = Field(description="The amount to convert from", alias="baseAmount")
+ quote_asset_rail: Optional[TransferRail] = Field(default=None, alias="quoteAssetRail")
+ base_amount: Annotated[str, Field(strict=True)] = Field(description="Amount in baseAssetId. BUY = base amount to receive; SELL = base amount to sell.", alias="baseAmount")
slippage_bps: Optional[Union[Annotated[float, Field(le=10000, strict=True, ge=1)], Annotated[int, Field(le=10000, strict=True, ge=1)]]] = Field(default=50, description="Slippage tolerance in basis points (bps) for defi quotes - 1 is 0.01% and 10000 is 100%", alias="slippageBps")
settlement: Optional[DVPSettlement] = None
side: Side
- __properties: ClassVar[List[str]] = ["scope", "baseAssetId", "quoteAssetId", "baseAmount", "slippageBps", "settlement", "side"]
+ __properties: ClassVar[List[str]] = ["scope", "baseAssetId", "baseAssetRail", "quoteAssetId", "quoteAssetRail", "baseAmount", "slippageBps", "settlement", "side"]
@field_validator('base_amount')
def base_amount_validate_regular_expression(cls, value):
@@ -110,7 +113,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"scope": [CreateQuoteScopeInner.from_dict(_item) for _item in obj["scope"]] if obj.get("scope") is not None else None,
"baseAssetId": obj.get("baseAssetId"),
+ "baseAssetRail": obj.get("baseAssetRail"),
"quoteAssetId": obj.get("quoteAssetId"),
+ "quoteAssetRail": obj.get("quoteAssetRail"),
"baseAmount": obj.get("baseAmount"),
"slippageBps": obj.get("slippageBps") if obj.get("slippageBps") is not None else 50,
"settlement": DVPSettlement.from_dict(obj["settlement"]) if obj.get("settlement") is not None else None,
diff --git a/fireblocks/models/execution_request_base_details.py b/fireblocks/models/execution_request_base_details.py
index 2ae54fae..92a0ae7d 100644
--- a/fireblocks/models/execution_request_base_details.py
+++ b/fireblocks/models/execution_request_base_details.py
@@ -30,10 +30,10 @@ class ExecutionRequestBaseDetails(BaseModel):
ExecutionRequestBaseDetails
""" # noqa: E501
side: Side
- base_amount: StrictStr = Field(description="Amount to convert", alias="baseAmount")
- base_asset_id: StrictStr = Field(description="Source asset identifier", alias="baseAssetId")
+ base_amount: StrictStr = Field(description="Amount in baseAssetId. BUY = base amount to receive; SELL = base amount to sell.", alias="baseAmount")
+ base_asset_id: StrictStr = Field(description="The asset you receive on BUY / give on SELL.", alias="baseAssetId")
base_asset_rail: Optional[TransferRail] = Field(default=None, alias="baseAssetRail")
- quote_asset_id: StrictStr = Field(description="Target asset identifier", alias="quoteAssetId")
+ quote_asset_id: StrictStr = Field(description="Counter asset used to pay/receive", alias="quoteAssetId")
quote_asset_rail: Optional[TransferRail] = Field(default=None, alias="quoteAssetRail")
__properties: ClassVar[List[str]] = ["side", "baseAmount", "baseAssetId", "baseAssetRail", "quoteAssetId", "quoteAssetRail"]
diff --git a/fireblocks/models/external_account_local_bank_africa.py b/fireblocks/models/external_account_local_bank_africa.py
index 14c488da..3b74fd0e 100644
--- a/fireblocks/models/external_account_local_bank_africa.py
+++ b/fireblocks/models/external_account_local_bank_africa.py
@@ -18,10 +18,8 @@
import re # noqa: F401
import json
-from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
-from typing import Any, ClassVar, Dict, List
-from typing_extensions import Annotated
-from fireblocks.models.external_account_local_bank_africa_type import ExternalAccountLocalBankAfricaType
+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
@@ -29,18 +27,8 @@ class ExternalAccountLocalBankAfrica(BaseModel):
"""
ExternalAccountLocalBankAfrica
""" # noqa: E501
- type: ExternalAccountLocalBankAfricaType
- account_number: Annotated[str, Field(strict=True)] = Field(alias="accountNumber")
- bank_name: StrictStr = Field(description="Name of the bank", alias="bankName")
- bank_code: StrictStr = Field(description="Internal bank identifier", alias="bankCode")
- __properties: ClassVar[List[str]] = ["type", "accountNumber", "bankName", "bankCode"]
-
- @field_validator('account_number')
- def account_number_validate_regular_expression(cls, value):
- """Validates the regular expression"""
- if not re.match(r"^\d{4,17}$", value):
- raise ValueError(r"must validate the regular expression /^\d{4,17}$/")
- return value
+ success_redirect_url: Optional[StrictStr] = Field(default=None, description="URL to redirect the end user back to after they complete the payment on the bank/mobile provider page (e.g., the merchant checkout page)", alias="successRedirectUrl")
+ __properties: ClassVar[List[str]] = ["successRedirectUrl"]
model_config = ConfigDict(
populate_by_name=True,
@@ -93,10 +81,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
return cls.model_validate(obj)
_obj = cls.model_validate({
- "type": obj.get("type"),
- "accountNumber": obj.get("accountNumber"),
- "bankName": obj.get("bankName"),
- "bankCode": obj.get("bankCode")
+ "successRedirectUrl": obj.get("successRedirectUrl")
})
return _obj
diff --git a/fireblocks/models/external_account_local_bank_africa_type.py b/fireblocks/models/external_account_local_bank_africa_type.py
deleted file mode 100644
index ce437ec1..00000000
--- a/fireblocks/models/external_account_local_bank_africa_type.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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 ExternalAccountLocalBankAfricaType(str, Enum):
- """
- ExternalAccountLocalBankAfricaType
- """
-
- """
- allowed enum values
- """
- LOCAL_BANK_AFRICA_RAIL = 'LOCAL_BANK_AFRICA_RAIL'
-
- @classmethod
- def from_json(cls, json_str: str) -> Self:
- """Create an instance of ExternalAccountLocalBankAfricaType from a JSON string"""
- return cls(json.loads(json_str))
-
-
diff --git a/fireblocks/models/external_account_mobile_money.py b/fireblocks/models/external_account_mobile_money.py
index f9b5d8cf..99c8fa2a 100644
--- a/fireblocks/models/external_account_mobile_money.py
+++ b/fireblocks/models/external_account_mobile_money.py
@@ -19,7 +19,7 @@
import json
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
-from typing import Any, ClassVar, Dict, List
+from typing import Any, ClassVar, Dict, List, Optional
from typing_extensions import Annotated
from fireblocks.models.external_account_mobile_money_provider import ExternalAccountMobileMoneyProvider
from fireblocks.models.external_account_mobile_money_type import ExternalAccountMobileMoneyType
@@ -34,7 +34,8 @@ class ExternalAccountMobileMoney(BaseModel):
mobile_phone_number: Annotated[str, Field(strict=True)] = Field(description="Mobile phone number in E.164 format", alias="mobilePhoneNumber")
provider: ExternalAccountMobileMoneyProvider
email: StrictStr
- __properties: ClassVar[List[str]] = ["type", "mobilePhoneNumber", "provider", "email"]
+ success_redirect_url: Optional[StrictStr] = Field(default=None, description="URL to redirect the end user back to after they complete the payment on the bank/mobile provider page (e.g., the merchant checkout page)", alias="successRedirectUrl")
+ __properties: ClassVar[List[str]] = ["type", "mobilePhoneNumber", "provider", "email", "successRedirectUrl"]
@field_validator('mobile_phone_number')
def mobile_phone_number_validate_regular_expression(cls, value):
@@ -97,7 +98,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"type": obj.get("type"),
"mobilePhoneNumber": obj.get("mobilePhoneNumber"),
"provider": obj.get("provider"),
- "email": obj.get("email")
+ "email": obj.get("email"),
+ "successRedirectUrl": obj.get("successRedirectUrl")
})
return _obj
diff --git a/fireblocks/models/extra_parameters.py b/fireblocks/models/extra_parameters.py
new file mode 100644
index 00000000..1a481e0e
--- /dev/null
+++ b/fireblocks/models/extra_parameters.py
@@ -0,0 +1,148 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
+from typing import Any, ClassVar, Dict, List, Optional
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ExtraParameters(BaseModel):
+ """
+ Additional protocol / operation specific key-value parameters: For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set to the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs) For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata) For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. For **exchange compliance (e.g., Binance) and Travel Rule purposes**, include the key `piiData` containing a **custom JSON structure** with Personally Identifiable Information (PII) relevant to the transaction. This data must be fully **encrypted by the sender** before being submitted to the Fireblocks API. The recommended encryption method is **hybrid encryption** using AES-256-GCM for the payload and RSA-OAEP for key exchange, with the recipient exchange's public key. [development libraries](https://developers.fireblocks.com/docs/a-developers-guide-to-constructing-encrypted-pii-messages-for-binance-via-fireblocks) **Note:** `rawMessageData`, `contractCallData`, and `inputsSelection` cannot be used together in the same call.
+ """ # noqa: E501
+ node_controls: Optional[Dict[str, Any]] = Field(default=None, alias="nodeControls")
+ raw_message_data: Optional[Dict[str, Any]] = Field(default=None, alias="rawMessageData")
+ contract_call_data: Optional[StrictStr] = Field(default=None, alias="contractCallData")
+ program_call_data: Optional[StrictStr] = Field(default=None, alias="programCallData")
+ inputs_selection: Optional[Dict[str, Any]] = Field(default=None, alias="inputsSelection")
+ allow_base_asset_address: Optional[StrictBool] = Field(default=None, alias="allowBaseAssetAddress")
+ pii_data: Optional[Dict[str, Any]] = Field(default=None, alias="piiData")
+ additional_properties: Dict[str, Any] = {}
+ __properties: ClassVar[List[str]] = ["nodeControls", "rawMessageData", "contractCallData", "programCallData", "inputsSelection", "allowBaseAssetAddress", "piiData"]
+
+ 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 ExtraParameters 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.
+ * Fields in `self.additional_properties` are added to the output dict.
+ """
+ excluded_fields: Set[str] = set([
+ "additional_properties",
+ ])
+
+ _dict = self.model_dump(
+ by_alias=True,
+ exclude=excluded_fields,
+ exclude_none=True,
+ )
+ # puts key-value pairs in additional_properties in the top level
+ if self.additional_properties is not None:
+ for _key, _value in self.additional_properties.items():
+ _dict[_key] = _value
+
+ # set to None if node_controls (nullable) is None
+ # and model_fields_set contains the field
+ if self.node_controls is None and "node_controls" in self.model_fields_set:
+ _dict['nodeControls'] = None
+
+ # set to None if raw_message_data (nullable) is None
+ # and model_fields_set contains the field
+ if self.raw_message_data is None and "raw_message_data" in self.model_fields_set:
+ _dict['rawMessageData'] = None
+
+ # set to None if contract_call_data (nullable) is None
+ # and model_fields_set contains the field
+ if self.contract_call_data is None and "contract_call_data" in self.model_fields_set:
+ _dict['contractCallData'] = None
+
+ # set to None if program_call_data (nullable) is None
+ # and model_fields_set contains the field
+ if self.program_call_data is None and "program_call_data" in self.model_fields_set:
+ _dict['programCallData'] = None
+
+ # set to None if inputs_selection (nullable) is None
+ # and model_fields_set contains the field
+ if self.inputs_selection is None and "inputs_selection" in self.model_fields_set:
+ _dict['inputsSelection'] = None
+
+ # set to None if allow_base_asset_address (nullable) is None
+ # and model_fields_set contains the field
+ if self.allow_base_asset_address is None and "allow_base_asset_address" in self.model_fields_set:
+ _dict['allowBaseAssetAddress'] = None
+
+ # set to None if pii_data (nullable) is None
+ # and model_fields_set contains the field
+ if self.pii_data is None and "pii_data" in self.model_fields_set:
+ _dict['piiData'] = None
+
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of ExtraParameters from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "nodeControls": obj.get("nodeControls"),
+ "rawMessageData": obj.get("rawMessageData"),
+ "contractCallData": obj.get("contractCallData"),
+ "programCallData": obj.get("programCallData"),
+ "inputsSelection": obj.get("inputsSelection"),
+ "allowBaseAssetAddress": obj.get("allowBaseAssetAddress"),
+ "piiData": obj.get("piiData")
+ })
+ # store additional fields in additional_properties
+ for _key in obj.keys():
+ if _key not in cls.__properties:
+ _obj.additional_properties[_key] = obj.get(_key)
+
+ return _obj
+
+
diff --git a/fireblocks/models/fiat_destination.py b/fireblocks/models/fiat_destination.py
index d4053771..549b24cb 100644
--- a/fireblocks/models/fiat_destination.py
+++ b/fireblocks/models/fiat_destination.py
@@ -19,10 +19,14 @@
from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator
from typing import Any, List, Optional
from fireblocks.models.ach_destination import AchDestination
+from fireblocks.models.chaps_destination import ChapsDestination
from fireblocks.models.european_sepa_destination import EuropeanSEPADestination
from fireblocks.models.iban_destination import IbanDestination
+from fireblocks.models.interac_destination import InteracDestination
+from fireblocks.models.internal_transfer_destination import InternalTransferDestination
from fireblocks.models.local_bank_transfer_africa_destination import LocalBankTransferAfricaDestination
from fireblocks.models.mobile_money_destination import MobileMoneyDestination
+from fireblocks.models.payid_destination import PayidDestination
from fireblocks.models.pix_destination import PixDestination
from fireblocks.models.sepa_destination import SEPADestination
from fireblocks.models.spei_destination import SpeiDestination
@@ -32,7 +36,7 @@
from typing import Union, List, Set, Optional, Dict
from typing_extensions import Literal, Self
-FIATDESTINATION_ONE_OF_SCHEMAS = ["AchDestination", "EuropeanSEPADestination", "IbanDestination", "LocalBankTransferAfricaDestination", "MobileMoneyDestination", "PixDestination", "SEPADestination", "SpeiDestination", "SwiftDestination", "USWireDestination"]
+FIATDESTINATION_ONE_OF_SCHEMAS = ["AchDestination", "ChapsDestination", "EuropeanSEPADestination", "IbanDestination", "InteracDestination", "InternalTransferDestination", "LocalBankTransferAfricaDestination", "MobileMoneyDestination", "PayidDestination", "PixDestination", "SEPADestination", "SpeiDestination", "SwiftDestination", "USWireDestination"]
class FiatDestination(BaseModel):
"""
@@ -58,8 +62,16 @@ class FiatDestination(BaseModel):
oneof_schema_9_validator: Optional[MobileMoneyDestination] = None
# data type: EuropeanSEPADestination
oneof_schema_10_validator: Optional[EuropeanSEPADestination] = None
- actual_instance: Optional[Union[AchDestination, EuropeanSEPADestination, IbanDestination, LocalBankTransferAfricaDestination, MobileMoneyDestination, PixDestination, SEPADestination, SpeiDestination, SwiftDestination, USWireDestination]] = None
- one_of_schemas: Set[str] = { "AchDestination", "EuropeanSEPADestination", "IbanDestination", "LocalBankTransferAfricaDestination", "MobileMoneyDestination", "PixDestination", "SEPADestination", "SpeiDestination", "SwiftDestination", "USWireDestination" }
+ # data type: ChapsDestination
+ oneof_schema_11_validator: Optional[ChapsDestination] = None
+ # data type: InteracDestination
+ oneof_schema_12_validator: Optional[InteracDestination] = None
+ # data type: PayidDestination
+ oneof_schema_13_validator: Optional[PayidDestination] = None
+ # data type: InternalTransferDestination
+ oneof_schema_14_validator: Optional[InternalTransferDestination] = None
+ actual_instance: Optional[Union[AchDestination, ChapsDestination, EuropeanSEPADestination, IbanDestination, InteracDestination, InternalTransferDestination, LocalBankTransferAfricaDestination, MobileMoneyDestination, PayidDestination, PixDestination, SEPADestination, SpeiDestination, SwiftDestination, USWireDestination]] = None
+ one_of_schemas: Set[str] = { "AchDestination", "ChapsDestination", "EuropeanSEPADestination", "IbanDestination", "InteracDestination", "InternalTransferDestination", "LocalBankTransferAfricaDestination", "MobileMoneyDestination", "PayidDestination", "PixDestination", "SEPADestination", "SpeiDestination", "SwiftDestination", "USWireDestination" }
model_config = ConfigDict(
validate_assignment=True,
@@ -132,12 +144,32 @@ def actual_instance_must_validate_oneof(cls, v):
error_messages.append(f"Error! Input type `{type(v)}` is not `EuropeanSEPADestination`")
else:
match += 1
+ # validate data type: ChapsDestination
+ if not isinstance(v, ChapsDestination):
+ error_messages.append(f"Error! Input type `{type(v)}` is not `ChapsDestination`")
+ else:
+ match += 1
+ # validate data type: InteracDestination
+ if not isinstance(v, InteracDestination):
+ error_messages.append(f"Error! Input type `{type(v)}` is not `InteracDestination`")
+ else:
+ match += 1
+ # validate data type: PayidDestination
+ if not isinstance(v, PayidDestination):
+ error_messages.append(f"Error! Input type `{type(v)}` is not `PayidDestination`")
+ else:
+ match += 1
+ # validate data type: InternalTransferDestination
+ if not isinstance(v, InternalTransferDestination):
+ error_messages.append(f"Error! Input type `{type(v)}` is not `InternalTransferDestination`")
+ else:
+ match += 1
if match > 1:
# more than 1 match
- raise ValueError("Multiple matches found when setting `actual_instance` in FiatDestination with oneOf schemas: AchDestination, EuropeanSEPADestination, IbanDestination, LocalBankTransferAfricaDestination, MobileMoneyDestination, PixDestination, SEPADestination, SpeiDestination, SwiftDestination, USWireDestination. Details: " + ", ".join(error_messages))
+ raise ValueError("Multiple matches found when setting `actual_instance` in FiatDestination with oneOf schemas: AchDestination, ChapsDestination, EuropeanSEPADestination, IbanDestination, InteracDestination, InternalTransferDestination, LocalBankTransferAfricaDestination, MobileMoneyDestination, PayidDestination, PixDestination, SEPADestination, SpeiDestination, SwiftDestination, USWireDestination. Details: " + ", ".join(error_messages))
elif match == 0:
# no match
- raise ValueError("No match found when setting `actual_instance` in FiatDestination with oneOf schemas: AchDestination, EuropeanSEPADestination, IbanDestination, LocalBankTransferAfricaDestination, MobileMoneyDestination, PixDestination, SEPADestination, SpeiDestination, SwiftDestination, USWireDestination. Details: " + ", ".join(error_messages))
+ raise ValueError("No match found when setting `actual_instance` in FiatDestination with oneOf schemas: AchDestination, ChapsDestination, EuropeanSEPADestination, IbanDestination, InteracDestination, InternalTransferDestination, LocalBankTransferAfricaDestination, MobileMoneyDestination, PayidDestination, PixDestination, SEPADestination, SpeiDestination, SwiftDestination, USWireDestination. Details: " + ", ".join(error_messages))
else:
return v
@@ -212,13 +244,37 @@ def from_json(cls, json_str: str) -> Self:
match += 1
except (ValidationError, ValueError) as e:
error_messages.append(str(e))
+ # deserialize data into ChapsDestination
+ try:
+ instance.actual_instance = ChapsDestination.from_json(json_str)
+ match += 1
+ except (ValidationError, ValueError) as e:
+ error_messages.append(str(e))
+ # deserialize data into InteracDestination
+ try:
+ instance.actual_instance = InteracDestination.from_json(json_str)
+ match += 1
+ except (ValidationError, ValueError) as e:
+ error_messages.append(str(e))
+ # deserialize data into PayidDestination
+ try:
+ instance.actual_instance = PayidDestination.from_json(json_str)
+ match += 1
+ except (ValidationError, ValueError) as e:
+ error_messages.append(str(e))
+ # deserialize data into InternalTransferDestination
+ try:
+ instance.actual_instance = InternalTransferDestination.from_json(json_str)
+ match += 1
+ except (ValidationError, ValueError) as e:
+ error_messages.append(str(e))
if match > 1:
# more than 1 match
- raise ValueError("Multiple matches found when deserializing the JSON string into FiatDestination with oneOf schemas: AchDestination, EuropeanSEPADestination, IbanDestination, LocalBankTransferAfricaDestination, MobileMoneyDestination, PixDestination, SEPADestination, SpeiDestination, SwiftDestination, USWireDestination. Details: " + ", ".join(error_messages))
+ raise ValueError("Multiple matches found when deserializing the JSON string into FiatDestination with oneOf schemas: AchDestination, ChapsDestination, EuropeanSEPADestination, IbanDestination, InteracDestination, InternalTransferDestination, LocalBankTransferAfricaDestination, MobileMoneyDestination, PayidDestination, PixDestination, SEPADestination, SpeiDestination, SwiftDestination, USWireDestination. Details: " + ", ".join(error_messages))
elif match == 0:
# no match
- raise ValueError("No match found when deserializing the JSON string into FiatDestination with oneOf schemas: AchDestination, EuropeanSEPADestination, IbanDestination, LocalBankTransferAfricaDestination, MobileMoneyDestination, PixDestination, SEPADestination, SpeiDestination, SwiftDestination, USWireDestination. Details: " + ", ".join(error_messages))
+ raise ValueError("No match found when deserializing the JSON string into FiatDestination with oneOf schemas: AchDestination, ChapsDestination, EuropeanSEPADestination, IbanDestination, InteracDestination, InternalTransferDestination, LocalBankTransferAfricaDestination, MobileMoneyDestination, PayidDestination, PixDestination, SEPADestination, SpeiDestination, SwiftDestination, USWireDestination. Details: " + ", ".join(error_messages))
else:
return instance
@@ -232,7 +288,7 @@ def to_json(self) -> str:
else:
return json.dumps(self.actual_instance)
- def to_dict(self) -> Optional[Union[Dict[str, Any], AchDestination, EuropeanSEPADestination, IbanDestination, LocalBankTransferAfricaDestination, MobileMoneyDestination, PixDestination, SEPADestination, SpeiDestination, SwiftDestination, USWireDestination]]:
+ def to_dict(self) -> Optional[Union[Dict[str, Any], AchDestination, ChapsDestination, EuropeanSEPADestination, IbanDestination, InteracDestination, InternalTransferDestination, LocalBankTransferAfricaDestination, MobileMoneyDestination, PayidDestination, PixDestination, SEPADestination, SpeiDestination, SwiftDestination, USWireDestination]]:
"""Returns the dict representation of the actual instance"""
if self.actual_instance is None:
return None
diff --git a/fireblocks/models/interac_address.py b/fireblocks/models/interac_address.py
new file mode 100644
index 00000000..32f07a2a
--- /dev/null
+++ b/fireblocks/models/interac_address.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, StrictStr
+from typing import Any, ClassVar, Dict, List, Optional
+from fireblocks.models.account_holder_details import AccountHolderDetails
+from fireblocks.models.recipient_handle import RecipientHandle
+from typing import Optional, Set
+from typing_extensions import Self
+
+class InteracAddress(BaseModel):
+ """
+ InteracAddress
+ """ # noqa: E501
+ account_holder: AccountHolderDetails = Field(alias="accountHolder")
+ recipient_handle: RecipientHandle = Field(alias="recipientHandle")
+ message: Optional[StrictStr] = Field(default=None, description="The message to be sent to the recipient")
+ __properties: ClassVar[List[str]] = ["accountHolder", "recipientHandle", "message"]
+
+ 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 InteracAddress 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 account_holder
+ if self.account_holder:
+ _dict['accountHolder'] = self.account_holder.to_dict()
+ # override the default output from pydantic by calling `to_dict()` of recipient_handle
+ if self.recipient_handle:
+ _dict['recipientHandle'] = self.recipient_handle.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of InteracAddress from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "accountHolder": AccountHolderDetails.from_dict(obj["accountHolder"]) if obj.get("accountHolder") is not None else None,
+ "recipientHandle": RecipientHandle.from_dict(obj["recipientHandle"]) if obj.get("recipientHandle") is not None else None,
+ "message": obj.get("message")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/interac_destination.py b/fireblocks/models/interac_destination.py
new file mode 100644
index 00000000..78b5bda2
--- /dev/null
+++ b/fireblocks/models/interac_destination.py
@@ -0,0 +1,101 @@
+# 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, StrictStr, field_validator
+from typing import Any, ClassVar, Dict, List
+from fireblocks.models.interac_address import InteracAddress
+from typing import Optional, Set
+from typing_extensions import Self
+
+class InteracDestination(BaseModel):
+ """
+ InteracDestination
+ """ # noqa: E501
+ type: StrictStr
+ address: InteracAddress
+ __properties: ClassVar[List[str]] = ["type", "address"]
+
+ @field_validator('type')
+ def type_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['INTERAC']):
+ raise ValueError("must be one of enum values ('INTERAC')")
+ 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 InteracDestination 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 address
+ if self.address:
+ _dict['address'] = self.address.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of InteracDestination from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "type": obj.get("type"),
+ "address": InteracAddress.from_dict(obj["address"]) if obj.get("address") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/interac_payment_info.py b/fireblocks/models/interac_payment_info.py
new file mode 100644
index 00000000..80e1bde2
--- /dev/null
+++ b/fireblocks/models/interac_payment_info.py
@@ -0,0 +1,123 @@
+# 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 InteracPaymentInfo(BaseModel):
+ """
+ Interac e-Transfer payment information for Canadian dollar transfers
+ """ # noqa: E501
+ rail: StrictStr = Field(description="The payment rail type for Interac transfers")
+ addressing_system: StrictStr = Field(description="The addressing system used for Interac transfers", alias="addressingSystem")
+ account_holder_given_name: StrictStr = Field(description="The given name (first name) of the account holder", alias="accountHolderGivenName")
+ account_holder_surname: StrictStr = Field(description="The surname (last name) of the account holder", alias="accountHolderSurname")
+ country: StrictStr = Field(description="The country for the transfer (ISO 3166-1 alpha-2 code)")
+ recipient_handle_type: StrictStr = Field(description="The type of recipient handler being used", alias="recipientHandleType")
+ recipient_handle_value: StrictStr = Field(description="Email address registered for Interac e-Transfer", alias="recipientHandleValue")
+ message: StrictStr = Field(description="The message to be sent to the recipient")
+ __properties: ClassVar[List[str]] = ["rail", "addressingSystem", "accountHolderGivenName", "accountHolderSurname", "country", "recipientHandleType", "recipientHandleValue", "message"]
+
+ @field_validator('rail')
+ def rail_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['INTERAC']):
+ raise ValueError("must be one of enum values ('INTERAC')")
+ return value
+
+ @field_validator('addressing_system')
+ def addressing_system_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['INTERAC']):
+ raise ValueError("must be one of enum values ('INTERAC')")
+ return value
+
+ @field_validator('recipient_handle_type')
+ def recipient_handle_type_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['EMAIL']):
+ raise ValueError("must be one of enum values ('EMAIL')")
+ 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 InteracPaymentInfo 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 InteracPaymentInfo from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "rail": obj.get("rail"),
+ "addressingSystem": obj.get("addressingSystem"),
+ "accountHolderGivenName": obj.get("accountHolderGivenName"),
+ "accountHolderSurname": obj.get("accountHolderSurname"),
+ "country": obj.get("country"),
+ "recipientHandleType": obj.get("recipientHandleType"),
+ "recipientHandleValue": obj.get("recipientHandleValue"),
+ "message": obj.get("message")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/internal_transfer_address.py b/fireblocks/models/internal_transfer_address.py
new file mode 100644
index 00000000..5f8aa08b
--- /dev/null
+++ b/fireblocks/models/internal_transfer_address.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 InternalTransferAddress(BaseModel):
+ """
+ InternalTransferAddress
+ """ # noqa: E501
+ external_account_id: Optional[StrictStr] = Field(default=None, description="The provider's identifier for the external account. This enables the user to fund the account externally (outside of Fireblocks) if needed.", alias="externalAccountId")
+ account_id: StrictStr = Field(description="The Fireblocks account ID where the user should deposit the funds.", alias="accountId")
+ __properties: ClassVar[List[str]] = ["externalAccountId", "accountId"]
+
+ 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 InternalTransferAddress 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 InternalTransferAddress from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "externalAccountId": obj.get("externalAccountId"),
+ "accountId": obj.get("accountId")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/internal_transfer_destination.py b/fireblocks/models/internal_transfer_destination.py
new file mode 100644
index 00000000..5d1346cf
--- /dev/null
+++ b/fireblocks/models/internal_transfer_destination.py
@@ -0,0 +1,101 @@
+# 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, StrictStr, field_validator
+from typing import Any, ClassVar, Dict, List, Optional
+from fireblocks.models.internal_transfer_address import InternalTransferAddress
+from typing import Optional, Set
+from typing_extensions import Self
+
+class InternalTransferDestination(BaseModel):
+ """
+ InternalTransferDestination
+ """ # noqa: E501
+ type: StrictStr
+ address: Optional[InternalTransferAddress] = None
+ __properties: ClassVar[List[str]] = ["type", "address"]
+
+ @field_validator('type')
+ def type_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['INTERNAL_TRANSFER']):
+ raise ValueError("must be one of enum values ('INTERNAL_TRANSFER')")
+ 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 InternalTransferDestination 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 address
+ if self.address:
+ _dict['address'] = self.address.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of InternalTransferDestination from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "type": obj.get("type"),
+ "address": InternalTransferAddress.from_dict(obj["address"]) if obj.get("address") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/local_bank_transfer_africa_address.py b/fireblocks/models/local_bank_transfer_africa_address.py
index 9c254cb1..913ea329 100644
--- a/fireblocks/models/local_bank_transfer_africa_address.py
+++ b/fireblocks/models/local_bank_transfer_africa_address.py
@@ -19,9 +19,10 @@
import json
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
-from typing import Any, ClassVar, Dict, List
+from typing import Any, ClassVar, Dict, List, Optional
from typing_extensions import Annotated
from fireblocks.models.account_holder_details import AccountHolderDetails
+from fireblocks.models.payment_redirect import PaymentRedirect
from typing import Optional, Set
from typing_extensions import Self
@@ -33,7 +34,9 @@ class LocalBankTransferAfricaAddress(BaseModel):
account_number: Annotated[str, Field(strict=True)] = Field(alias="accountNumber")
bank_name: StrictStr = Field(description="Name of the bank", alias="bankName")
bank_code: StrictStr = Field(description="Internal bank identifier", alias="bankCode")
- __properties: ClassVar[List[str]] = ["accountHolder", "accountNumber", "bankName", "bankCode"]
+ success_payment_instruction_redirect_url: Optional[StrictStr] = Field(default=None, description="The URL to redirect to after the payment instruction is successful", alias="successPaymentInstructionRedirectUrl")
+ payment_redirect: Optional[PaymentRedirect] = Field(default=None, alias="paymentRedirect")
+ __properties: ClassVar[List[str]] = ["accountHolder", "accountNumber", "bankName", "bankCode", "successPaymentInstructionRedirectUrl", "paymentRedirect"]
@field_validator('account_number')
def account_number_validate_regular_expression(cls, value):
@@ -84,6 +87,9 @@ def to_dict(self) -> Dict[str, Any]:
# override the default output from pydantic by calling `to_dict()` of account_holder
if self.account_holder:
_dict['accountHolder'] = self.account_holder.to_dict()
+ # override the default output from pydantic by calling `to_dict()` of payment_redirect
+ if self.payment_redirect:
+ _dict['paymentRedirect'] = self.payment_redirect.to_dict()
return _dict
@classmethod
@@ -99,7 +105,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"accountHolder": AccountHolderDetails.from_dict(obj["accountHolder"]) if obj.get("accountHolder") is not None else None,
"accountNumber": obj.get("accountNumber"),
"bankName": obj.get("bankName"),
- "bankCode": obj.get("bankCode")
+ "bankCode": obj.get("bankCode"),
+ "successPaymentInstructionRedirectUrl": obj.get("successPaymentInstructionRedirectUrl"),
+ "paymentRedirect": PaymentRedirect.from_dict(obj["paymentRedirect"]) if obj.get("paymentRedirect") is not None else None
})
return _obj
diff --git a/fireblocks/models/market_execution_request_details.py b/fireblocks/models/market_execution_request_details.py
index c38b407a..35831273 100644
--- a/fireblocks/models/market_execution_request_details.py
+++ b/fireblocks/models/market_execution_request_details.py
@@ -32,10 +32,10 @@ class MarketExecutionRequestDetails(BaseModel):
""" # noqa: E501
type: MarketTypeEnum
side: Side
- base_amount: StrictStr = Field(description="Amount to convert", alias="baseAmount")
- base_asset_id: StrictStr = Field(description="Source asset identifier", alias="baseAssetId")
+ base_amount: StrictStr = Field(description="Amount in baseAssetId. BUY = base amount to receive; SELL = base amount to sell.", alias="baseAmount")
+ base_asset_id: StrictStr = Field(description="The asset you receive on BUY / give on SELL.", alias="baseAssetId")
base_asset_rail: Optional[TransferRail] = Field(default=None, alias="baseAssetRail")
- quote_asset_id: StrictStr = Field(description="Target asset identifier", alias="quoteAssetId")
+ quote_asset_id: StrictStr = Field(description="Counter asset used to pay/receive", alias="quoteAssetId")
quote_asset_rail: Optional[TransferRail] = Field(default=None, alias="quoteAssetRail")
__properties: ClassVar[List[str]] = ["type", "side", "baseAmount", "baseAssetId", "baseAssetRail", "quoteAssetId", "quoteAssetRail"]
diff --git a/fireblocks/models/mobile_money_address.py b/fireblocks/models/mobile_money_address.py
index d3a411fc..0e75c3bc 100644
--- a/fireblocks/models/mobile_money_address.py
+++ b/fireblocks/models/mobile_money_address.py
@@ -22,6 +22,7 @@
from typing import Any, ClassVar, Dict, List, Optional
from typing_extensions import Annotated
from fireblocks.models.account_holder_details import AccountHolderDetails
+from fireblocks.models.payment_redirect import PaymentRedirect
from typing import Optional, Set
from typing_extensions import Self
@@ -34,7 +35,9 @@ class MobileMoneyAddress(BaseModel):
provider: StrictStr = Field(description="Mobile money provider")
beneficiary_document_id: Optional[StrictStr] = Field(default=None, description="Beneficiary document identification (may be required)", alias="beneficiaryDocumentId")
beneficiary_relationship: Optional[StrictStr] = Field(default=None, description="Relationship to beneficiary for AML purposes", alias="beneficiaryRelationship")
- __properties: ClassVar[List[str]] = ["accountHolder", "mobilePhoneNumber", "provider", "beneficiaryDocumentId", "beneficiaryRelationship"]
+ success_payment_instruction_redirect_url: Optional[StrictStr] = Field(default=None, description="The URL to redirect to after the payment instruction is successful", alias="successPaymentInstructionRedirectUrl")
+ payment_redirect: Optional[PaymentRedirect] = Field(default=None, alias="paymentRedirect")
+ __properties: ClassVar[List[str]] = ["accountHolder", "mobilePhoneNumber", "provider", "beneficiaryDocumentId", "beneficiaryRelationship", "successPaymentInstructionRedirectUrl", "paymentRedirect"]
@field_validator('mobile_phone_number')
def mobile_phone_number_validate_regular_expression(cls, value):
@@ -92,6 +95,9 @@ def to_dict(self) -> Dict[str, Any]:
# override the default output from pydantic by calling `to_dict()` of account_holder
if self.account_holder:
_dict['accountHolder'] = self.account_holder.to_dict()
+ # override the default output from pydantic by calling `to_dict()` of payment_redirect
+ if self.payment_redirect:
+ _dict['paymentRedirect'] = self.payment_redirect.to_dict()
return _dict
@classmethod
@@ -108,7 +114,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"mobilePhoneNumber": obj.get("mobilePhoneNumber"),
"provider": obj.get("provider"),
"beneficiaryDocumentId": obj.get("beneficiaryDocumentId"),
- "beneficiaryRelationship": obj.get("beneficiaryRelationship")
+ "beneficiaryRelationship": obj.get("beneficiaryRelationship"),
+ "successPaymentInstructionRedirectUrl": obj.get("successPaymentInstructionRedirectUrl"),
+ "paymentRedirect": PaymentRedirect.from_dict(obj["paymentRedirect"]) if obj.get("paymentRedirect") is not None else None
})
return _obj
diff --git a/fireblocks/models/payid_address.py b/fireblocks/models/payid_address.py
new file mode 100644
index 00000000..0c8e8aa3
--- /dev/null
+++ b/fireblocks/models/payid_address.py
@@ -0,0 +1,107 @@
+# 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, Optional
+from fireblocks.models.account_holder_details import AccountHolderDetails
+from typing import Optional, Set
+from typing_extensions import Self
+
+class PayidAddress(BaseModel):
+ """
+ PayidAddress
+ """ # noqa: E501
+ account_holder: AccountHolderDetails = Field(alias="accountHolder")
+ value: StrictStr = Field(description="The PayID identifier (email, phone, ABN, or organization ID)")
+ type: StrictStr = Field(description="The type of PayID being used")
+ bsb: Optional[StrictStr] = Field(default=None, description="Bank State Branch (BSB) number (6 digits, format XXX-XXX)")
+ account_number: StrictStr = Field(description="Australian bank account number", alias="accountNumber")
+ __properties: ClassVar[List[str]] = ["accountHolder", "value", "type", "bsb", "accountNumber"]
+
+ @field_validator('type')
+ def type_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['EMAIL']):
+ raise ValueError("must be one of enum values ('EMAIL')")
+ 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 PayidAddress 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 account_holder
+ if self.account_holder:
+ _dict['accountHolder'] = self.account_holder.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of PayidAddress from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "accountHolder": AccountHolderDetails.from_dict(obj["accountHolder"]) if obj.get("accountHolder") is not None else None,
+ "value": obj.get("value"),
+ "type": obj.get("type"),
+ "bsb": obj.get("bsb"),
+ "accountNumber": obj.get("accountNumber")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/payid_destination.py b/fireblocks/models/payid_destination.py
new file mode 100644
index 00000000..15e456b4
--- /dev/null
+++ b/fireblocks/models/payid_destination.py
@@ -0,0 +1,101 @@
+# 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, StrictStr, field_validator
+from typing import Any, ClassVar, Dict, List
+from fireblocks.models.payid_address import PayidAddress
+from typing import Optional, Set
+from typing_extensions import Self
+
+class PayidDestination(BaseModel):
+ """
+ PayidDestination
+ """ # noqa: E501
+ type: StrictStr
+ address: PayidAddress
+ __properties: ClassVar[List[str]] = ["type", "address"]
+
+ @field_validator('type')
+ def type_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['PAYID']):
+ raise ValueError("must be one of enum values ('PAYID')")
+ 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 PayidDestination 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 address
+ if self.address:
+ _dict['address'] = self.address.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of PayidDestination from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "type": obj.get("type"),
+ "address": PayidAddress.from_dict(obj["address"]) if obj.get("address") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/payid_payment_info.py b/fireblocks/models/payid_payment_info.py
new file mode 100644
index 00000000..67aebc48
--- /dev/null
+++ b/fireblocks/models/payid_payment_info.py
@@ -0,0 +1,125 @@
+# 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, Optional
+from typing import Optional, Set
+from typing_extensions import Self
+
+class PayidPaymentInfo(BaseModel):
+ """
+ PayID payment information for Australian dollar transfers
+ """ # noqa: E501
+ rail: StrictStr = Field(description="The payment rail type for PayID transfers")
+ addressing_system: StrictStr = Field(description="The addressing system used for PayID transfers", alias="addressingSystem")
+ account_holder_given_name: StrictStr = Field(description="The given name (first name) of the account holder", alias="accountHolderGivenName")
+ account_holder_surname: StrictStr = Field(description="The surname (last name) of the account holder", alias="accountHolderSurname")
+ country: StrictStr = Field(description="The country for the transfer (ISO 3166-1 alpha-2 code)")
+ value: StrictStr = Field(description="The PayID identifier (email, phone, ABN, or organization ID)")
+ type: StrictStr = Field(description="The type of PayID being used")
+ bsb: Optional[StrictStr] = Field(default=None, description="Bank State Branch (BSB) number (6 digits, format XXX-XXX)")
+ account_number: StrictStr = Field(description="Australian bank account number", alias="accountNumber")
+ __properties: ClassVar[List[str]] = ["rail", "addressingSystem", "accountHolderGivenName", "accountHolderSurname", "country", "value", "type", "bsb", "accountNumber"]
+
+ @field_validator('rail')
+ def rail_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['PAYID']):
+ raise ValueError("must be one of enum values ('PAYID')")
+ return value
+
+ @field_validator('addressing_system')
+ def addressing_system_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['PAYID']):
+ raise ValueError("must be one of enum values ('PAYID')")
+ return value
+
+ @field_validator('type')
+ def type_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['EMAIL']):
+ raise ValueError("must be one of enum values ('EMAIL')")
+ 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 PayidPaymentInfo 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 PayidPaymentInfo from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "rail": obj.get("rail"),
+ "addressingSystem": obj.get("addressingSystem"),
+ "accountHolderGivenName": obj.get("accountHolderGivenName"),
+ "accountHolderSurname": obj.get("accountHolderSurname"),
+ "country": obj.get("country"),
+ "value": obj.get("value"),
+ "type": obj.get("type"),
+ "bsb": obj.get("bsb"),
+ "accountNumber": obj.get("accountNumber")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/payment_instructions_one_of.py b/fireblocks/models/payment_instructions_one_of.py
index 713284a6..9a210e1b 100644
--- a/fireblocks/models/payment_instructions_one_of.py
+++ b/fireblocks/models/payment_instructions_one_of.py
@@ -20,7 +20,7 @@
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional
-from fireblocks.models.european_sepa_address import EuropeanSEPAAddress
+from fireblocks.models.internal_transfer_address import InternalTransferAddress
from typing import Optional, Set
from typing_extensions import Self
@@ -29,15 +29,15 @@ class PaymentInstructionsOneOf(BaseModel):
PaymentInstructionsOneOf
""" # noqa: E501
type: StrictStr
- address: EuropeanSEPAAddress
+ address: InternalTransferAddress
reference_id: Optional[StrictStr] = Field(default=None, alias="referenceId")
__properties: ClassVar[List[str]] = ["type", "address", "referenceId"]
@field_validator('type')
def type_validate_enum(cls, value):
"""Validates the enum"""
- if value not in set(['EUROPEAN_SEPA']):
- raise ValueError("must be one of enum values ('EUROPEAN_SEPA')")
+ if value not in set(['INTERNAL_TRANSFER']):
+ raise ValueError("must be one of enum values ('INTERNAL_TRANSFER')")
return value
model_config = ConfigDict(
@@ -95,7 +95,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"type": obj.get("type"),
- "address": EuropeanSEPAAddress.from_dict(obj["address"]) if obj.get("address") is not None else None,
+ "address": InternalTransferAddress.from_dict(obj["address"]) if obj.get("address") is not None else None,
"referenceId": obj.get("referenceId")
})
return _obj
diff --git a/fireblocks/models/payment_redirect.py b/fireblocks/models/payment_redirect.py
new file mode 100644
index 00000000..b2b8a0af
--- /dev/null
+++ b/fireblocks/models/payment_redirect.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 PaymentRedirect(BaseModel):
+ """
+ URL returned by the provider that the end user will be redirected to in order to complete the payment on the bank/mobile provider page. After completion, the bank/mobile provider redirects the end user back to successRedirectUrl (provided in the RAMP request)
+ """ # noqa: E501
+ url: Optional[StrictStr] = Field(default=None, description="URL to redirect to")
+ expires_at: Optional[StrictStr] = Field(default=None, description="Expiration date of the redirect", alias="expiresAt")
+ __properties: ClassVar[List[str]] = ["url", "expiresAt"]
+
+ 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 PaymentRedirect 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 PaymentRedirect from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "url": obj.get("url"),
+ "expiresAt": obj.get("expiresAt")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/pix_address.py b/fireblocks/models/pix_address.py
index 3d1fa215..1cf776f9 100644
--- a/fireblocks/models/pix_address.py
+++ b/fireblocks/models/pix_address.py
@@ -33,13 +33,15 @@ class PixAddress(BaseModel):
key_type: StrictStr = Field(alias="keyType")
bank_name: Optional[StrictStr] = Field(default=None, alias="bankName")
bank_code: Optional[StrictStr] = Field(default=None, alias="bankCode")
- __properties: ClassVar[List[str]] = ["accountHolder", "pixKey", "keyType", "bankName", "bankCode"]
+ qr_code: Optional[StrictStr] = Field(default=None, description="The QR code to be used for the transfer", alias="qrCode")
+ expiration_date: Optional[StrictStr] = Field(default=None, description="The expiration date of the QR code", alias="expirationDate")
+ __properties: ClassVar[List[str]] = ["accountHolder", "pixKey", "keyType", "bankName", "bankCode", "qrCode", "expirationDate"]
@field_validator('key_type')
def key_type_validate_enum(cls, value):
"""Validates the enum"""
- if value not in set(['cpf', 'cnpj', 'email', 'phone', 'random']):
- raise ValueError("must be one of enum values ('cpf', 'cnpj', 'email', 'phone', 'random')")
+ if value not in set(['CPF', 'CNPJ', 'EMAIL', 'PHONE', 'RANDOM']):
+ raise ValueError("must be one of enum values ('CPF', 'CNPJ', 'EMAIL', 'PHONE', 'RANDOM')")
return value
model_config = ConfigDict(
@@ -100,7 +102,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"pixKey": obj.get("pixKey"),
"keyType": obj.get("keyType"),
"bankName": obj.get("bankName"),
- "bankCode": obj.get("bankCode")
+ "bankCode": obj.get("bankCode"),
+ "qrCode": obj.get("qrCode"),
+ "expirationDate": obj.get("expirationDate")
})
return _obj
diff --git a/fireblocks/models/recipient_handle.py b/fireblocks/models/recipient_handle.py
new file mode 100644
index 00000000..fbf666bd
--- /dev/null
+++ b/fireblocks/models/recipient_handle.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 RecipientHandle(BaseModel):
+ """
+ RecipientHandle
+ """ # noqa: E501
+ type: StrictStr
+ value: StrictStr = Field(description="The value of the recipient handle")
+ __properties: ClassVar[List[str]] = ["type", "value"]
+
+ @field_validator('type')
+ def type_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['EMAIL']):
+ raise ValueError("must be one of enum values ('EMAIL')")
+ 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 RecipientHandle 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 RecipientHandle from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "type": obj.get("type"),
+ "value": obj.get("value")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/transaction_request.py b/fireblocks/models/transaction_request.py
index aa88fb29..9eb2e780 100644
--- a/fireblocks/models/transaction_request.py
+++ b/fireblocks/models/transaction_request.py
@@ -21,6 +21,7 @@
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional
from fireblocks.models.destination_transfer_peer_path import DestinationTransferPeerPath
+from fireblocks.models.extra_parameters import ExtraParameters
from fireblocks.models.source_transfer_peer_path import SourceTransferPeerPath
from fireblocks.models.transaction_operation import TransactionOperation
from fireblocks.models.transaction_request_amount import TransactionRequestAmount
@@ -59,7 +60,7 @@ class TransactionRequest(BaseModel):
gas_price: Optional[TransactionRequestGasPrice] = Field(default=None, alias="gasPrice")
network_fee: Optional[TransactionRequestNetworkFee] = Field(default=None, alias="networkFee")
replace_tx_by_hash: Optional[StrictStr] = Field(default=None, description="For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.", alias="replaceTxByHash")
- extra_parameters: Optional[Dict[str, Any]] = Field(default=None, description="Additional protocol / operation specific key-value parameters: For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs) For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata) For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. For **exchange compliance (e.g., Binance) and Travel Rule purposes**, include the key `piiData` containing a **custom JSON structure** with Personally Identifiable Information (PII) relevant to the transaction. This data must be fully **encrypted by the sender** before being submitted to the Fireblocks API. The recommended encryption method is **hybrid encryption** using AES-256-GCM for the payload and RSA-OAEP for key exchange, with the recipient exchange’s public key. [development libraries](https://developers.fireblocks.com/docs/a-developers-guide-to-constructing-encrypted-pii-messages-for-binance-via-fireblocks) ", alias="extraParameters")
+ extra_parameters: Optional[ExtraParameters] = Field(default=None, alias="extraParameters")
customer_ref_id: Optional[StrictStr] = Field(default=None, description="The ID for AML providers to associate the owner of funds with transactions.", alias="customerRefId")
travel_rule_message: Optional[TravelRuleCreateTransactionRequest] = Field(default=None, alias="travelRuleMessage")
travel_rule_message_id: Optional[StrictStr] = Field(default=None, description="The ID of the travel rule message from any travel rule provider. Used for travel rule supporting functionality to associate transactions with existing travel rule messages.", alias="travelRuleMessageId")
@@ -149,6 +150,9 @@ def to_dict(self) -> Dict[str, Any]:
# override the default output from pydantic by calling `to_dict()` of network_fee
if self.network_fee:
_dict['networkFee'] = self.network_fee.to_dict()
+ # override the default output from pydantic by calling `to_dict()` of extra_parameters
+ if self.extra_parameters:
+ _dict['extraParameters'] = self.extra_parameters.to_dict()
# override the default output from pydantic by calling `to_dict()` of travel_rule_message
if self.travel_rule_message:
_dict['travelRuleMessage'] = self.travel_rule_message.to_dict()
@@ -190,7 +194,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"gasPrice": TransactionRequestGasPrice.from_dict(obj["gasPrice"]) if obj.get("gasPrice") is not None else None,
"networkFee": TransactionRequestNetworkFee.from_dict(obj["networkFee"]) if obj.get("networkFee") is not None else None,
"replaceTxByHash": obj.get("replaceTxByHash"),
- "extraParameters": obj.get("extraParameters"),
+ "extraParameters": ExtraParameters.from_dict(obj["extraParameters"]) if obj.get("extraParameters") is not None else None,
"customerRefId": obj.get("customerRefId"),
"travelRuleMessage": TravelRuleCreateTransactionRequest.from_dict(obj["travelRuleMessage"]) if obj.get("travelRuleMessage") is not None else None,
"travelRuleMessageId": obj.get("travelRuleMessageId"),
diff --git a/fireblocks/models/transaction_response.py b/fireblocks/models/transaction_response.py
index 509af6b5..007061e0 100644
--- a/fireblocks/models/transaction_response.py
+++ b/fireblocks/models/transaction_response.py
@@ -26,6 +26,7 @@
from fireblocks.models.block_info import BlockInfo
from fireblocks.models.compliance_results import ComplianceResults
from fireblocks.models.destination_transfer_peer_path_response import DestinationTransferPeerPathResponse
+from fireblocks.models.extra_parameters import ExtraParameters
from fireblocks.models.fee_info import FeeInfo
from fireblocks.models.fee_payer_info import FeePayerInfo
from fireblocks.models.get_transaction_operation import GetTransactionOperation
@@ -82,7 +83,7 @@ class TransactionResponse(BaseModel):
gas_limit: Optional[StrictStr] = Field(default=None, description="Gas limit for EVM-based blockchain transactions", alias="gasLimit")
blockchain_index: Optional[StrictStr] = Field(default=None, description="Blockchain-specific index or identifier for the transaction", alias="blockchainIndex")
paid_rent: Optional[StrictStr] = Field(default=None, description="Solana rent payment amount", alias="paidRent")
- extra_parameters: Optional[Dict[str, Any]] = Field(default=None, description="Additional protocol / operation specific key-value parameters: For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs) For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata) For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. For **exchange compliance (e.g., Binance) and Travel Rule purposes**, include the key `piiData` containing a **custom JSON structure** with Personally Identifiable Information (PII) relevant to the transaction. This data must be fully **encrypted by the sender** before being submitted to the Fireblocks API. The recommended encryption method is **hybrid encryption** using AES-256-GCM for the payload and RSA-OAEP for key exchange, with the recipient exchange’s public key. [development libraries](https://developers.fireblocks.com/docs/a-developers-guide-to-constructing-encrypted-pii-messages-for-binance-via-fireblocks) ", alias="extraParameters")
+ extra_parameters: Optional[ExtraParameters] = Field(default=None, alias="extraParameters")
signed_messages: Optional[List[SignedMessage]] = Field(default=None, alias="signedMessages")
num_of_confirmations: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy.", alias="numOfConfirmations")
block_info: Optional[BlockInfo] = Field(default=None, alias="blockInfo")
@@ -191,6 +192,9 @@ def to_dict(self) -> Dict[str, Any]:
# override the default output from pydantic by calling `to_dict()` of compliance_results
if self.compliance_results:
_dict['complianceResults'] = self.compliance_results.to_dict()
+ # override the default output from pydantic by calling `to_dict()` of extra_parameters
+ if self.extra_parameters:
+ _dict['extraParameters'] = self.extra_parameters.to_dict()
# override the default output from pydantic by calling `to_dict()` of each item in signed_messages (list)
_items = []
if self.signed_messages:
@@ -270,7 +274,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"gasLimit": obj.get("gasLimit"),
"blockchainIndex": obj.get("blockchainIndex"),
"paidRent": obj.get("paidRent"),
- "extraParameters": obj.get("extraParameters"),
+ "extraParameters": ExtraParameters.from_dict(obj["extraParameters"]) if obj.get("extraParameters") is not None else None,
"signedMessages": [SignedMessage.from_dict(_item) for _item in obj["signedMessages"]] if obj.get("signedMessages") is not None else None,
"numOfConfirmations": obj.get("numOfConfirmations"),
"blockInfo": BlockInfo.from_dict(obj["blockInfo"]) if obj.get("blockInfo") is not None else None,
diff --git a/fireblocks/models/transfer_rail.py b/fireblocks/models/transfer_rail.py
index 02ff8ff1..a8638731 100644
--- a/fireblocks/models/transfer_rail.py
+++ b/fireblocks/models/transfer_rail.py
@@ -21,7 +21,7 @@
class TransferRail(str, Enum):
"""
- Transfer rail: * **BLOCKCHAIN** - Transfer over the public blockchain * **INTERNAL** - Internal transfer within the same account (e.g. sub-accounts or same api key) * **PEER** - Peer transfer within the same provider network * **SWIFT** - International wire transfer * **IBAN** - International Bank Account Number transfer * **US_WIRE** - Domestic wire transfer within the United States (e.g. FedWire) * **ACH** - Automated Clearing House transfer, typically takes longer but not as expensive as wire transfers * **SEPA** - Euro transfers within the SEPA zone * **SPEI** - Mexican interbank electronic payment system * **PIX** - Brazilian instant payment system * **LOCAL_BANK_TRANSFER_AFRICA** - Local bank transfers within Africa * **MOBILE_MONEY** - Mobile money transfers (e.g. M-Pesa)
+ Transfer rail: * **BLOCKCHAIN** - Transfer over the public blockchain * **INTERNAL** - Internal transfer within the same account (e.g. sub-accounts or same api key) * **PEER** - Peer transfer within the same provider network * **SWIFT** - International wire transfer * **IBAN** - International Bank Account Number transfer * **US_WIRE** - Domestic wire transfer within the United States (e.g. FedWire) * **ACH** - Automated Clearing House transfer, typically takes longer but not as expensive as wire transfers * **SEPA** - Euro transfers within the SEPA zone * **SPEI** - Mexican interbank electronic payment system * **PIX** - Brazilian instant payment system * **LOCAL_BANK_TRANSFER_AFRICA** - Local bank transfers within Africa * **MOBILE_MONEY** - Mobile money transfers (e.g. M-Pesa) * **INTERNAL_TRANSFER** - Internal transfer within the same account * **INTERAC** - Canadian interbank transfer system * **PAYID** - Australian PayID payment system * **CHAPS** - The Clearing House Automated Payment System (CHAPS) is a real-time gross settlement payment system used for transactions in the United Kingdom
"""
"""
@@ -39,6 +39,10 @@ class TransferRail(str, Enum):
PIX = 'PIX'
LOCAL_BANK_TRANSFER_AFRICA = 'LOCAL_BANK_TRANSFER_AFRICA'
MOBILE_MONEY = 'MOBILE_MONEY'
+ INTERNAL_TRANSFER = 'INTERNAL_TRANSFER'
+ INTERAC = 'INTERAC'
+ PAYID = 'PAYID'
+ CHAPS = 'CHAPS'
@classmethod
def from_json(cls, json_str: str) -> Self:
diff --git a/fireblocks/models/workspace.py b/fireblocks/models/workspace.py
new file mode 100644
index 00000000..c05e5ccb
--- /dev/null
+++ b/fireblocks/models/workspace.py
@@ -0,0 +1,90 @@
+# coding: utf-8
+
+"""
+ Fireblocks API
+
+ Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+ The version of the OpenAPI document: 1.6.2
+ Contact: developers@fireblocks.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from pydantic import BaseModel, ConfigDict, Field, StrictStr
+from typing import Any, ClassVar, Dict, List
+from typing import Optional, Set
+from typing_extensions import Self
+
+class Workspace(BaseModel):
+ """
+ Workspace
+ """ # noqa: E501
+ id: StrictStr = Field(description="The ID of the workspace")
+ name: StrictStr = Field(description="The name of the workspace")
+ __properties: ClassVar[List[str]] = ["id", "name"]
+
+ 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 Workspace 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 Workspace 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")
+ })
+ return _obj
+
+
diff --git a/pyproject.toml b/pyproject.toml
index f982cd5b..08a27f53 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "fireblocks"
-version = "14.1.0"
+version = "0.0.0"
description = "Fireblocks API"
authors = ["Fireblocks "]
license = "MIT License"
diff --git a/setup.py b/setup.py
index aaee92fd..8e55f57b 100644
--- a/setup.py
+++ b/setup.py
@@ -23,7 +23,7 @@
# prerequisite: setuptools
# http://pypi.python.org/pypi/setuptools
NAME = "fireblocks"
-VERSION = "14.1.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 90162086..f894e576 100644
--- a/test/fireblocks/test_client.py
+++ b/test/fireblocks/test_client.py
@@ -59,6 +59,7 @@
from fireblocks.api.web3_connections_api import Web3ConnectionsApi
from fireblocks.api.webhooks_api import WebhooksApi
from fireblocks.api.webhooks_v2_api import WebhooksV2Api
+from fireblocks.api.workspace_api import WorkspaceApi
from fireblocks.api.workspace_status_beta_api import WorkspaceStatusBetaApi
from fireblocks.api.whitelist_ip_addresses_api import WhitelistIpAddressesApi
@@ -204,6 +205,9 @@ def test_get_webhooks(fireblocks_instance):
def test_get_webhooks_v2(fireblocks_instance):
assert isinstance(fireblocks_instance.webhooks_v2, WebhooksV2Api)
+def test_get_workspace(fireblocks_instance):
+ assert isinstance(fireblocks_instance.workspace, WorkspaceApi)
+
def test_get_workspace_status_beta(fireblocks_instance):
assert isinstance(fireblocks_instance.workspace_status_beta, WorkspaceStatusBetaApi)
diff --git a/test/test_add_collateral_request_body.py b/test/test_add_collateral_request_body.py
index 3bfd3a18..1307f68a 100644
--- a/test/test_add_collateral_request_body.py
+++ b/test/test_add_collateral_request_body.py
@@ -77,7 +77,7 @@ def make_instance(self, include_optional) -> AddCollateralRequestBody:
gas_price = null,
network_fee = null,
replace_tx_by_hash = '00000000-0000-0000-0000-000000000000',
- extra_parameters = fireblocks.models.extra_parameters.extraParameters(),
+ extra_parameters = { },
customer_ref_id = 'abcdef',
travel_rule_message = fireblocks.models.travel_rule_create_transaction_request.TravelRuleCreateTransactionRequest(
originator_vas_pdid = 'did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2',
diff --git a/test/test_additional_info_request_additional_info.py b/test/test_additional_info_request_additional_info.py
index 933189dd..e3c52043 100644
--- a/test/test_additional_info_request_additional_info.py
+++ b/test/test_additional_info_request_additional_info.py
@@ -39,8 +39,8 @@ def make_instance(self, include_optional) -> AdditionalInfoRequestAdditionalInfo
model = AdditionalInfoRequestAdditionalInfo()
if include_optional:
return AdditionalInfoRequestAdditionalInfo(
- account_holder_given_name = 'Ahmad',
- account_holder_surname = 'Khalil',
+ account_holder_given_name = 'John',
+ account_holder_surname = 'Smith',
account_holder_city = 'New York',
account_holder_country = 'FR',
account_holder_address1 = '123 Wall Street',
@@ -55,10 +55,10 @@ def make_instance(self, include_optional) -> AdditionalInfoRequestAdditionalInfo
aba_country = 'US',
spei_clabe = '012180001234567890',
spei_name = 'Juan Pérez',
- rail = 'LBT',
- addressing_system = 'BAN',
- country = 'LB',
- bank_name = 'Bank of Beirut',
+ rail = 'CHAPS',
+ addressing_system = 'CHAPS',
+ country = 'GB',
+ bank_name = 'Barclays Bank',
beneficiary_rfc = 'PERJ800101ABC',
sender_document_id = 'CURP123456789',
clabe = '012180001234567890',
@@ -71,7 +71,7 @@ def make_instance(self, include_optional) -> AdditionalInfoRequestAdditionalInfo
bank_address = '16 Boulevard des Italiens, 75009 Paris',
purpose_code = 'SALA',
tax_id = '1234567890123',
- account_number = '123456789012',
+ account_number = '12345678',
routing_number = '021000021',
account_type = 'CHECKING',
swift_code = 'CHASUS33',
@@ -84,12 +84,21 @@ def make_instance(self, include_optional) -> AdditionalInfoRequestAdditionalInfo
mobile_phone_number = '+233241234567',
provider = 'MTN',
beneficiary_document_id = 'GHA-123456789-0',
- beneficiary_relationship = 'Family'
+ beneficiary_relationship = 'Family',
+ recipient_handle_type = 'EMAIL',
+ recipient_handle_value = 'john.smith@email.com',
+ message = 'Please deposit the funds into the account',
+ value = 'john.williams@email.com',
+ type = 'EMAIL',
+ bsb = '123-456',
+ sort_code = '12-34-56',
+ bank_account_country = 'GB',
+ bank_account_holder_name = 'John Smith'
)
else:
return AdditionalInfoRequestAdditionalInfo(
- account_holder_given_name = 'Ahmad',
- account_holder_surname = 'Khalil',
+ account_holder_given_name = 'John',
+ account_holder_surname = 'Smith',
account_holder_city = 'New York',
account_holder_country = 'FR',
account_holder_address1 = '123 Wall Street',
@@ -101,15 +110,15 @@ def make_instance(self, include_optional) -> AdditionalInfoRequestAdditionalInfo
aba_account_number = '1234567890',
aba_country = 'US',
spei_clabe = '012180001234567890',
- rail = 'LBT',
- addressing_system = 'BAN',
- country = 'LB',
- bank_name = 'Bank of Beirut',
+ rail = 'CHAPS',
+ addressing_system = 'CHAPS',
+ country = 'GB',
+ bank_name = 'Barclays Bank',
clabe = '012180001234567890',
pix_key = 'joao.silva@email.com',
bank_code = '001',
key_type = 'EMAIL',
- account_number = '123456789012',
+ account_number = '12345678',
routing_number = '021000021',
account_type = 'CHECKING',
swift_code = 'CHASUS33',
@@ -119,6 +128,14 @@ def make_instance(self, include_optional) -> AdditionalInfoRequestAdditionalInfo
bank_address_postal_code = '10017',
mobile_phone_number = '+233241234567',
provider = 'MTN',
+ recipient_handle_type = 'EMAIL',
+ recipient_handle_value = 'john.smith@email.com',
+ message = 'Please deposit the funds into the account',
+ value = 'john.williams@email.com',
+ type = 'EMAIL',
+ sort_code = '12-34-56',
+ bank_account_country = 'GB',
+ bank_account_holder_name = 'John Smith',
)
"""
diff --git a/test/test_chaps_address.py b/test/test_chaps_address.py
new file mode 100644
index 00000000..fdb024ef
--- /dev/null
+++ b/test/test_chaps_address.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.chaps_address import ChapsAddress
+
+
+class TestChapsAddress(unittest.TestCase):
+ """ChapsAddress unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ChapsAddress:
+ """Test ChapsAddress
+ 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 `ChapsAddress`
+ """
+ model = ChapsAddress()
+ if include_optional:
+ return ChapsAddress(
+ account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
+ sort_code = '12-34-56',
+ account_number = '12345678',
+ bank_name = 'Barclays Bank',
+ bank_account_country = 'GB',
+ bank_account_holder_name = 'John Smith'
+ )
+ else:
+ return ChapsAddress(
+ account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
+ sort_code = '12-34-56',
+ account_number = '12345678',
+ bank_account_country = 'GB',
+ bank_account_holder_name = 'John Smith',
+ )
+ """
+
+ def testChapsAddress(self):
+ """Test ChapsAddress"""
+ # 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_chaps_destination.py b/test/test_chaps_destination.py
new file mode 100644
index 00000000..b31108d6
--- /dev/null
+++ b/test/test_chaps_destination.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.chaps_destination import ChapsDestination
+
+
+class TestChapsDestination(unittest.TestCase):
+ """ChapsDestination unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ChapsDestination:
+ """Test ChapsDestination
+ 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 `ChapsDestination`
+ """
+ model = ChapsDestination()
+ if include_optional:
+ return ChapsDestination(
+ type = 'CHAPS',
+ address = {"accountHolder":{"name":"John Smith","city":"London","country":"GB","subdivision":"ENG","address":"123 Oxford Street","postalCode":"W1D 1BS"},"sortCode":"12-34-56","accountNumber":"12345678","bankName":"Barclays Bank"}
+ )
+ else:
+ return ChapsDestination(
+ type = 'CHAPS',
+ address = {"accountHolder":{"name":"John Smith","city":"London","country":"GB","subdivision":"ENG","address":"123 Oxford Street","postalCode":"W1D 1BS"},"sortCode":"12-34-56","accountNumber":"12345678","bankName":"Barclays Bank"},
+ )
+ """
+
+ def testChapsDestination(self):
+ """Test ChapsDestination"""
+ # 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_chaps_payment_info.py b/test/test_chaps_payment_info.py
new file mode 100644
index 00000000..fb8f4657
--- /dev/null
+++ b/test/test_chaps_payment_info.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.chaps_payment_info import ChapsPaymentInfo
+
+
+class TestChapsPaymentInfo(unittest.TestCase):
+ """ChapsPaymentInfo unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ChapsPaymentInfo:
+ """Test ChapsPaymentInfo
+ 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 `ChapsPaymentInfo`
+ """
+ model = ChapsPaymentInfo()
+ if include_optional:
+ return ChapsPaymentInfo(
+ rail = 'CHAPS',
+ addressing_system = 'CHAPS',
+ account_holder_given_name = 'John',
+ account_holder_surname = 'Smith',
+ country = 'GB',
+ sort_code = '12-34-56',
+ account_number = '12345678',
+ bank_name = 'Barclays Bank',
+ bank_account_country = 'GB',
+ bank_account_holder_name = 'John Smith'
+ )
+ else:
+ return ChapsPaymentInfo(
+ rail = 'CHAPS',
+ addressing_system = 'CHAPS',
+ account_holder_given_name = 'John',
+ account_holder_surname = 'Smith',
+ country = 'GB',
+ sort_code = '12-34-56',
+ account_number = '12345678',
+ bank_account_country = 'GB',
+ bank_account_holder_name = 'John Smith',
+ )
+ """
+
+ def testChapsPaymentInfo(self):
+ """Test ChapsPaymentInfo"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_create_quote.py b/test/test_create_quote.py
index 4ef3ed5b..4c9ca2d9 100644
--- a/test/test_create_quote.py
+++ b/test/test_create_quote.py
@@ -41,7 +41,9 @@ def make_instance(self, include_optional) -> CreateQuote:
null
],
base_asset_id = '',
+ base_asset_rail = 'BLOCKCHAIN',
quote_asset_id = '',
+ quote_asset_rail = 'BLOCKCHAIN',
base_amount = '100.00',
slippage_bps = 1,
settlement = {"type":"DVP","sourceAccount":{"type":"VAULT_ACCOUNT","id":"vault_acc_3f7e1d9b2c5a8e4f"},"destinationAccount":{"type":"VAULT_ACCOUNT","id":"vault_acc_7b2e5d8f1c4a9e3b"}},
diff --git a/test/test_external_account_local_bank_africa.py b/test/test_external_account_local_bank_africa.py
index 5be2e977..0b1ee92b 100644
--- a/test/test_external_account_local_bank_africa.py
+++ b/test/test_external_account_local_bank_africa.py
@@ -39,17 +39,10 @@ def make_instance(self, include_optional) -> ExternalAccountLocalBankAfrica:
model = ExternalAccountLocalBankAfrica()
if include_optional:
return ExternalAccountLocalBankAfrica(
- type = 'LOCAL_BANK_AFRICA_RAIL',
- account_number = '1234567890123',
- bank_name = '',
- bank_code = ''
+ success_redirect_url = ''
)
else:
return ExternalAccountLocalBankAfrica(
- type = 'LOCAL_BANK_AFRICA_RAIL',
- account_number = '1234567890123',
- bank_name = '',
- bank_code = '',
)
"""
diff --git a/test/test_external_account_mobile_money.py b/test/test_external_account_mobile_money.py
index d32500d7..42c6dbfd 100644
--- a/test/test_external_account_mobile_money.py
+++ b/test/test_external_account_mobile_money.py
@@ -40,7 +40,8 @@ def make_instance(self, include_optional) -> ExternalAccountMobileMoney:
type = 'MOBILE_MONEY_RAIL',
mobile_phone_number = '+14155551234',
provider = 'M_PESA',
- email = ''
+ email = '',
+ success_redirect_url = ''
)
else:
return ExternalAccountMobileMoney(
diff --git a/test/test_external_account_sender_information.py b/test/test_external_account_sender_information.py
index ed0c1a2d..76fe4216 100644
--- a/test/test_external_account_sender_information.py
+++ b/test/test_external_account_sender_information.py
@@ -39,23 +39,18 @@ def make_instance(self, include_optional) -> ExternalAccountSenderInformation:
model = ExternalAccountSenderInformation()
if include_optional:
return ExternalAccountSenderInformation(
- type = 'LOCAL_BANK_AFRICA_RAIL',
+ type = 'MOBILE_MONEY_RAIL',
mobile_phone_number = '+14155551234',
provider = 'M_PESA',
email = '',
- account_number = '1234567890123',
- bank_name = '',
- bank_code = ''
+ success_redirect_url = ''
)
else:
return ExternalAccountSenderInformation(
- type = 'LOCAL_BANK_AFRICA_RAIL',
+ type = 'MOBILE_MONEY_RAIL',
mobile_phone_number = '+14155551234',
provider = 'M_PESA',
email = '',
- account_number = '1234567890123',
- bank_name = '',
- bank_code = '',
)
"""
diff --git a/test/test_extra_parameters.py b/test/test_extra_parameters.py
new file mode 100644
index 00000000..2778d887
--- /dev/null
+++ b/test/test_extra_parameters.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.extra_parameters import ExtraParameters
+
+
+class TestExtraParameters(unittest.TestCase):
+ """ExtraParameters unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ExtraParameters:
+ """Test ExtraParameters
+ 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 `ExtraParameters`
+ """
+ model = ExtraParameters()
+ if include_optional:
+ return ExtraParameters(
+ node_controls = { },
+ raw_message_data = { },
+ contract_call_data = '',
+ program_call_data = '',
+ inputs_selection = { },
+ allow_base_asset_address = True,
+ pii_data = { }
+ )
+ else:
+ return ExtraParameters(
+ )
+ """
+
+ def testExtraParameters(self):
+ """Test ExtraParameters"""
+ # 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_fiat_destination.py b/test/test_fiat_destination.py
index b3508e01..04817cf0 100644
--- a/test/test_fiat_destination.py
+++ b/test/test_fiat_destination.py
@@ -38,28 +38,12 @@ def make_instance(self, include_optional) -> FiatDestination:
if include_optional:
return FiatDestination(
type = 'IBAN',
- address = fireblocks.models.european_sepa_address.EuropeanSEPAAddress(
- account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
- iban = 'GB82WEST12345698765432',
- bic = '',
- bank_name = '',
- bank_branch = '',
- bank_address = '',
- purpose_code = '',
- tax_id = '', )
+ address = {"externalSubAccountId":"sub_acc_1234567890","accountId":"acc_1234567890"}
)
else:
return FiatDestination(
type = 'IBAN',
- address = fireblocks.models.european_sepa_address.EuropeanSEPAAddress(
- account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
- iban = 'GB82WEST12345698765432',
- bic = '',
- bank_name = '',
- bank_branch = '',
- bank_address = '',
- purpose_code = '',
- tax_id = '', ),
+ address = {"externalSubAccountId":"sub_acc_1234567890","accountId":"acc_1234567890"},
)
"""
diff --git a/test/test_interac_address.py b/test/test_interac_address.py
new file mode 100644
index 00000000..5868a8fb
--- /dev/null
+++ b/test/test_interac_address.py
@@ -0,0 +1,62 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+
+import unittest
+
+from fireblocks.models.interac_address import InteracAddress
+
+
+class TestInteracAddress(unittest.TestCase):
+ """InteracAddress unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> InteracAddress:
+ """Test InteracAddress
+ 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 `InteracAddress`
+ """
+ model = InteracAddress()
+ if include_optional:
+ return InteracAddress(
+ account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
+ recipient_handle = fireblocks.models.recipient_handle.RecipientHandle(
+ type = 'EMAIL',
+ value = 'john.smith@email.com', ),
+ message = 'Please deposit the funds into the account'
+ )
+ else:
+ return InteracAddress(
+ account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
+ recipient_handle = fireblocks.models.recipient_handle.RecipientHandle(
+ type = 'EMAIL',
+ value = 'john.smith@email.com', ),
+ )
+ """
+
+ def testInteracAddress(self):
+ """Test InteracAddress"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_interac_destination.py b/test/test_interac_destination.py
new file mode 100644
index 00000000..efde37e3
--- /dev/null
+++ b/test/test_interac_destination.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.interac_destination import InteracDestination
+
+
+class TestInteracDestination(unittest.TestCase):
+ """InteracDestination unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> InteracDestination:
+ """Test InteracDestination
+ 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 `InteracDestination`
+ """
+ model = InteracDestination()
+ if include_optional:
+ return InteracDestination(
+ type = 'INTERAC',
+ address = {"accountHolder":{"name":"John Smith","city":"Toronto","country":"CA","subdivision":"ON","address":"123 Yonge Street","postalCode":"M5B 1M4"},"recipientHandle":{"type":"EMAIL","value":"john.smith@email.com"},"message":"Please deposit the funds into the account","securityQuestion":"What is your mother's maiden name?","securityAnswer":"Jane Smith"}
+ )
+ else:
+ return InteracDestination(
+ type = 'INTERAC',
+ address = {"accountHolder":{"name":"John Smith","city":"Toronto","country":"CA","subdivision":"ON","address":"123 Yonge Street","postalCode":"M5B 1M4"},"recipientHandle":{"type":"EMAIL","value":"john.smith@email.com"},"message":"Please deposit the funds into the account","securityQuestion":"What is your mother's maiden name?","securityAnswer":"Jane Smith"},
+ )
+ """
+
+ def testInteracDestination(self):
+ """Test InteracDestination"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_interac_payment_info.py b/test/test_interac_payment_info.py
new file mode 100644
index 00000000..bde78f64
--- /dev/null
+++ b/test/test_interac_payment_info.py
@@ -0,0 +1,69 @@
+# 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.interac_payment_info import InteracPaymentInfo
+
+
+class TestInteracPaymentInfo(unittest.TestCase):
+ """InteracPaymentInfo unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> InteracPaymentInfo:
+ """Test InteracPaymentInfo
+ 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 `InteracPaymentInfo`
+ """
+ model = InteracPaymentInfo()
+ if include_optional:
+ return InteracPaymentInfo(
+ rail = 'INTERAC',
+ addressing_system = 'INTERAC',
+ account_holder_given_name = 'John',
+ account_holder_surname = 'Smith',
+ country = 'CA',
+ recipient_handle_type = 'EMAIL',
+ recipient_handle_value = 'john.smith@email.com',
+ message = 'Please deposit the funds into the account'
+ )
+ else:
+ return InteracPaymentInfo(
+ rail = 'INTERAC',
+ addressing_system = 'INTERAC',
+ account_holder_given_name = 'John',
+ account_holder_surname = 'Smith',
+ country = 'CA',
+ recipient_handle_type = 'EMAIL',
+ recipient_handle_value = 'john.smith@email.com',
+ message = 'Please deposit the funds into the account',
+ )
+ """
+
+ def testInteracPaymentInfo(self):
+ """Test InteracPaymentInfo"""
+ # 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_address.py b/test/test_internal_transfer_address.py
new file mode 100644
index 00000000..1f6789a1
--- /dev/null
+++ b/test/test_internal_transfer_address.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.internal_transfer_address import InternalTransferAddress
+
+
+class TestInternalTransferAddress(unittest.TestCase):
+ """InternalTransferAddress unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> InternalTransferAddress:
+ """Test InternalTransferAddress
+ 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 `InternalTransferAddress`
+ """
+ model = InternalTransferAddress()
+ if include_optional:
+ return InternalTransferAddress(
+ external_account_id = '',
+ account_id = ''
+ )
+ else:
+ return InternalTransferAddress(
+ account_id = '',
+ )
+ """
+
+ def testInternalTransferAddress(self):
+ """Test InternalTransferAddress"""
+ # 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_destination.py b/test/test_internal_transfer_destination.py
new file mode 100644
index 00000000..3749b1b9
--- /dev/null
+++ b/test/test_internal_transfer_destination.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.internal_transfer_destination import InternalTransferDestination
+
+
+class TestInternalTransferDestination(unittest.TestCase):
+ """InternalTransferDestination unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> InternalTransferDestination:
+ """Test InternalTransferDestination
+ 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 `InternalTransferDestination`
+ """
+ model = InternalTransferDestination()
+ if include_optional:
+ return InternalTransferDestination(
+ type = 'INTERNAL_TRANSFER',
+ address = {"externalSubAccountId":"sub_acc_1234567890","accountId":"acc_1234567890"}
+ )
+ else:
+ return InternalTransferDestination(
+ type = 'INTERNAL_TRANSFER',
+ )
+ """
+
+ def testInternalTransferDestination(self):
+ """Test InternalTransferDestination"""
+ # 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_local_bank_transfer_africa_address.py b/test/test_local_bank_transfer_africa_address.py
index d552c347..55d778ff 100644
--- a/test/test_local_bank_transfer_africa_address.py
+++ b/test/test_local_bank_transfer_africa_address.py
@@ -42,7 +42,11 @@ def make_instance(self, include_optional) -> LocalBankTransferAfricaAddress:
account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
account_number = '1234567890123',
bank_name = '',
- bank_code = ''
+ bank_code = '',
+ success_payment_instruction_redirect_url = '',
+ payment_redirect = fireblocks.models.payment_redirect.PaymentRedirect(
+ url = 'https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907',
+ expires_at = '2025-01-15T12:00:00Z', )
)
else:
return LocalBankTransferAfricaAddress(
diff --git a/test/test_local_bank_transfer_africa_destination.py b/test/test_local_bank_transfer_africa_destination.py
index 5b93c2ce..23df3904 100644
--- a/test/test_local_bank_transfer_africa_destination.py
+++ b/test/test_local_bank_transfer_africa_destination.py
@@ -40,12 +40,12 @@ def make_instance(self, include_optional) -> LocalBankTransferAfricaDestination:
if include_optional:
return LocalBankTransferAfricaDestination(
type = 'LOCAL_BANK_TRANSFER',
- address = {"accountHolder":{"name":"Adaora Okafor","city":"Lagos","country":"NG","subdivision":"LA","address":"15 Victoria Island Road","postalCode":"101001"},"accountNumber":"1234567890123","bankName":"First Bank of Nigeria","bankCode":"011"}
+ address = {"accountHolder":{"name":"Adaora Okafor","city":"Lagos","country":"NG","subdivision":"LA","address":"15 Victoria Island Road","postalCode":"101001"},"accountNumber":"1234567890123","bankName":"First Bank of Nigeria","bankCode":"011","successPaymentInstructionRedirectUrl":"https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907","paymentRedirect":{"url":"https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907","expiresAt":"2025-01-15T12:00:00Z"}}
)
else:
return LocalBankTransferAfricaDestination(
type = 'LOCAL_BANK_TRANSFER',
- address = {"accountHolder":{"name":"Adaora Okafor","city":"Lagos","country":"NG","subdivision":"LA","address":"15 Victoria Island Road","postalCode":"101001"},"accountNumber":"1234567890123","bankName":"First Bank of Nigeria","bankCode":"011"},
+ address = {"accountHolder":{"name":"Adaora Okafor","city":"Lagos","country":"NG","subdivision":"LA","address":"15 Victoria Island Road","postalCode":"101001"},"accountNumber":"1234567890123","bankName":"First Bank of Nigeria","bankCode":"011","successPaymentInstructionRedirectUrl":"https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907","paymentRedirect":{"url":"https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907","expiresAt":"2025-01-15T12:00:00Z"}},
)
"""
diff --git a/test/test_mobile_money_address.py b/test/test_mobile_money_address.py
index ba2ae891..a780005b 100644
--- a/test/test_mobile_money_address.py
+++ b/test/test_mobile_money_address.py
@@ -41,7 +41,11 @@ def make_instance(self, include_optional) -> MobileMoneyAddress:
mobile_phone_number = '+14155551234',
provider = 'm-pesa',
beneficiary_document_id = '',
- beneficiary_relationship = ''
+ beneficiary_relationship = '',
+ success_payment_instruction_redirect_url = '',
+ payment_redirect = fireblocks.models.payment_redirect.PaymentRedirect(
+ url = 'https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907',
+ expires_at = '2025-01-15T12:00:00Z', )
)
else:
return MobileMoneyAddress(
diff --git a/test/test_mobile_money_destination.py b/test/test_mobile_money_destination.py
index c2da6a41..6fd8e16d 100644
--- a/test/test_mobile_money_destination.py
+++ b/test/test_mobile_money_destination.py
@@ -38,12 +38,12 @@ def make_instance(self, include_optional) -> MobileMoneyDestination:
if include_optional:
return MobileMoneyDestination(
type = 'MOBILE_MONEY',
- address = {"accountHolder":{"name":"Grace Wanjiku Kamau","city":"Nairobi","country":"KE","subdivision":"NRB","address":"Westlands Avenue 45","postalCode":"00100"},"mobilePhoneNumber":"+254712345678","provider":"m-pesa","beneficiaryDocumentId":"12345678","beneficiaryRelationship":"self"}
+ address = {"accountHolder":{"name":"Grace Wanjiku Kamau","city":"Nairobi","country":"KE","subdivision":"NRB","address":"Westlands Avenue 45","postalCode":"00100"},"mobilePhoneNumber":"+254712345678","provider":"m-pesa","beneficiaryDocumentId":"12345678","beneficiaryRelationship":"self","successPaymentInstructionRedirectUrl":"https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907","paymentRedirect":{"url":"https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907","expiresAt":"2025-01-15T12:00:00Z"}}
)
else:
return MobileMoneyDestination(
type = 'MOBILE_MONEY',
- address = {"accountHolder":{"name":"Grace Wanjiku Kamau","city":"Nairobi","country":"KE","subdivision":"NRB","address":"Westlands Avenue 45","postalCode":"00100"},"mobilePhoneNumber":"+254712345678","provider":"m-pesa","beneficiaryDocumentId":"12345678","beneficiaryRelationship":"self"},
+ address = {"accountHolder":{"name":"Grace Wanjiku Kamau","city":"Nairobi","country":"KE","subdivision":"NRB","address":"Westlands Avenue 45","postalCode":"00100"},"mobilePhoneNumber":"+254712345678","provider":"m-pesa","beneficiaryDocumentId":"12345678","beneficiaryRelationship":"self","successPaymentInstructionRedirectUrl":"https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907","paymentRedirect":{"url":"https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907","expiresAt":"2025-01-15T12:00:00Z"}},
)
"""
diff --git a/test/test_payid_address.py b/test/test_payid_address.py
new file mode 100644
index 00000000..1f0466a8
--- /dev/null
+++ b/test/test_payid_address.py
@@ -0,0 +1,62 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+
+import unittest
+
+from fireblocks.models.payid_address import PayidAddress
+
+
+class TestPayidAddress(unittest.TestCase):
+ """PayidAddress unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> PayidAddress:
+ """Test PayidAddress
+ 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 `PayidAddress`
+ """
+ model = PayidAddress()
+ if include_optional:
+ return PayidAddress(
+ account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
+ value = 'john.williams@email.com',
+ type = 'EMAIL',
+ bsb = '123-456',
+ account_number = '12345678'
+ )
+ else:
+ return PayidAddress(
+ account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
+ value = 'john.williams@email.com',
+ type = 'EMAIL',
+ account_number = '12345678',
+ )
+ """
+
+ def testPayidAddress(self):
+ """Test PayidAddress"""
+ # 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_payid_destination.py b/test/test_payid_destination.py
new file mode 100644
index 00000000..267c3fc7
--- /dev/null
+++ b/test/test_payid_destination.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.payid_destination import PayidDestination
+
+
+class TestPayidDestination(unittest.TestCase):
+ """PayidDestination unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> PayidDestination:
+ """Test PayidDestination
+ 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 `PayidDestination`
+ """
+ model = PayidDestination()
+ if include_optional:
+ return PayidDestination(
+ type = 'PAYID',
+ address = {"accountHolder":{"name":"John Williams","city":"Sydney","country":"AU","subdivision":"NSW","address":"456 George Street","postalCode":"2000"},"value":"john.williams@email.com","type":"EMAIL","bsb":"123-456","accountNumber":"12345678"}
+ )
+ else:
+ return PayidDestination(
+ type = 'PAYID',
+ address = {"accountHolder":{"name":"John Williams","city":"Sydney","country":"AU","subdivision":"NSW","address":"456 George Street","postalCode":"2000"},"value":"john.williams@email.com","type":"EMAIL","bsb":"123-456","accountNumber":"12345678"},
+ )
+ """
+
+ def testPayidDestination(self):
+ """Test PayidDestination"""
+ # 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_payid_payment_info.py b/test/test_payid_payment_info.py
new file mode 100644
index 00000000..5c419893
--- /dev/null
+++ b/test/test_payid_payment_info.py
@@ -0,0 +1,70 @@
+# coding: utf-8
+
+"""
+Fireblocks API
+
+Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+
+The version of the OpenAPI document: 1.6.2
+Contact: developers@fireblocks.com
+Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+Do not edit the class manually.
+""" # noqa: E501
+
+
+import unittest
+
+from fireblocks.models.payid_payment_info import PayidPaymentInfo
+
+
+class TestPayidPaymentInfo(unittest.TestCase):
+ """PayidPaymentInfo unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> PayidPaymentInfo:
+ """Test PayidPaymentInfo
+ 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 `PayidPaymentInfo`
+ """
+ model = PayidPaymentInfo()
+ if include_optional:
+ return PayidPaymentInfo(
+ rail = 'PAYID',
+ addressing_system = 'PAYID',
+ account_holder_given_name = 'John',
+ account_holder_surname = 'Williams',
+ country = 'AU',
+ value = 'john.williams@email.com',
+ type = 'EMAIL',
+ bsb = '123-456',
+ account_number = '12345678'
+ )
+ else:
+ return PayidPaymentInfo(
+ rail = 'PAYID',
+ addressing_system = 'PAYID',
+ account_holder_given_name = 'John',
+ account_holder_surname = 'Williams',
+ country = 'AU',
+ value = 'john.williams@email.com',
+ type = 'EMAIL',
+ account_number = '12345678',
+ )
+ """
+
+ def testPayidPaymentInfo(self):
+ """Test PayidPaymentInfo"""
+ # 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_payment_instructions.py b/test/test_payment_instructions.py
index 46b0aaf2..f6236a88 100644
--- a/test/test_payment_instructions.py
+++ b/test/test_payment_instructions.py
@@ -38,29 +38,13 @@ def make_instance(self, include_optional) -> PaymentInstructions:
if include_optional:
return PaymentInstructions(
type = 'BLOCKCHAIN',
- address = fireblocks.models.european_sepa_address.EuropeanSEPAAddress(
- account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
- iban = 'GB82WEST12345698765432',
- bic = '',
- bank_name = '',
- bank_branch = '',
- bank_address = '',
- purpose_code = '',
- tax_id = '', ),
+ address = {"externalSubAccountId":"sub_acc_1234567890","accountId":"acc_1234567890"},
reference_id = ''
)
else:
return PaymentInstructions(
type = 'BLOCKCHAIN',
- address = fireblocks.models.european_sepa_address.EuropeanSEPAAddress(
- account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
- iban = 'GB82WEST12345698765432',
- bic = '',
- bank_name = '',
- bank_branch = '',
- bank_address = '',
- purpose_code = '',
- tax_id = '', ),
+ address = {"externalSubAccountId":"sub_acc_1234567890","accountId":"acc_1234567890"},
)
"""
diff --git a/test/test_payment_instructions_one_of.py b/test/test_payment_instructions_one_of.py
index 5b32e1da..7265b5e2 100644
--- a/test/test_payment_instructions_one_of.py
+++ b/test/test_payment_instructions_one_of.py
@@ -37,30 +37,14 @@ def make_instance(self, include_optional) -> PaymentInstructionsOneOf:
model = PaymentInstructionsOneOf()
if include_optional:
return PaymentInstructionsOneOf(
- type = 'EUROPEAN_SEPA',
- address = fireblocks.models.european_sepa_address.EuropeanSEPAAddress(
- account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
- iban = 'GB82WEST12345698765432',
- bic = '',
- bank_name = '',
- bank_branch = '',
- bank_address = '',
- purpose_code = '',
- tax_id = '', ),
+ type = 'INTERNAL_TRANSFER',
+ address = {"externalSubAccountId":"sub_acc_1234567890","accountId":"acc_1234567890"},
reference_id = ''
)
else:
return PaymentInstructionsOneOf(
- type = 'EUROPEAN_SEPA',
- address = fireblocks.models.european_sepa_address.EuropeanSEPAAddress(
- account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
- iban = 'GB82WEST12345698765432',
- bic = '',
- bank_name = '',
- bank_branch = '',
- bank_address = '',
- purpose_code = '',
- tax_id = '', ),
+ type = 'INTERNAL_TRANSFER',
+ address = {"externalSubAccountId":"sub_acc_1234567890","accountId":"acc_1234567890"},
)
"""
diff --git a/test/test_payment_redirect.py b/test/test_payment_redirect.py
new file mode 100644
index 00000000..62b4dee0
--- /dev/null
+++ b/test/test_payment_redirect.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.payment_redirect import PaymentRedirect
+
+
+class TestPaymentRedirect(unittest.TestCase):
+ """PaymentRedirect unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> PaymentRedirect:
+ """Test PaymentRedirect
+ 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 `PaymentRedirect`
+ """
+ model = PaymentRedirect()
+ if include_optional:
+ return PaymentRedirect(
+ url = 'https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907',
+ expires_at = '2025-01-15T12:00:00Z'
+ )
+ else:
+ return PaymentRedirect(
+ )
+ """
+
+ def testPaymentRedirect(self):
+ """Test PaymentRedirect"""
+ # 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_pix_address.py b/test/test_pix_address.py
index 9c61361d..f745e225 100644
--- a/test/test_pix_address.py
+++ b/test/test_pix_address.py
@@ -39,15 +39,17 @@ def make_instance(self, include_optional) -> PixAddress:
return PixAddress(
account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
pix_key = '',
- key_type = 'cpf',
+ key_type = 'CPF',
bank_name = '',
- bank_code = ''
+ bank_code = '',
+ qr_code = 'qr_code_number',
+ expiration_date = '2025-01-15T12:00:00Z'
)
else:
return PixAddress(
account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
pix_key = '',
- key_type = 'cpf',
+ key_type = 'CPF',
)
"""
diff --git a/test/test_pix_destination.py b/test/test_pix_destination.py
index bd6762ee..0cd58521 100644
--- a/test/test_pix_destination.py
+++ b/test/test_pix_destination.py
@@ -38,12 +38,12 @@ def make_instance(self, include_optional) -> PixDestination:
if include_optional:
return PixDestination(
type = 'PIX',
- address = {"accountHolder":{"name":"Maria Silva Santos","city":"São Paulo","country":"BR","subdivision":"SP","address":"Rua das Flores, 123","postalCode":"01234-567"},"pixKey":"11987654321","keyType":"phone","bankName":"Banco do Brasil","bankCode":"001"}
+ address = {"accountHolder":{"name":"Maria Silva Santos","city":"São Paulo","country":"BR","subdivision":"SP","address":"Rua das Flores, 123","postalCode":"01234-567"},"pixKey":"11987654321","keyType":"phone","bankName":"Banco do Brasil","bankCode":"001","qrCode":"qr_code_number","expirationDate":"2025-01-15T12:00:00Z"}
)
else:
return PixDestination(
type = 'PIX',
- address = {"accountHolder":{"name":"Maria Silva Santos","city":"São Paulo","country":"BR","subdivision":"SP","address":"Rua das Flores, 123","postalCode":"01234-567"},"pixKey":"11987654321","keyType":"phone","bankName":"Banco do Brasil","bankCode":"001"},
+ address = {"accountHolder":{"name":"Maria Silva Santos","city":"São Paulo","country":"BR","subdivision":"SP","address":"Rua das Flores, 123","postalCode":"01234-567"},"pixKey":"11987654321","keyType":"phone","bankName":"Banco do Brasil","bankCode":"001","qrCode":"qr_code_number","expirationDate":"2025-01-15T12:00:00Z"},
)
"""
diff --git a/test/test_recipient_handle.py b/test/test_recipient_handle.py
new file mode 100644
index 00000000..d55b339a
--- /dev/null
+++ b/test/test_recipient_handle.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.recipient_handle import RecipientHandle
+
+
+class TestRecipientHandle(unittest.TestCase):
+ """RecipientHandle unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> RecipientHandle:
+ """Test RecipientHandle
+ 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 `RecipientHandle`
+ """
+ model = RecipientHandle()
+ if include_optional:
+ return RecipientHandle(
+ type = 'EMAIL',
+ value = 'john.smith@email.com'
+ )
+ else:
+ return RecipientHandle(
+ type = 'EMAIL',
+ value = 'john.smith@email.com',
+ )
+ """
+
+ def testRecipientHandle(self):
+ """Test RecipientHandle"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_remove_collateral_request_body.py b/test/test_remove_collateral_request_body.py
index f5e3d78c..cff8bee7 100644
--- a/test/test_remove_collateral_request_body.py
+++ b/test/test_remove_collateral_request_body.py
@@ -77,7 +77,7 @@ def make_instance(self, include_optional) -> RemoveCollateralRequestBody:
gas_price = null,
network_fee = null,
replace_tx_by_hash = '00000000-0000-0000-0000-000000000000',
- extra_parameters = fireblocks.models.extra_parameters.extraParameters(),
+ extra_parameters = { },
customer_ref_id = 'abcdef',
travel_rule_message = fireblocks.models.travel_rule_create_transaction_request.TravelRuleCreateTransactionRequest(
originator_vas_pdid = 'did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2',
diff --git a/test/test_staking_api.py b/test/test_staking_api.py
index 5096d31e..a50c4109 100644
--- a/test/test_staking_api.py
+++ b/test/test_staking_api.py
@@ -41,6 +41,13 @@ def test_claim_rewards(self) -> None:
"""
pass
+ def test_consolidate(self) -> None:
+ """Test case for consolidate
+
+ Consolidate staking positions (ETH validator consolidation)
+ """
+ pass
+
def test_get_all_delegations(self) -> None:
"""Test case for get_all_delegations
diff --git a/test/test_transaction_request.py b/test/test_transaction_request.py
index 00c61b19..7396327d 100644
--- a/test/test_transaction_request.py
+++ b/test/test_transaction_request.py
@@ -87,7 +87,7 @@ def make_instance(self, include_optional) -> TransactionRequest:
gas_price = None,
network_fee = None,
replace_tx_by_hash = '00000000-0000-0000-0000-000000000000',
- extra_parameters = None,
+ extra_parameters = { },
customer_ref_id = 'abcdef',
travel_rule_message = fireblocks.models.travel_rule_create_transaction_request.TravelRuleCreateTransactionRequest(
originator_vas_pdid = 'did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2',
diff --git a/test/test_transaction_response.py b/test/test_transaction_response.py
index 68082a03..5578fb18 100644
--- a/test/test_transaction_response.py
+++ b/test/test_transaction_response.py
@@ -299,7 +299,7 @@ def make_instance(self, include_optional) -> TransactionResponse:
gas_limit = '21000',
blockchain_index = '1.1.1',
paid_rent = '0.00203928',
- extra_parameters = None,
+ extra_parameters = { },
signed_messages = [
fireblocks.models.signed_message.SignedMessage(
content = '',
diff --git a/test/test_workspace.py b/test/test_workspace.py
new file mode 100644
index 00000000..08909461
--- /dev/null
+++ b/test/test_workspace.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.workspace import Workspace
+
+
+class TestWorkspace(unittest.TestCase):
+ """Workspace unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> Workspace:
+ """Test Workspace
+ 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 `Workspace`
+ """
+ model = Workspace()
+ if include_optional:
+ return Workspace(
+ id = '123e4567-e89b-12d3-a456-426614174000',
+ name = 'My Workspace'
+ )
+ else:
+ return Workspace(
+ id = '123e4567-e89b-12d3-a456-426614174000',
+ name = 'My Workspace',
+ )
+ """
+
+ def testWorkspace(self):
+ """Test Workspace"""
+ # 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_external_account_local_bank_africa_type.py b/test/test_workspace_api.py
similarity index 59%
rename from test/test_external_account_local_bank_africa_type.py
rename to test/test_workspace_api.py
index d0aa5504..77f6502f 100644
--- a/test/test_external_account_local_bank_africa_type.py
+++ b/test/test_workspace_api.py
@@ -15,23 +15,24 @@
import unittest
-from fireblocks.models.external_account_local_bank_africa_type import (
- ExternalAccountLocalBankAfricaType,
-)
+from fireblocks.api.workspace_api import WorkspaceApi
-class TestExternalAccountLocalBankAfricaType(unittest.TestCase):
- """ExternalAccountLocalBankAfricaType unit test stubs"""
+class TestWorkspaceApi(unittest.TestCase):
+ """WorkspaceApi unit test stubs"""
- def setUp(self):
- pass
+ def setUp(self) -> None:
+ self.api = WorkspaceApi()
- def tearDown(self):
+ def tearDown(self) -> None:
pass
- def testExternalAccountLocalBankAfricaType(self):
- """Test ExternalAccountLocalBankAfricaType"""
- # inst = ExternalAccountLocalBankAfricaType()
+ def test_get_workspace(self) -> None:
+ """Test case for get_workspace
+
+ Get workspace
+ """
+ pass
if __name__ == "__main__":