# blue.registry.item

> Published by [registry.blue](https://lexicon.garden/identity/did:plc:4olik72a346dcc2hppt7ioo4)

✓ This is the authoritative definition for this NSID.

## Description

An item that can appear on one or more lists.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:4olik72a346dcc2hppt7ioo4/blue.registry.item)
- [Documentation](https://lexicon.garden/lexicon/did:plc:4olik72a346dcc2hppt7ioo4/blue.registry.item/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:4olik72a346dcc2hppt7ioo4/blue.registry.item/examples)

## Definitions

### `blue.registry.item#link`

**Type**: `object`

A link to a product page or listing.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `url` | `string` (uri) | Yes | URL of the product page. |
| `title` | `string` | No | Display title for the link. |
| `imageUrl` | `string` (uri) | No | Preview image URL, typically from Open Graph meta tags. |
| `modelNumber` | `string` | No | Manufacturer or seller model/SKU number. |
| `priceHistory` | `array` | No | Historical price observations for this link. |

### `blue.registry.item`

**Type**: `record`

A wishlist or registry item. Can be generic or specific.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes | The name of the item. Can be generic (e.g. 'a new laptop') or specific (e.g. 'MacBook Pro M4 14"'). |
| `size` | `string` | No | Size specification (e.g. 'Large', '10.5', '14 inch'). |
| `color` | `string` | No | Color preference (e.g. 'Space Black', 'Red'). |
| `image` | `blob` | No | An image of the item. |
| `links` | `array` | No | Links to product pages, listings, or references. |
| `price` | `ref` → `#money` | No | The actual or listed price of the item. |
| `budget` | `ref` → `#moneyRange` | No | The budget the user is willing to spend. |
| `priority` | `string` | No | How much the user wants this item. |
| `createdAt` | `string` (datetime) | Yes | Timestamp when the item was created. |
| `updatedAt` | `string` (datetime) | No | Timestamp when the item was last modified. |
| `isDonation` | `boolean` | No | Whether this item is a donation link (e.g. GoFundMe, charity). Donation items appear first in list views. |
| `description` | `string` | No | Open description field for any additional details, preferences, or notes. |

### `blue.registry.item#money`

**Type**: `object`

A monetary amount in the smallest currency unit (e.g. cents).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `amount` | `integer` | Yes | Amount in smallest currency unit (e.g. cents). |
| `currency` | `string` | No | ISO 4217 currency code. |

### `blue.registry.item#moneyRange`

**Type**: `object`

A budget range in the smallest currency unit.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `max` | `integer` | No | Maximum amount in smallest currency unit. |
| `min` | `integer` | No | Minimum amount in smallest currency unit. |
| `currency` | `string` | No | ISO 4217 currency code. |

### `blue.registry.item#priceEntry`

**Type**: `object`

A price observation at a point in time.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `price` | `ref` → `#money` | Yes | The observed price. |
| `observedAt` | `string` (datetime) | Yes | When this price was observed. |

## Raw Schema

```json
{
  "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."
}
```
