> ## Documentation Index
> Fetch the complete documentation index at: https://docs.evav.org/llms.txt
> Use this file to discover all available pages before exploring further.

> Update an item

# Update

### List an item

Updating an item will upload the new metadata file to IPFS, and update item attributes

Royalties are listed in basis points (BPS). 100 BPS is equal to 1%. Royalties will be paid as soon as an item has been shipped.

<CodeGroup>
  ```typescript example theme={null}
  import { mkt } from './config'

  const listing = await mkt.update({
    id: '<ITEM_MARKETPLACE_ID>',

    name: 'My Item',
    description: 'This is my item',
    category: 'Clothing',
    color: 'blue',
    tags: ['sale']
    brand: 'brand',
    nftType: 'physical'
    status: 'listed',

    royalty: { 
      royaltyAmount: 300, // 3% royalty
      receiver: '0x123' 
    },
    price: 100, // $1
    quantityDiff: 1,

    images: ['image_url', File],
    primaryImageIndex: 0,
  })
  ```

  ```typescript definition theme={null}
  import type { UpdateItemInput } from './interface'

  update(input: UpdateItemInput): void
  ```

  ```typescript interface.ts theme={null}
  export interface UpdateMetadataInput {
    id: string // item marketplace id

    name: string
    description: string
    category: string
    color: string
    tags: string[]
    brand?: string
    nftType: NftType
    status: ItemStatus

    royalty: Partial<RoyaltyConfig>,
    price: number | null, // in cents
    quantityDiff: number, // positive if more items should be minted, negative if some items should be burned

    images: (string | File)[] // urls or Files
    primaryImageIndex: number,
    video?: string
  }

  export interface RoyaltyConfig {
    receiver: Address
    royaltyAmount: bigint
  }

  export type NftType = 'physical' | 'digital'
  export type ItemStatus = 'listed' | 'delist'
  ```

  ```typescript config.ts (dynamic) theme={null}
  import { Marketplace } from '@evav/marketplace'
  import { useDynamicContext, getAuthToken } from '@dynamic-labs/sdk-react-core'

  const { primaryWallet } = useDynamicContext()
  const walletClient = await primaryWallet?.connector?.getWalletClient()
  const publicClient = await primaryWallet?.connector?.getPublicClient()
  const [account] = await walletConnector.getConnectedAccounts()

  // viem is required for the evav sdk
  export const mkt = new Marketplace({
    walletClient,
    publicClient,
    account: account as Address,
    // Optional. If not provided, SIWE will be used instead, and you will be asked to sign a message with your wallet
    accessToken: getAuthToken(),
  })
  ```

  ```typescript config.ts (privy) theme={null}
  import { Marketplace } from '@evav/marketplace'
  import { useWallets, usePrivy } from 'privy'
  import { createWalletClient, createPublicClient, custom } from 'viem'
  import { base } from 'viem/chains'

  const { wallets } = useWallets();
  const { user } = usePrivy();

  const wallet = wallets[0]; // Replace this with your desired wallet
  const provider = await wallet.getEthereumProvider()

  const walletClient = createWalletClient({
    chain: base,
    transport: custom(provider),
  })

  const publicClient = createPublicClient({
    chain: base,
    transport: custom(provider),
  })

  // viem is required for the evav sdk
  export const mkt = new Marketplace({
    walletClient,
    publicClient,
    account: user.linked_accounts[0].address // Replace with your desired account
  })
  ```
</CodeGroup>
