# com.bbq-joints.review

> Published by [bbq-joints.com](https://lexicon.garden/identity/did:plc:khymkx52wx2lpwib6l2ysqha)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:khymkx52wx2lpwib6l2ysqha/com.bbq-joints.review)
- [Documentation](https://lexicon.garden/lexicon/did:plc:khymkx52wx2lpwib6l2ysqha/com.bbq-joints.review/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:khymkx52wx2lpwib6l2ysqha/com.bbq-joints.review/examples)

## Definitions

### `com.bbq-joints.review`

**Type**: `record`

One person's review of a BBQ joint, held in their own repository. The reviewer owns it: they can edit or delete it, and it travels with them to any other app that reads this collection.

**Key**: `any`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `createdAt` | `string` (datetime) | Yes | When the record was written. |
| `rating` | `integer` | Yes | Stars, 1 to 5. |
| `subject` | `string` (at-uri) | Yes | The place being reviewed, as the at:// URI of its com.bbq-joints.place record. A URI rather than a name so a joint can be renamed without orphaning its reviews — the mistake that cost a photo its joint when the cloud schema travelled by name. |
| `text` | `string` | No | Optional note. maxGraphemes as well as maxLength because an emoji-heavy review is short to a reader and long in bytes. |
| `updatedAt` | `string` (datetime) | No | Set when an existing review is changed, so a reader can tell a revision from a fresh opinion. |
| `visitedAt` | `string` (datetime) | No | When they ate there, if they said. Distinct from createdAt: a review written months later is still about that visit. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "One person's review of a BBQ joint, held in their own repository. The reviewer owns it: they can edit or delete it, and it travels with them to any other app that reads this collection.",
      "key": "any",
      "record": {
        "properties": {
          "createdAt": {
            "description": "When the record was written.",
            "format": "datetime",
            "type": "string"
          },
          "rating": {
            "description": "Stars, 1 to 5.",
            "maximum": 5,
            "minimum": 1,
            "type": "integer"
          },
          "subject": {
            "description": "The place being reviewed, as the at:// URI of its com.bbq-joints.place record. A URI rather than a name so a joint can be renamed without orphaning its reviews — the mistake that cost a photo its joint when the cloud schema travelled by name.",
            "format": "at-uri",
            "type": "string"
          },
          "text": {
            "description": "Optional note. maxGraphemes as well as maxLength because an emoji-heavy review is short to a reader and long in bytes.",
            "maxGraphemes": 1000,
            "maxLength": 2000,
            "type": "string"
          },
          "updatedAt": {
            "description": "Set when an existing review is changed, so a reader can tell a revision from a fresh opinion.",
            "format": "datetime",
            "type": "string"
          },
          "visitedAt": {
            "description": "When they ate there, if they said. Distinct from createdAt: a review written months later is still about that visit.",
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "subject",
          "rating",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "com.bbq-joints.review",
  "lexicon": 1
}
```
