{
"id": "equipment.rpg.item",
"defs": {
"main": {
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"item",
"title",
"give",
"provider",
"acceptedAt"
],
"properties": {
"give": {
"type": "string",
"format": "at-uri",
"description": "AT URI of the equipment.rpg.give record on the provider's PDS."
},
"icon": {
"type": "blob",
"accept": [
"image/png"
],
"description": "Small standalone icon for the item (e.g. 64x64 PNG). Used in inventory displays and profile panels."
},
"item": {
"type": "string",
"maxLength": 50,
"description": "Item identifier matching the give record (e.g. 'popcorn', 'theatre_shirt')."
},
"kind": {
"type": "string",
"maxLength": 20,
"description": "Item kind. 'layer' for sprite-generator wearables, 'inventory' for non-wearable items like keys or potions. Defaults to 'layer' if omitted."
},
"asset": {
"type": "blob",
"accept": [
"image/png"
],
"description": "The item's sprite layer artwork (144x192 PNG). Required for 'layer' items, optional for 'inventory' items."
},
"stats": {
"type": "object",
"description": "Item properties copied from the give record at acceptance time."
},
"title": {
"type": "string",
"maxLength": 100,
"description": "Display name for the item."
},
"context": {
"type": "string",
"maxLength": 200,
"description": "Origin description copied from the give record."
},
"assetCid": {
"type": "string",
"maxLength": 200,
"description": "CID of the canonical asset or icon blob. Must match the give record's assetCid for verification."
},
"category": {
"type": "string",
"maxLength": 30,
"description": "Generator layer category for 'layer' items (e.g. 'tops', 'righthand'). Ignored for 'inventory' items."
},
"provider": {
"type": "string",
"format": "did",
"description": "DID of the provider who gave this item."
},
"acceptedAt": {
"type": "string",
"format": "datetime",
"description": "When the player accepted this item."
},
"description": {
"type": "string",
"maxLength": 500,
"description": "Flavour text or description."
}
}
},
"description": "An item in the player's inventory. Self-contained with all data needed for rendering and display. The give URI and assetCid enable verification against the provider's attestation. Each record is one item."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"description": "A player's owned item, accepted from a provider's give record. Lives on the player's PDS."
}