# NFT Formatting

Each NFT is uniquely identified by its TokenID and Edition.

The TokenID is a `record`

```
TokenId {
    data1: u128,
    data2: u128,
}
```

Edition is a `scalar`&#x20;

The TokenId is purposely left very generic as to accommodate any 32 bytes to uniquely identify the item.

The TokenID when combined with the BaseURI forms the information necessary for Front End UIs (like the [Leo Wallet](https://leo.app)) to find the off-chain data associated with the NFT.

```
struct BaseURI {
    data0: u128,
    data1: u128,
    data2: u128,
    data3: u128
}
```

Currently only `https` urls are supported by the wallet.&#x20;

When you [Initialize](/admin/initialize.md) the collection, set the BaseURI to the root url path of your collection. For the Privacy Pride Testnet3 Collection it is: `aleo-public.s3.us-west-2.amazonaws.com/testnet3/`

When you [Add NFT](/admin/add-nft.md), add the relative path from your BaseURI as the url: `privacy-pride/1.json`\
\
This will enable the Front-End as well as the [Leo Wallet](https://leo.app) to find the json associated with your NFT at `https://` + BaseURI + TokenID

You can find the code used to [encode the strings to `u128`s here](https://github.com/demox-labs/art-factory/blob/main/src/lib/util.ts)

\
Although you are welcome to use whatever JSON structure you want for your own application, to work with the existing codebase and Leo Wallet. You should implement the following properties at a minimum:

```
{
  "name": string,
  "image": string,
  "attributes": [
    {
      "trait_type": string,
      "value": string
    }
  ],
  "mintNumber": 1,
  "collectionLink": string,
  "collectionName": string,
  "collectionDescription": string,
  "sourceLink": string
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://art.privacypride.com/nft-formatting.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
