Сreates a token update datum and places it in the mempool.
## Request Structure
`JSON object:`
```JSON
{
"method": "token_update",
"subcommand": ["token_update"],
"arguments": {
"net": "network_name",
"chain": "chain_name",
"token": "existing_token_ticker",
"type": "CF20 | private",
"total_supply_change": "value",
"certs": "name_certs",
"flag_set": "flag",
"flag_unset": "flag",
"total_signs_valid": "value",
"description": "value",
"tx_receiver_allowed": "value",
"tx_receiver_blocked": "value",
"tx_sender_allowed": "value",
"tx_sender_blocked": "value",
"add_cert": "name_certs",
"remove_certs": "pkeys_hash"
},
"id": "1"
}
```
`Parameters:`
**`net (network_name)`** - name of the Cellframe Network. The list of networks can be found in the `<Config_dir> \ etc \ network` folder or received using - [[Node Command - NET LIST]]
**`chain`** - the name of chain (`main` or `zerochain`) `optional`
**`token`** - ticker (name) of the token
**`type`** - type of the token (CF20 or private, `CF20` by default)
**`total_supply_change`** - changes total supply, specify “INF” to set unlimited total supply `optional`
**`certs`** - list of certificates which were used to sign token
**`lag_set`** - list of flags are being set `optional`
**`flag_unset`** - list of flags are being unset `optional`
**`total_signs_valid`** - sets the minimum amount of valid signatures `optional`
**`description`** - token description written `optional`
**`tx_receiver_allowed`** - adds specified wallet address to the list of allowed receivers `optional`
**`tx_receiver_blocked`** - adds specified wallet address to the list of blocked receivers `optional`
**`tx_sender_allowed`** - adds specified wallet address to the list of allowed senders `optional`
**`tx_sender_blocked`** - adds specified wallet address to the list of blocked senders `optional`
**`add_cert`** - adds certificates to the certificates list of the token `optional`
**`remove_certs`** - removes certificates from the certificates list using theirs public key hash `optional`
`Available flags:`
```actionscript
ALL_BLOCKED: Blocks all permissions.
ALL_ALLOWED: Allows all permissions unless they are blocked. Be careful with this mode.
ALL_FROZEN: Temporarily freezes all permissions
ALL_UNFROZEN: Unfreezes all frozen permissions
STATIC_ALL: Blocks manipulations with a token after declaration. Tokens are declared statically.
STATIC_FLAGS: Blocks manipulations with token flags after declaration.
STATIC_PERMISSIONS_ALL: Blocks all manipulations with permissions list after declaration.
STATIC_PERMISSIONS_DATUM_TYPE: Blocks all manipulations with datum permissions list after declaration.
STATIC_PERMISSIONS_TX_SENDER: Blocks all manipulations with transaction senders permissions list after declaration.
STATIC_PERMISSIONS_TX_RECEIVER: Blocks all manipulations with transaction receivers permissions list after declaration.
```
### Curl Example
`Request:`
```actionscript
curl --unix-socket /opt/cellframe-node/var/run/node_cli -X POST http://localhost/connect -d '
{
"method": "token_update",
"subcommand": ["token_update"],
"arguments": {
"net": "riemann",
"chain": "zerochain",
"token": "CRINGE",
"type": "CF20",
"total_supply_change": "15000e+18",
"certs": "riemann.bridge.pvt.0",
"flag_set": "STATIC_FLAGS",
"description": "Updated: total supply increased on 5000 and the flags were set as STATIC"
},
"id": "1"
}'
```
`Response:`
```json
{
"type": 2,
"result": [
{
"errors": [
{
"code": 0,
"message": "Datum 0xF48B60D3C829D1F6280781862B9EB87ED36729E6AD75D35604053A3D0D81A4AB with token update for ticker CRINGE is placed in datum pool"
}
]
}
],
"id": 1
}
```