# Autonomy Metadata Standard V1 ###### tags: `Autonomy` `nft-indexer` For each query of NFTs, we returns tokens in the following format. ```json { "id": "19961", "blockchain": "tezos", "fungible": true, "contractType": "fa2", "contractAddress": "KT1MxDwChiDwd6WBVs24g1NjERUoK622ZEFp", "edition": 0, "editionName": "", "mintedAt": "0001-01-01T00:00:00Z", "balance": 0, "owner": "tz1W9CspMuG3m45uDyY8wBav8YzoYrv4uW8i", "owners": { "tz1W9CspMuG3m45uDyY8wBav8YzoYrv4uW8i": 1 }, "indexID": "tez-KT1MxDwChiDwd6WBVs24g1NjERUoK622ZEFp-19961", "source": "tzkt", "swapped": false, "burned": false, "lastActivityTime": "0001-01-01T00:00:00Z", "lastRefreshedTime": "2023-01-05T02:23:23.529Z", "thumbnailID": "2f29c157-a1cc-4f90-c806-4c10914a7900", "ipfsPinned": false, "provenance": null, "projectMetadata": {...} } ``` | Key | Description | | -------- | -------- | | id | The id of the token. (This is not a unique value since it would be duplicated by blockchain and contracts) | | blockchain | The blockchain where the token belongs to | | fungible | An indicator of whether the token is fungible or non-fungible | | contractType | The contract type of the token | | contractAddress | The contract address of the token | | edition | The edition number of the token | | editionName | The text representation of edition of the token (for Feral File) | | mintedAt | The minted time of the token | | owner | The owner of the token (to deprecate) | | owners | A map of owners and balances of the token | | indexID | The unique id of the token | source | The data source of the token | lastActivityTime | The timestamp of last activity of this token (Issue or transfer). Zero time for fungible token. | | thumbnailID | The cache image ID from cloudflare for the token | | projectMetadata | The detailed information of the token. It could be contract data or collection(exhibition) details. ([See below](#Project-Metadata)) | | provenance | The provenance information of a NFT. `null` for fungible token. ([See below](#Provenance)) | ## Project Metadata Project metadata is mainly the source of data for displaying on Autonomy app. | Detail | Metadata | | -------- | -------- | | ![](https://hackmd.io/_uploads/B1KwcRa-c.jpg) | ![](https://hackmd.io/_uploads/BJVozRa-q.jpg) | ```json { "title": "Sphereportal #36", "description": "A collection of uniquely formulated sphere portals creates by a set of spinning straight lines\nRarity includes:\nOne of five random spinning angles\nOne of three generating speeds\nOne of four line-sizes that affect the size of the sphere\nOne of eighteen random light background colors\nOne of seven dark pen colors", "medium": "software", "mimeType": "", "artistID": "tz1SvJbECAva9gxczfBmX3CAFUszgQXNgsNm", "artistName": "tz1SvJbECAva9gxczfBmX3CAFUszgQXNgsNm", "artistURL": "https://www.fxhash.xyz/u/P1x3lboy", "assetID": "ae6e316dd42e27893795b4876f47024d3bd0f0d41eba35d695f361bd5c54e4aa", "maxEdition": 64, "source": "fxhash", "sourceURL": "https://www.fxhash.xyz", "assetURL": "https://www.fxhash.xyz/gentk/396745", "previewURL": "https://gateway.fxhash.xyz/ipfs/QmbMkC4vSAgTvGZ2pZHYHqvgG4F3c2UaDBBndf3BBzkQEL?fxhash=ooa5WQf8qGgb9FCGwYzWNopeVuopmuRrib5Ge4TyFnpAiKKJvGS", "thumbnailURL": "https://gateway.fxhash.xyz/ipfs/QmNbBuFXo1stNUd24VpCXDYwxkMZXYHFvV3Ga76ADmyGHB", "galleryThumbnailURL": "https://gateway.fxhash.xyz/ipfs/QmNbBuFXo1stNUd24VpCXDYwxkMZXYHFvV3Ga76ADmyGHB", // uncertained "assetData": "", "originalFileURL": "", "royalties": { "decimals": 4, "shares": { "artist": 1000, "feralfile": 500 } }, "artworkMetadata": {}, "firstMintedAt": "0001-01-01T00:00:00.000Z" } ``` | Key | Description | | -------- | -------- | | title | The title of the artwork | | description | The description of the artwork | | medium | The medium type of the artwork ([See below](#Medium-and-playback)) | | mimeType | The mime type of the artwork if it is detectable | | artistID | The blockchain address of the artist of the artwork | | artistName | The artist name of the artwork | | artistURL | The link to the page of the artist | | assetID | The asset id of the artwork. The value could be a contract address. | | maxEdition | The maximum editions of this artwork | | source | The platform or marketplace where the artwork is minted or listed. | | sourceURL | The link of the source platform | | assetURL | The link to the asset in the source platform | | previewURL | The file which is used for "View Artwork" | | thumbnailURL | The file which is used for displaying in the artwork detail | | galleryThumbnailURL | The file which is used for displaying in the gallery screen | | artworkMetadata | Some customized field for an artwork (for Feral File) | | royalties | The royalty information by recipients ([See below](#Royalties)) | ## Royalties (TBD) Follow the current royalties structure from the tezos community: ```json { "decimals": 4, "shares": { "artist": 1000, "feralfile": 500 } } ``` The royalty information are - artist: 10% (1000/10000) - feralfile: 5% (500/10000) ## Provenance ![](https://hackmd.io/_uploads/SJJVMRabq.jpg) Provenace is a list of provenances belongs to a token descended by time. ```json [ { "type": "mint", "owner": "0xAD6C5Cc505bB12FE6bFA37e4202Cb139409aE006", "blockchain": "ethereum", "blockNumber": 14035683, "timestamp": "2022-01-19T11:19:19Z", "txid": "0xc706ab0afb6a7ea022433d25ebd8783fde5fb2ce24eb4606a9233e1ed531aa0c", "txURL": "https://etherscan.io/tx/0xc706ab0afb6a7ea022433d25ebd8783fde5fb2ce24eb4606a9233e1ed531aa0c" }, { "type": "burn", "owner": "a3ezwdYVEVrHwszQrYzDTCAZwUD3yKtNsCq9YhEu97bPaGAKy1", "blockchain": "bitmark", "timestamp": "2022-01-19T11:18:06Z", "txid": "0bd3cffb63f23e05960dcaa196b75ab311245ccc961af9dbd774e3c39bacac33", "txURL": "https://registry.bitmark.com/transaction/0bd3cffb63f23e05960dcaa196b75ab311245ccc961af9dbd774e3c39bacac33" }, { "type": "transfer", "owner": "b8XN8LDoKevDtBMRZbv6tefvy5NJ9gCFs9w7H9fLTBx54VEAaK", "blockchain": "bitmark", "timestamp": "2022-01-07T10:59:47Z", "txid": "2d4c9f6e888382022caf0b1a9cdef443dcdacf27fb744623493915753efd9b98", "txURL": "https://registry.bitmark.com/transaction/2d4c9f6e888382022caf0b1a9cdef443dcdacf27fb744623493915753efd9b98" }, { "type": "transfer", "owner": "ahPEGaUSRZg1kYFfGyWRwXSMotYDcopcNADd6q1nb2AgKRG2yk", "blockchain": "bitmark", "timestamp": "2021-12-15T17:35:14Z", "txid": "6cfbcc49adaea9f452984e704d3538317715cd9c0c96f642f239159c2e64b1df", "txURL": "https://registry.bitmark.com/transaction/6cfbcc49adaea9f452984e704d3538317715cd9c0c96f642f239159c2e64b1df" }, { "type": "issue", "owner": "aDADzvsfKdAA4fSoAh9sBFcVzAgbiaGbrTJkS5SMpT8zfza7SD", "blockchain": "bitmark", "timestamp": "2021-12-15T17:02:48Z", "txid": "ab32e92f3126ba1d655e78fb1d412c2cec0af4fca048fef2616541d2b4d8e126", "txURL": "https://registry.bitmark.com/transaction/ab32e92f3126ba1d655e78fb1d412c2cec0af4fca048fef2616541d2b4d8e126" } ] ``` | Key | Description | | -------- | -------- | | type | Type of the provenance record. (Issue or transfer) | | owner | The new owner of the token | | blockchain | The blockchain where the provenance record happened | | blockNumber | the block height of the transaction happened | | timestamp | The timestamp of the provenance record | | txURL | a url link to the happened transaction according to blockchain | ## Medium and playback The Autonomy app determines the playback style based on the artwork `medium` type. ### Images #### Condition - Feral File artworks with type: `image` - OpenSea, Objkt tokens with the preview extension are: - `jpg`, `jpeg` - `png` - `svg` #### Playback The Autonomy app will load the remote artwork to an image view with a transparent background. For the SVG, it will also add a `white` color for the default stroke color. ### Video #### Condition - Feral File artworks with type: `video` - OpenSea, Objkt tokens with the preview extension are: - `mp4` (H264) - `mov` #### Playback The Autonomy app will load the remote artwork URL to a video player, with a `black` background. It will hide the video control bar and play looping by default. ### Software #### Condition - Feral File artworks with type: `software` - OpenSea, Objkt tokens with `index.html` #### Playback The Autonomy app will load the remote artwork URL to a Webview (based on the device OS, it might be different). To prevent any strange behavior from the javascript artwork, it will disable the zoom and scroll by default. Some specific artworks might override this setting. ### Other #### Condition - Any artwork which does not fit above conditions #### Playback The app will consider the `mimeType` property from the asset information.