-
Notifications
You must be signed in to change notification settings - Fork 22
Bulk importing actions
To bulk import actions, you can use the Bulk Import Actions
action in the Advanced
category:
You can use either a JSON file or a CSV file. CSV files are easier to use but only support some of the actions, whereas JSON files support all actions.
The JSON file (with extension .json
) must be formatted with one top-level actions
key, which is an array of actions, like this:
{
"actions": [
// INSERT ACTIONS HERE
]
}
An action looks like this:
{
"key": "<ACTION KEY>",
"data": {
// INSERT ACTION DATA HERE
}
}
The CSV file (with extension .csv
) must have a header with an ACTION
column and columns for each key in the data
object of an action. Only actions with flat data objects (i.e. no nested objects or arrays) are supported.
A CSV that imports a bunch of Spend actions would look like this:
ACTION,to,amount,denom
spend,junoAddress,5,ujuno
spend,anotherJunoAddress,5,ujuno
spend,junoAddress,1,ibc/EAC38D55372F38F1AFD68DF7FE9EF762DCF69F26520643CF3F9D292A738D8034
The action keys can be found in @dao-dao/types/actions.ts
in the ActionKey
enum. For example:
spend
mintNft
execute
mint
The key and data format for an action are defined in its README.md
, and the actions can be found in the following places:
-
@dao-dao/stateful/actions/core
— common actions to all DAOs. -
@dao-dao/stateful/voting-module-adapter/adapters/*/actions
— each voting module adapter may contain specific actions (for example: member-based DAOs include a Manage Members action). -
@dao-dao/stateful/proposal-module-adapter/adapters/*/common/actions
— each proposal module adapter may contain specific actions (for example: single choice proposals have a different Update Proposal Submission Config action from multiple choice proposals). -
@dao-dao/stateful/widgets/widgets/*/actions
— each widget may contain specific actions (for example: the vesting payments widget adds an action to manage vesting payments).
Here are some common ones:
For sending money from the treasury.
{
"to": "<RECIPIENT ADDRESS>",
"amount": "<TOKEN AMOUNT>",
"denom": "<TOKEN DENOM>"
}
For minting an NFT in a collection the DAO controls.
{
"contractChosen": true,
"collectionAddress": "<NFT COLLECTION ADDRESS>",
"mintMsg": {
"owner": "<RECIPIENT ADDRESS>",
"token_id": "<UNIQUE TOKEN ID>",
"token_uri": "<JSON METADATA URL>"
}
}
For minting governance tokens in a token-based DAO.
{
"to": "<RECIPIENT ADDRESS>",
"amount": "<TOKEN AMOUNT>"
}