{
"id": "blue.registry.item",
"defs": {
"link": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "URL of the product page."
},
"title": {
"type": "string",
"maxLength": 500,
"description": "Display title for the link.",
"maxGraphemes": 100
},
"imageUrl": {
"type": "string",
"format": "uri",
"description": "Preview image URL, typically from Open Graph meta tags."
},
"modelNumber": {
"type": "string",
"maxLength": 500,
"description": "Manufacturer or seller model/SKU number.",
"maxGraphemes": 100
},
"priceHistory": {
"type": "array",
"items": {
"ref": "#priceEntry",
"type": "ref"
},
"maxLength": 1000,
"description": "Historical price observations for this link."
}
},
"description": "A link to a product page or listing."
},
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"name",
"createdAt"
],
"properties": {
"name": {
"type": "string",
"maxLength": 1000,
"description": "The name of the item. Can be generic (e.g. 'a new laptop') or specific (e.g. 'MacBook Pro M4 14\"').",
"maxGraphemes": 200
},
"size": {
"type": "string",
"maxLength": 200,
"description": "Size specification (e.g. 'Large', '10.5', '14 inch').",
"maxGraphemes": 50
},
"color": {
"type": "string",
"maxLength": 200,
"description": "Color preference (e.g. 'Space Black', 'Red').",
"maxGraphemes": 50
},
"image": {
"type": "blob",
"accept": [
"image/png",
"image/jpeg",
"image/webp"
],
"maxSize": 1000000,
"description": "An image of the item."
},
"links": {
"type": "array",
"items": {
"ref": "#link",
"type": "ref"
},
"maxLength": 20,
"description": "Links to product pages, listings, or references."
},
"price": {
"ref": "#money",
"type": "ref",
"description": "The actual or listed price of the item."
},
"budget": {
"ref": "#moneyRange",
"type": "ref",
"description": "The budget the user is willing to spend."
},
"priority": {
"type": "string",
"description": "How much the user wants this item.",
"knownValues": [
"must-have",
"strong-desire",
"someday"
]
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp when the item was created."
},
"updatedAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp when the item was last modified."
},
"isDonation": {
"type": "boolean",
"default": false,
"description": "Whether this item is a donation link (e.g. GoFundMe, charity). Donation items appear first in list views."
},
"description": {
"type": "string",
"maxLength": 10000,
"description": "Open description field for any additional details, preferences, or notes.",
"maxGraphemes": 2000
}
}
},
"description": "A wishlist or registry item. Can be generic or specific."
},
"money": {
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "integer",
"minimum": 0,
"description": "Amount in smallest currency unit (e.g. cents)."
},
"currency": {
"type": "string",
"default": "USD",
"maxLength": 3,
"description": "ISO 4217 currency code."
}
},
"description": "A monetary amount in the smallest currency unit (e.g. cents)."
},
"moneyRange": {
"type": "object",
"properties": {
"max": {
"type": "integer",
"minimum": 0,
"description": "Maximum amount in smallest currency unit."
},
"min": {
"type": "integer",
"minimum": 0,
"description": "Minimum amount in smallest currency unit."
},
"currency": {
"type": "string",
"default": "USD",
"maxLength": 3,
"description": "ISO 4217 currency code."
}
},
"description": "A budget range in the smallest currency unit."
},
"priceEntry": {
"type": "object",
"required": [
"price",
"observedAt"
],
"properties": {
"price": {
"ref": "#money",
"type": "ref",
"description": "The observed price."
},
"observedAt": {
"type": "string",
"format": "datetime",
"description": "When this price was observed."
}
},
"description": "A price observation at a point in time."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"description": "An item that can appear on one or more lists."
}