## Update
**Warning: These commands modify your NFT and are for advanced users. Use with caution.**
Update various aspects of an NFT.
See also **Set** commands for updatable values that cannot be reversed (e.g. set immutable).
### Update Data
Update the `Data` struct on a NFT from a JSON file.
#### Usage
```bash
metaboss update data --keypair <PATH_TO_KEYPAIR> --account <MINT_ACCOUNT> --new-data-file <PATH_TO_NEW_DATA_FILE>
```
The JSON file should include all the fields of the metadata `Data` struct and should match `creator` `verified` bools for existing creators. E.g. if your NFT was minted by the Metaplex Candy Machine program, and you wish to keep your candy machine as a verified creator _you must add the candy machine to your creators array with `verified` set to `true`_.
Note: The on-chain `Data` struct is *different* than the external metadata stored at the link in the `uri` field so make you understand the difference before running this command.
**Make sure you understand how the Metaplex Metadata `Data` struct works and how this command will affect your NFT. Always test on `devnet` before running on mainnet.**
```json
{
"name": "FerrisCrab #4",
"symbol": "FERRIS",
"uri": "https://arweave.net/N36gZYJ6PEH8OE11i0MppIbPG4VXKV4iuQw1zaq3rls",
"seller_fee_basis_points": 100,
"creators": [
{
"address": "<YOUR_CANDY_MACHINE_ID>",
"verified": true,
"share": 0
},
{
"address": "<KEYPAIR_CREATOR>",
"verified": true,
"share": 50
},
{
"address": "42NevAWA6A8m9prDvZRUYReQmhNC3NtSZQNFUppPJDRB",
"verified": false,
"share": 50
}
]
}
```
Outputs a TxId to the command line so you can check the result.
### Update Data All
Update the `Data` struct on a list of NFTs from JSON files.
#### Usage
```bash
metaboss update data-all --keypair <PATH_TO_KEYPAIR> --data-dir <PATH_TO_DATA_DIR>
```
Each JSON file in the data directory should include the mint account and all the fields of the metadata `Data` struct and should match `creator` `verified` bools for existing creators. E.g. if your NFT was minted by the Metaplex Candy Machine program, and you wish to keep your candy machine as a verified creator _you must add the candy machine to your creators array with `verified` set to `true`_.
Note: The on-chain `Data` struct is *different* than the external metadata stored at the link in the `uri` field so make you understand the difference before running this command.
**Make sure you understand how the Metaplex Metadata `Data` struct works and how this command will affect your NFT. Always test on `devnet` before running on mainnet.**
```json
{
"mint": "CQNKXw1rw2eWwi812Exk4cKUjKuomZ2156STGRyXd2Mp",
"name": "FerrisCrab #4",
"symbol": "FERRIS",
"uri": "https://arweave.net/N36gZYJ6PEH8OE11i0MppIbPG4VXKV4iuQw1zaq3rls",
"seller_fee_basis_points": 100,
"creators": [
{
"address": "<YOUR_CANDY_MACHINE_ID>",
"verified": true,
"share": 0
},
{
"address": "<KEYPAIR_CREATOR>",
"verified": true,
"share": 50
},
{
"address": "42NevAWA6A8m9prDvZRUYReQmhNC3NtSZQNFUppPJDRB",
"verified": false,
"share": 50
}
]}
```
One approach to using `update data-all` is you can get all the JSON files using the `metaboss decode mint -L <mint_list> --full` command, and then write a script to modify the specific fields you want to change.
The file output from `decode mint` when using the `--full` option provides the correct format that metaboss expects because it uses the same field names as what `update data-all` expects.
The extra fields will be ignored.
Outputs a TxId to the command line so you can check the result.
### Update Name
Update the on-chain name of a NFT, keeping the rest of the `Data` struct the same.
#### Usage
```bash
metaboss update name --keypair <PATH_TO_KEYPAIR> --account <MINT_ACCOUNT> --new-name <NEW_NAME>
```
### Update Symbol
Update the on-chain symbol of a NFT, keeping the rest of the `Data` struct the same.
#### Usage
```bash
metaboss update symbol --keypair <PATH_TO_KEYPAIR> --account <MINT_ACCOUNT> --new-symbol <NEW_SYMBOL>
```
### Update Symbol All
Update the on-chain symbol of a list of NFTs, keeping the rest of the `Data` struct the same.
#### Usage
```bash
metaboss update symbol-all --keypair <PATH_TO_KEYPAIR> -L <PATH_TO_LIST_MINT_ADDRESSES> --new-symbol <NEW_SYMBOL>
```
### Update Creators
Update the creators of a NFT, keeping the rest of the `Data` struct the same.
#### Usage
```bash
metaboss update creators -k <PATH_TO_KEYPAIR> -a <MINT_ACCOUNT> -n <CREATOR1:SHARE:VERIFIED,CREATOR2:SHARE:VERIFIED>
```
Creators should be a comma-delimited list of creator:share:verified. E.g.
Example:
```bash
metaboss update creators -k ~/.config/solana/devnet.json -a 4rxTT8pKeYFrFgNBgTspBWVEnMnsAZGwChkjRUtP4Xpi -n 42NevAWA6A8m9prDvZRUYReQmhNC3NtSZQNFUppPJDRB:70:false,AVdBTNhDqYgXGaaVkqiaUJ1Yqa61hMiFFaVRtqwzs5GZ:30:false
```
Using the `--append` flag will set the shares to 0 and append to the existing creators list, otherwise the creators are overwritten with the list you pass in.
### Update Creators All
Same as update creators but takes a mint list instead of a single account.
```bash
metaboss update creators-all -k ~/.config/solana/devnet.json -L mints.json -n 42NevAWA6A8m9prDvZRUYReQmhNC3NtSZQNFUppPJDRB:70:false,AVdBTNhDqYgXGaaVkqiaUJ1Yqa61hMiFFaVRtqwzs5GZ:30:false
```
### Update URI
Update the metadata URI, keeping the rest of the `Data` struct the same.
#### Usage
```bash
metaboss update uri --keypair <PATH_TO_KEYPAIR> --account <MINT_ACCOUNT> --new-uri <NEW_URI>
```
### Update URI All
Update the metadata URI for a list of mint accounts, keeping the rest of the `Data` struct the same.
#### Usage
```bash
metaboss update uri-all --keypair <PATH_TO_KEYPAIR> --new-uris-file <PATH_TO_JSON_FILE>
```
```json
[
{
"mint_account": "xZ43...",
"new_uri": "https://arweave.net/N36gZYJ6PEH8OE11i0MppIbPG4VXKV4iuQw1zaq3rls"
},
{
"mint_account": "71bk...",
"new_uri": "https://arweave.net/FPGAv1XnyZidnqquOdEbSY6_ES735ckcDTdaAtI7GFw"
}
]
```
### Update Seller Fee Basis Points
Update the seller fee basis points field on an NFT, keeping the rest of the `Data` struct the same.
#### Usage
```bash
metaboss update sfbp --keypair <PATH_TO_KEYPAIR> -a <MINT_ACCOUNT> -n <NEW_SELLER_FEE_BASIS_POINTS_VALUE>
```
### Update Seller Fee Basis Points All
Update the seller fee basis points field on a list of NFTs, keeping the rest of the `Data` struct the same.
#### Usage
```bash
metaboss update sfbp-all --keypair <PATH_TO_KEYPAIR> -L <PATH_TO_MINT_LIST.json> -n <NEW_SELLER_FEE_BASIS_POINTS_VALUE>
```
### Update Rule Set
Update a Metaplex pNFT's rule set pubkey.
```
USAGE:
metaboss update rule-set [OPTIONS] --mint <mint> --new-rule-set <new-rule-set>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-k, --keypair <keypair> Path to the creator's keypair file
-l, --log-level <log-level> Log level [default: off]
-a, --mint <mint> Mint account of token to transfer
-n, --new-rule-set <new-rule-set> New rule set pubkey
-r, --rpc <rpc> RPC endpoint url to override using the Solana config or the hard-coded default
-T, --timeout <timeout> Timeout to override default value of 90 seconds [default: 90]
```
#### Usage
```bash
metaboss update rule-set --mint <MINT_ADDRESS> --new-rule-set <NEW_RULE_SET_PUBKEY>
```
E.g.:
```bash
metaboss update rule-set --mint 2KGQLgypChErw3kKPqG26uyUjVtZj8QSJg2AUNR7BWdM -n D4YHFZPWASGpvBDJSUrPtqZqxTgTm7eL5rikBY9Y5dwf
```
### Update Rule Set All
Update the rule set of a batch of pNFTs.
```
USAGE:
metaboss update rule-set-all [OPTIONS] --new-rule-set <new-rule-set>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-c, --cache-file <cache-file> Cache file
-k, --keypair <keypair> Path to the creator's keypair file
-l, --log-level <log-level> Log level [default: off]
-L, --mint-list <mint-list> Path to the mint list file
-n, --new-rule-set <new-rule-set> New rule set pubkey
-R, --rate-limit <rate-limit> Maximum number of requests per second [default: 10]
--retries <retries> Maximum retries: retry failed items up to this many times [default: 0]
-r, --rpc <rpc> RPC endpoint url to override using the Solana config or the hard-coded default
-T, --timeout <timeout> Timeout to override default value of 90 seconds [default: 90]
```
#### Usage
```bash
metaboss update rule-set-all -L <MINT_LIST> -n <NEW_RULE_SET_ADDRESS>
```
E.g.:
```bash
metaboss update rule-set-all -L rule_set_mints.json -n 1CfDY5sYBnspaXvjnN3y9WRdaoD5v3HXrZDrWhjZZTN
```
### Update Clear Rule Set
Remove the rule set on a pNFT.
```
USAGE:
metaboss update clear-rule-set [OPTIONS] --mint <mint>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-k, --keypair <keypair> Path to the creator's keypair file
-l, --log-level <log-level> Log level [default: off]
-a, --mint <mint> Mint account of token to transfer
-r, --rpc <rpc> RPC endpoint url to override using the Solana config or the hard-coded default
-T, --timeout <timeout> Timeout to override default value of 90 seconds [default: 90]
```
#### Usage
```bash
metaboss update clear-rule-set --mint <MINT_ADDRESS>
```
E.g.:
```bash
metaboss update clear-rule-set --mint 2KGQLgypChErw3kKPqG26uyUjVtZj8QSJg2AUNR7BWdM
```
### Update Clear Rule Set All
Remove the rule set of a batch of pNFTs
```
USAGE:
metaboss update clear-rule-set-all [OPTIONS]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-c, --cache-file <cache-file> Cache file
-k, --keypair <keypair> Path to the creator's keypair file
-l, --log-level <log-level> Log level [default: off]
-L, --mint-list <mint-list> Path to the mint list file
-R, --rate-limit <rate-limit> Maximum number of requests per second [default: 10]
--retries <retries> Maximum retries: retry failed items up to this many times [default: 0]
-r, --rpc <rpc> RPC endpoint url to override using the Solana config or the hard-coded default
-T, --timeout <timeout> Timeout to override default value of 90 seconds [default: 90]
```
#### Usage
```bash
metaboss update clear-rule-set-all -L <MINT_LIST>
```
E.g.:
```bash
metaboss update rule-set-all -L rule_set_mints.json