# URI JSON Schema

To display off-chain metadata of SPL tokens, the on-chain struct needs to contain a `uri` as described above, allowing Solflare to find it.&#x20;

Solflare uses the JSON standard as described in the [Metaplex Developer Guide](https://docs.metaplex.com/).&#x20;

Solflare also supports additional optional fields, such as the `attributes` field, as described in the OpenSea NFT Standard.&#x20;

You can use the file below as a reference.

#### JSON Structure <a href="#json-structure" id="json-structure"></a>

```javascript
{
  "name": "Solflare X NFT",
  "symbol": "",
  "description": "Celebratory Solflare NFT for the Solflare X launch",
  "seller_fee_basis_points": 0,
  "image": "https://www.arweave.net/abcd5678?ext=png",
  "animation_url": "https://www.arweave.net/efgh1234?ext=mp4",
  "external_url": "https://solflare.com",
  "attributes": [
    {
      "trait_type": "web",
      "value": "yes"
    },
    {
      "trait_type": "mobile",
      "value": "yes"
   },
   {
      "trait_type": "extension",
      "value": "yes"
    }
  ],
  "collection": {
     "name": "Solflare X NFT",
     "family": "Solflare" 
  },
  "properties": {
    "files": [
      {
        "uri": "https://www.arweave.net/abcd5678?ext=png",
        "type": "image/png"
      },
      {
        "uri": "https://watch.videodelivery.net/9876jkl",
        "type": "unknown",
        "cdn": true
      },
      {
        "uri": "https://www.arweave.net/efgh1234?ext=mp4",
        "type": "video/mp4"
      }
    ],
    "category": "video",
    "creators": [
      {
        "address": "SOLFLR15asd9d21325bsadythp547912501b",
        "share": 100
      }
    ]
  }
}
```

For the fields that match the on-chain metadata, on-chain information has priority.

* `description` - Human readable description of the asset.
* `image` - URL to the image of the asset. PNG, GIF, and JPG file formats are supported. You may use the `?ext={file_extension}` query to provide information on the file type.
* `animation_url` - URL to a multi-media attachment of the asset. The supported file formats are MP4 and MOV for video, MP3, FLAC, and WAV for audio, and GLB for AR/3D assets. You may use the `?ext={file_extension}` query to provide information on the file type.
* `external_url` - URL to an external application or website where users can also view the asset.
* `properties.category` - Supported categories:
  * `"image"` - PNG, GIF, JPG
  * `"video"` - MP4, MOV
  * `"audio"` - MP3, FLAC, WAV
  * `"vr"` - 3D models; GLB, GLTF
* `properties.files` - Object array, where an object should contain the `uri` and `type` of the file that is part of the asset. The type should match the file extension. The array will also include files specified in `image` and `animation_url` fields, and any other that is associated with the asset.\
  You may use the `?ext={file_extension}` query to provide information on the file type.
* `attributes` - Object array, where an object should contain `trait_type` and `value` fields. `value` can be a string or a number.
