# cafe.thunderbird.way.signpost

> The record key is the tile's id and the exit's id, joined by a dot (e.g. "maze.obelisk").

- Kind: record
- Record key: any
- Authority: way.thunderbird.cafe
- Lexicon: 1
- Published by [thunderbird.cafe](https://lexicon.garden/identity/did:plc:6vxjigxrqizmbo56gojxico3), the NSID's authority

## Links

- [Documentation](https://lexicon.garden/lexicon/did:plc:6vxjigxrqizmbo56gojxico3/cafe.thunderbird.way.signpost)
- [Schema JSON](https://lexicon.garden/lexicon/did:plc:6vxjigxrqizmbo56gojxico3/cafe.thunderbird.way.signpost/schema.json)
- [Analytics](https://lexicon.garden/lexicon/did:plc:6vxjigxrqizmbo56gojxico3/cafe.thunderbird.way.signpost/analytics)

## Record (`cafe.thunderbird.way.signpost`)

Type: record · key any

### Properties

- `name` (string): Optional: a name for the exit this signpost belongs to, shown by hosts and renderers (e.g. "The slide"). Without one, they make a name from the exit's id.
  - Constraints: maxLength: 300, maxGraphemes: 100
- `note` (string): A line the host can show, e.g. "Under construction".
  - Constraints: maxLength: 300, maxGraphemes: 100
- `to` (array, required): Where the exit leads. Empty: dormant, it leads nowhere yet. One: straight there. Several: the host offers a choice ("pick a door").
  - Constraints: maxLength: 12
  - `items` (ref)
    - Reference: `#destination`
- `updatedAt` (string · datetime, required)

## #destination (`cafe.thunderbird.way.signpost#destination`)

Type: object

Exactly one of place or tile.

### Properties

- `entrance` (string): Which entrance to arrive at, as named in that tile's /ways.json.
  - Constraints: maxLength: 64
- `label` (string): A label for the choice, when there are several.
  - Constraints: maxLength: 300, maxGraphemes: 100
- `place` (string · at-uri): A place record (cafe.thunderbird.way.place): the usual case.
- `tile` (string · at-uri): A tile record (ing.dasl.masl), for a tile with no place record.

## Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "destination": {
      "description": "Exactly one of place or tile.",
      "properties": {
        "entrance": {
          "description": "Which entrance to arrive at, as named in that tile's /ways.json.",
          "maxLength": 64,
          "type": "string"
        },
        "label": {
          "description": "A label for the choice, when there are several.",
          "maxGraphemes": 100,
          "maxLength": 300,
          "type": "string"
        },
        "place": {
          "description": "A place record (cafe.thunderbird.way.place): the usual case.",
          "format": "at-uri",
          "type": "string"
        },
        "tile": {
          "description": "A tile record (ing.dasl.masl), for a tile with no place record.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "type": "object"
    },
    "main": {
      "description": "The record key is the tile's id and the exit's id, joined by a dot (e.g. \"maze.obelisk\").",
      "key": "any",
      "record": {
        "properties": {
          "name": {
            "description": "Optional: a name for the exit this signpost belongs to, shown by hosts and renderers (e.g. \"The slide\"). Without one, they make a name from the exit's id.",
            "maxGraphemes": 100,
            "maxLength": 300,
            "type": "string"
          },
          "note": {
            "description": "A line the host can show, e.g. \"Under construction\".",
            "maxGraphemes": 100,
            "maxLength": 300,
            "type": "string"
          },
          "to": {
            "description": "Where the exit leads. Empty: dormant, it leads nowhere yet. One: straight there. Several: the host offers a choice (\"pick a door\").",
            "items": {
              "ref": "#destination",
              "type": "ref"
            },
            "maxLength": 12,
            "type": "array"
          },
          "updatedAt": {
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "to",
          "updatedAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "A signpost: where one exit of a web tile leads (ways between tiles, thunderbird.cafe, v 1; see cafe.thunderbird.way.place). The tile names its signpost in its /ways.json; only a host (the page that holds the tile) reads it, since a tile can't reach the network. Change it any time: the tile never has to be republished.",
  "id": "cafe.thunderbird.way.signpost",
  "lexicon": 1
}
```
