Items
An Item is an abstraction of an ownable asset. In another terms, an item is an NFT for Phosphor Platform. It is created with a set of attributes in a NOT_MINTED
state. The platform generates the item's metadata from these attributes automatically and pin it on IPFS.
An item must be created from a deployed collection. It inherits the collection's token ID assignment strategy, which determines how it will receive its token ID. When it is minted, an NFT is created from the collection's token contract with this token ID. This token ID uniquely associates an NFT with its metadata.
Metadata for an item can be specified at will, as long as their values respect the general type restrictions. An optional way to apply a structure to NFT metadata is by creating an Item Type, a JSON schema that is applicable to one item, or all items within the same collection. You can manage item types using a JSON file upload endpoint in the API.
Items must be locked before it can be minted, listed, transferred or sent through an email claim.
Once you link an item type to an item or collection, you can't update its JSON schema or delete it. We recommend creating a second item type with the new, updated JSON schema.
Metadata
When creating an item in the platform you can set attributes
which are fields that further describe the item, such as it's image or title.
The ERC721 and ERC1155 standards have a way to provide a uri for each token. This is commonly referred to as the token metadata. The OpenSea metadata standard has
become the de-facto standard for metadata, and the platform generates metadata conforming to this standard. The platform transforms the
item's attributes
to the appropriate metadata. To fine-tune the generated metadata, you can use some reserved attributes:
Attribute Name | Description |
---|---|
title | The title of the item. Maps to name in the OpenSea metadata. |
description | A description of the item. Maps to description in the OpenSea metadata. |
image_url | The url to the image representing the item. Maps to image in the OpenSea metadata. |
meta_animation_url | Optional url to an animation. Maps to animation_url in the OpenSea metadata. |
meta_external_url | Optional url to an external url. Maps to external_url in the OpenSea metadata. |
meta_background_color | Maps to background_color in the OpenSea metadata. |
meta_youtube_url | Maps to youtube_url in the OpenSea metadata. |
* | Any other attribute will be mapped as an entry in the attributes array in the OpenSea metadata. |
Restrictions
You can create as many item types as you want, and each one is specific to your organization.
To define an item type, the platform uses a subset of the JSON Schema specification, with the following limitations in order to correctly generate attributes compatible with the Enjin/OpenSea metadata structure, and keep the implementation simple:
- All properties must have a unique name.
- No nested properties are allowed.
- Only primitive property types (
number
,boolean
,string
,number
,null
) are allowed. - Some special
format
values are supported, such asuri
(which allows you to pin a file on IPFS) anddata-url
(which allows you to upload a file as a data URI reference).
Item Lifecycle
Items (NFTs) on Phosphor Developer start in a ‘draft’ state. To enable distribution actions like listing, minting, transferring, or emailing, items must be locked.
Before locking the item you are able to create, edit and delete item. After locking you can’t take some those actions anymore.
During locking, specify the maximum supply for the item (relevant for ERC1155 tokens, set to 1 for ERC721). Remember, only locked items can be:
- Listed
- Transferred
- Minted
- Emailed
To avoid action conflicts, a reservation system is used once an item is locked, ensuring smooth transactions across all distribution channels.