# Collections

A collection is comprised of layers, tokens, and settings. A user may create several collections.

## Storage

### Tableland

The `Collections` table in Tableland has the following schema:

```json
{
    "id": integer (PK)
    "owner": text (FK)
    "tokens_table": text
    "layers_table": text
    "attributes_table": text
    "contract_address": text
    "name": text
    "symbol": text
    "description": text
    "image": text
    "external_link": text
    "seller_fee_basis_points": integer
    "fee_recipient": text
}
```

* `id`: Integer (primary key) representing the row of the entry
* `owner`: Uuid of the user who created the collection. This value is a foreign key for the uuid in the `Users` table
* `tokens_table`: String identifier for the name of the user-specific `Tokens` table
* `layers_table`: String identifier for the name of the user-specific `Layers` table
* `attributes_table`: String identifier for the name of the user-specific `Attributes` table
* `contract_address`: Address for the deployed smart contract. This is only populated if/when the user decides to deploy the contract to the blockchain
* `name`: Collection name
* `symbol`: Collection token symbol (e.g., "C" for CryptoPunks)
* `description`: Collection description
* `image`: IPFS content hash for the collection's avatar. This hash is inserted into an IPFS gateway in the Opal UI to fetch the content from IPFS
* `external_link`: Supplementary link to point to collection content (e.g., website, Twitter, Linktree, etc.)
* `seller_fee_basis_points`: Percentage in basis points for secondary market royalties (e.g., 100 basis points = 1% secondary market royalties)
* `fee_recipient`: Address for the recipient of any secondary market royalties

The name, description, image, external link, seller fee basis points, and fee recipient values are all values that are picked up on secondary NFT marketplaces via the smart contract's `contractURI()` function. More information can be found in OpenSea's documents on [contract-level metadata](https://docs.opensea.io/docs/contract-level-metadata).

#### Secondary Market Royalties

There has been recent discussion in the NFT space on whether marketplaces such as OpenSea will honor secondary market royalties and the technical implementation of possible solutions. As of now, there is no clear guidance on how creators should proceed. If anything changes, Opal will make the necessary changes to the `Collections` table schema, specifically with respect to the seller fee basis points and fee recipient.


---

# 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://silika-studio.gitbook.io/opal/objects/collections.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.
