> For the complete documentation index, see [llms.txt](https://jpg-protocol.gitbook.io/jpg-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jpg-protocol.gitbook.io/jpg-docs/exhibitions.md).

# Exhibitions

### Exhibitions

All exhibitions published on JPG will be automatically processed and uploaded to Arweave for permanent, decentralized storage on the blockweave. This ensures that each curation can be recognized as a part of the contextual data layer for the NFT ecosystem in perpetuity. Only published exhibitions will be uploaded for permanent storage. Drafts will remain private and in our database. Here is the data that will be uploaded for published exhibitions to ease composability across platforms:&#x20;

<table><thead><tr><th>Field</th><th width="165.33333333333331">Type</th><th>Description</th></tr></thead><tbody><tr><td>exhibition-name</td><td>string</td><td>The name of the exhibition at time of publishing.</td></tr><tr><td>source</td><td>string</td><td>The link to the exhibition on jpg of the form: https://jpg.space/{username}/exhibition/{exhibition-name}</td></tr><tr><td>curator</td><td>string</td><td>The curator's Ethereum address.</td></tr><tr><td>username</td><td>string</td><td>The curator's username on JPG</td></tr><tr><td>collaborators</td><td>Array of addresses</td><td>The collaborators on this exhibition. </td></tr><tr><td>assets</td><td>Array of Assets</td><td>See below.</td></tr><tr><td>text_data</td><td>Array of TextObjects</td><td>See below. May also be empty.</td></tr></tbody></table>

#### Assets and TextObjects

Asset Object:

```
{
  "type": "NFT"
  "data":
      "contract": <NFT Contract>
      "tokenId": <NFT TokenID>
      "chainId": <Will be 1 for now as we only support Ethereum NFTs>
      "note": <Curator Note (optional)>
      "right-clicks": <Number of times this asset has been Right-Clicked on JPG> 
}
```

Text Object:

```
{
  "title": <Section Title>
  "body": <Section Body>
  "assets": [
      {
        "contract": <NFT Contract>
        "tokenId": <NFT TokenID>
      },
      .
      .
      .
    ]
}
```

*IMPORTANT*: In some cases, there may not be a title or body for an index in the array of Text Objects, as there are edge cases where a new page in an exhibition does not begin with text. In these situations, there will simply be an asset array. Developers are urged to null-check all parameters before using any data in practice to avoid errors.&#x20;

### Exhibition Tags

Data on Arweave is typically indexed by tags. For exhibitions, one will be able to find the data by querying for the following tags:<br>

```
'Content-Type': 'application/json',
'App-Name': 'JPG-Protocol',
'Type': 'Exhibition',
'Exhibition-Name': <Exhibition Name>,
'Curator': <Ethereum Address>,
'Source': <link to jpg website>,
'Exhibition-Tag': <JPG Tags>,
```

We will be opening an API shortly to make querying for data easier, but one can use the Arweave GraphQL endpoints with this tag information to retrieve data programmatically for now. (<https://gql-guide.vercel.app/>).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://jpg-protocol.gitbook.io/jpg-docs/exhibitions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
