diff --git a/blockfrost/api/cardano/transactions.py b/blockfrost/api/cardano/transactions.py index 0711824..d509ad2 100644 --- a/blockfrost/api/cardano/transactions.py +++ b/blockfrost/api/cardano/transactions.py @@ -244,6 +244,27 @@ def transaction_redeemers(self, hash: str, **kwargs): headers=self.default_headers ) +@list_request_wrapper +def transaction_required_signers(self, hash: str, **kwargs): + """ + Obtain the transaction required signers (extra transaction witnesses). + + https://docs.blockfrost.io/#tag/Cardano-Transactions/paths/~1txs~1{hash}~required_signers/get + + :param hash: Hash of the requested transaction. + :type hash: str + :param return_type: Optional. "object", "json" or "pandas". Default: "object". + :type return_type: str + :returns A list of objects. + :rtype [Namespace] + :raises ApiError: If API fails + :raises Exception: If the API response is somehow malformed. + """ + return requests.get( + url=f"{self.url}/txs/{hash}/required_signers", + headers=self.default_headers + ) + @request_wrapper def transaction_submit(self, file_path: str, **kwargs): diff --git a/tests/test_cardano_transactions.py b/tests/test_cardano_transactions.py index 5113e0b..535fa42 100644 --- a/tests/test_cardano_transactions.py +++ b/tests/test_cardano_transactions.py @@ -361,6 +361,28 @@ def test_integration_transaction_redeemers(): assert api.transaction_redeemers(hash=hash) == [] +def test_transaction_required_signers(requests_mock): + api = BlockFrostApi() + mock_data = [ + { + { + "witness_hash": 'db7685e2d763133630e1a4afdefc5752d4b1c9be6c102e71242fb06f', + }, + } + ] + requests_mock.get(f"{api.url}/txs/{hash}/required_signers", json=mock_data) + assert api.transaction_required_signers( + hash=hash) == convert_json_to_object(mock_data) + + +def test_integration_transaction_required_signers(): + if os.getenv('BLOCKFROST_PROJECT_ID_MAINNET'): + api = BlockFrostApi(project_id=os.getenv( + 'BLOCKFROST_PROJECT_ID_MAINNET')) + assert api.transaction_required_signers(hash="b024ad35c6309a71a8e613d8bfea2a8185d81eda379ca9128877adefcde1c515") == [ + {"witness_hash": 'db7685e2d763133630e1a4afdefc5752d4b1c9be6c102e71242fb06f'}] + + def test_transaction_submit(requests_mock): api = BlockFrostApi() mock_data = hash