Get details for all Web3 Actions
Retrieve the configuration details for all Web3 Actions created in a specific project.
Authorizations
An API key is a token that a client provides when making API calls. The key can be sent as a request header:
curl 'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate' \
-H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}' \
...
Learn how to generate API access tokens at Tenderly Docs.
Path Parameters
Account slug of the user
Project slug of the account
Response
A successful response.
ID of the Web3 Action.
"4cc3ee95-6bc5-4c85-83d0-26d4b89d5c25"
ID of the project where Web3 Action is created.
"dfdc391a-a15d-4590-9aef-8691259c7df4"
Web3 Action name.
"periodic-cron"
Web3 Action description.
"Triggers every 1 hour"
Status of the Web3 Action.
DEPLOYED, PUBLISHED "DEPLOYED"
Flag showing if Web3 Action is stopped or not.
false
Flag showing if Web3 Action is editable or not.
true
When Web3 Action is created.
"2023-12-14T16:20:36.078679Z"
{
"id": "65f4e0e8-4b67-4f0c-815f-1a08cd418f1a",
"index": 1,
"actionId": "4cc3ee95-6bc5-4c85-83d0-26d4b89d5c25",
"parentActionId": "",
"runtime": "V2",
"function": "implementation:actionFn",
"triggerType": "PERIODIC",
"trigger": {
"type": "periodic",
"periodic": { "cron": "0 * * * *", "interval": "1h" }
},
"commitish": null,
"source": "// Do not change function name.\nconst actionFn = async (context, periodicEvent) => {\n console.log(periodicEvent)\n\n // To access project's secret\n // let secret = await context.secrets.get('MY-SECRET')\n\n // To access project's storage\n // let value = await context.storage.getStr('MY-KEY')\n // await context.storage.putStr('MY-KEY', 'MY-VALUE')\n\n // Your logic goes here :)\n}\n// Do not change this.\nmodule.exports = { actionFn }",
"createdAt": "2023-12-14T16:20:36.078679Z",
"deployRequested": false,
"deployError": null,
"invocationType": "SYNC"
}
Shows delivery channels for given Web3 Action.
[]
[
{
"id": "4cc3ee95-6bc5-4c85-83d0-26d4b89d5c25",
"projectId": "dfdc391a-a15d-4590-9aef-8691259c7df4",
"name": "periodic-cron",
"description": "every 1 hour",
"status": "DEPLOYED",
"stopped": false,
"version": {
"id": "65f4e0e8-4b67-4f0c-815f-1a08cd418f1a",
"index": 1,
"actionId": "4cc3ee95-6bc5-4c85-83d0-26d4b89d5c25",
"parentActionId": "",
"runtime": "V2",
"function": "implementation:actionFn",
"triggerType": "PERIODIC",
"trigger": {
"type": "periodic",
"periodic": { "cron": "0 * * * *", "interval": "1h" }
},
"commitish": null,
"source": "// Do not change function name.\nconst actionFn = async (context, periodicEvent) => {\n console.log(periodicEvent)\n\n // To access project's secret\n // let secret = await context.secrets.get('MY-SECRET')\n\n // To access project's storage\n // let value = await context.storage.getStr('MY-KEY')\n // await context.storage.putStr('MY-KEY', 'MY-VALUE')\n\n // Your logic goes here :)\n}\n// Do not change this.\nmodule.exports = { actionFn }",
"createdAt": "2023-12-14T16:20:36.078679Z",
"deployRequested": false,
"deployError": null,
"invocationType": "SYNC"
},
"editable": true,
"createdAt": "2023-12-14T16:20:36.078679Z",
"deliveryChannels": null
},
{
"id": "74e9f7d8-4a53-425c-912b-8d5cef87cef1",
"projectId": "dfdc391a-a15d-4590-9aef-8691259c7df4",
"name": "mainnet-block",
"description": "Trigger on every 1000th block",
"status": "DEPLOYED",
"stopped": true,
"version": {
"id": "ac015512-fcca-4a94-b782-e1fb584d8aef",
"index": 1,
"actionId": "74e9f7d8-4a53-425c-912b-8d5cef87cef1",
"parentActionId": "",
"runtime": "V2",
"function": "implementation:actionFn",
"triggerType": "BLOCK",
"trigger": {
"type": "block",
"block": { "network": ["1"], "blocks": 1000 }
},
"commitish": null,
"source": "// Do not change function name.\nconst actionFn = async (context, blockEvent) => {\n console.log(blockEvent)\n\n // To access project's secret\n // let secret = await context.secrets.get('MY-SECRET')\n\n // To access project's storage\n // let value = await context.storage.getStr('MY-KEY')\n // await context.storage.putStr('MY-KEY', 'MY-VALUE')\n\n // Your logic goes here :)\n}\n// Do not change this.\nmodule.exports = { actionFn }",
"createdAt": "2023-12-13T00:37:13.821647Z",
"deployRequested": false,
"deployError": null,
"invocationType": "ASYNC"
},
"editable": true,
"createdAt": "2023-12-13T00:37:13.821647Z",
"deliveryChannels": null
},
{
"id": "be048c73-41c3-4fcd-b0c6-d286af7155fe",
"projectId": "cbb49e29-24ad-4cf9-8b2d-1f34a3019582",
"name": "instadapp-implementation",
"description": "Track these 3 proposal events: add, remove & setDefault.",
"status": "DEPLOYED",
"stopped": false,
"version": {
"id": "34655755-771f-4da7-989e-ec2b27e8f13b",
"index": 3,
"actionId": "be048c73-41c3-4fcd-b0c6-d286af7155fe",
"parentActionId": "",
"runtime": "V1",
"function": "instadappImplementation:implementationFn",
"triggerType": "TRANSACTION",
"trigger": {
"type": "transaction",
"transaction": {
"status": ["MINED"],
"filter": {
"any": [
{
"network": ["1"],
"status": [],
"value": [],
"gasLimit": [],
"gasUsed": [],
"fee": [],
"from": [],
"to": [],
"function": [],
"eventEmitted": [
{
"contract": {
"address": "0xcba828153d3a85b30b5b912e1f2dacac5816ae9d",
"invocationType": "ANY"
},
"id": null,
"name": "LogSetDefaultImplementation"
},
{
"contract": {
"address": "0xcba828153d3a85b30b5b912e1f2dacac5816ae9d",
"invocationType": "ANY"
},
"id": null,
"name": "LogAddImplementation"
},
{
"contract": {
"address": "0xcba828153d3a85b30b5b912e1f2dacac5816ae9d",
"invocationType": "ANY"
},
"id": null,
"name": "LogRemoveImplementation"
}
],
"logEmmitted": []
}
],
"and": null
}
}
},
"commitish": null,
"source": "import {\n ActionFn,\n Context,\n Event,\n TransactionEvent,\n} from '@tenderly/actions';\n\n// TEST: Try manual trigger with this tx hash on Mainnet: 0x3bdf5a48174f7f8f7bfb2f43dbe399c47405bba1cea3480aa0c199270f262f7e\nexport const implementationFn: ActionFn = async (context: Context, event: Event) => {\n let txEvent = event as TransactionEvent;\n console.log('InstaDapp Implementation Event is detected');\n // Shorten logs because it's too large to print\n console.log({ ...txEvent, logs: txEvent.logs.splice(0, 5) });\n};\n",
"createdAt": "2022-10-18T12:37:10.392964Z",
"deployRequested": false,
"deployError": null,
"invocationType": "SYNC"
},
"editable": false,
"createdAt": "2022-10-18T12:24:51.187849Z",
"deliveryChannels": null
},
{
"id": "785e140d-3a15-45c0-90a7-8c54bb41e562",
"projectId": "cbb49e29-24ad-4cf9-8b2d-1f34a3019582",
"name": "instadapp-governance-event",
"description": "Track these 3 events: executed, queued & cancelled.",
"status": "DEPLOYED",
"stopped": false,
"version": {
"id": "9d8eaac3-85cc-4c48-a557-47c36b80dd52",
"index": 3,
"actionId": "785e140d-3a15-45c0-90a7-8c54bb41e562",
"parentActionId": "",
"runtime": "V1",
"function": "instadappGovernance:governanceFn",
"triggerType": "TRANSACTION",
"trigger": {
"type": "transaction",
"transaction": {
"status": ["MINED"],
"filter": {
"any": [
{
"network": ["1"],
"status": [],
"value": [],
"gasLimit": [],
"gasUsed": [],
"fee": [],
"from": [],
"to": [],
"function": [],
"eventEmitted": [
{
"contract": {
"address": "0x0204cd037b2ec03605cfdfe482d8e257c765fa1b",
"invocationType": "ANY"
},
"id": null,
"name": "ProposalCanceled"
},
{
"contract": {
"address": "0x0204cd037b2ec03605cfdfe482d8e257c765fa1b",
"invocationType": "ANY"
},
"id": null,
"name": "ProposalQueued"
},
{
"contract": {
"address": "0x0204cd037b2ec03605cfdfe482d8e257c765fa1b",
"invocationType": "ANY"
},
"id": null,
"name": "ProposalExecuted"
}
],
"logEmmitted": []
}
],
"and": null
}
}
},
"commitish": null,
"source": "import {\n ActionFn,\n Context,\n Event,\n TransactionEvent,\n} from '@tenderly/actions';\n\n// TEST: Try manual trigger with this tx hash on Mainnet: 0x338fda662797c4750d6c81bc261380ca4782cf8112227f53962f4fb60d13bbcb\nexport const governanceFn: ActionFn = async (context: Context, event: Event) => {\n let txEvent = event as TransactionEvent;\n console.log('InstaDapp Governance Event is detected');\n // Shorten logs because it's too large to print\n console.log({ ...txEvent, logs: txEvent.logs.splice(0, 2) });\n};\n",
"createdAt": "2022-10-18T12:37:10.370654Z",
"deployRequested": false,
"deployError": null,
"invocationType": "SYNC"
},
"editable": false,
"createdAt": "2022-10-18T12:24:51.154171Z",
"deliveryChannels": null
},
{
"id": "02a83586-aabb-45c6-9ea5-23e089879b22",
"projectId": "cbb49e29-24ad-4cf9-8b2d-1f34a3019582",
"name": "blacklisted-addresses",
"description": "This Web3 Action detects transactions that involve blacklisted addresses.",
"status": "DEPLOYED",
"stopped": false,
"version": {
"id": "900f7a5f-cb71-4f46-9e82-51fded6d8691",
"index": 3,
"actionId": "02a83586-aabb-45c6-9ea5-23e089879b22",
"parentActionId": "",
"runtime": "V1",
"function": "blacklistedAddresses:blacklistedAddressFn",
"triggerType": "TRANSACTION",
"trigger": {
"type": "transaction",
"transaction": {
"status": ["MINED"],
"filter": {
"any": [
{
"network": ["1"],
"status": [],
"value": [],
"gasLimit": [],
"gasUsed": [],
"fee": [],
"from": [
{
"exact": "0xf38b4de019aca232711d7b7abae59adc93efc3e9"
},
{
"exact": "0x6B175474E89094C44Da98b954EedeAC495271d0F"
},
{
"exact": "0xa40dfee99e1c85dc97fdc594b16a460717838703"
}
],
"to": [],
"function": [],
"eventEmitted": [],
"logEmmitted": []
}
],
"and": null
}
}
},
"commitish": null,
"source": "import {\n ActionFn,\n Context,\n Event,\n TransactionEvent,\n} from '@tenderly/actions';\n\n// TEST: Try manual trigger with this tx hash on Mainnet with write storage type: 0x7295b1bdfc6b277c10a4b8b6002183c005f4512a4d1537a0a81b0ff3eb6fe6c9\nexport const blacklistedAddressFn: ActionFn = async (context: Context, event: Event) => {\n const blacklistedAddresses = [\n '0xf38b4de019aca232711d7b7abae59adc93efc3e9',\n '0x6B175474E89094C44Da98b954EedeAC495271d0F',\n '0xa40dfee99e1c85dc97fdc594b16a460717838703',\n ];\n let txEvent = event as TransactionEvent;\n console.log('Blacklisted Addresses:', blacklistedAddresses);\n console.log(`Blacklisted Address: ${txEvent.from}`);\n console.log(`Tx Hash: ${txEvent.hash}`);\n console.log('Contains:', blacklistedAddresses.includes(txEvent.from));\n await context.storage.putStr(`Blacklisted Address: ${txEvent.from}`, txEvent.hash);\n};\n",
"createdAt": "2022-10-18T12:37:10.333383Z",
"deployRequested": false,
"deployError": null,
"invocationType": "SYNC"
},
"editable": false,
"createdAt": "2022-10-18T12:24:51.082156Z",
"deliveryChannels": null
}
]