town.laugh.db.event

laugh.town

Schema Diff

+11 -0

From

CID
bafyreih77lvmac7...
Indexed At
2026-06-12 22:01 UTC
View this version

To

CID
bafyreicoruhm2a6...
Indexed At
2026-06-24 17:22 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 2 non-breaking changes.

Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "town.laugh.db.event:body.eventType" }
  • AddedEdge AddedEdge { src: "town.laugh.db.event:body", tgt: "town.laugh.db.event:body.eventType", kind: "prop", name: Some("eventType") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "town.laugh.db.event:body.eventType" }

Additional Notes

  • Non-breaking: AddedEdge { src: "town.laugh.db.event:body", tgt: "town.laugh.db.event:body.eventType", kind: "prop", name: Some("eventType") }
1 1
{
2 2
  "id": "town.laugh.db.event",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "tid",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "venue",
11 11
          "slug",
12 12
          "title",
13 13
          "startAt",
14 14
          "timezone",
15 15
          "origin",
16 16
          "createdAt"
17 17
        ],
18 18
        "properties": {
19 19
          "slug": {
20 20
            "type": "string",
21 21
            "description": "URL routing slug (mutable)"
22 22
          },
23 23
          "title": {
24 24
            "type": "string",
25 25
            "description": "Canonical event title"
26 26
          },
27 27
          "venue": {
28 28
            "type": "string",
29 29
            "format": "at-uri",
30 30
            "description": "AT-URI reference to the town.laugh.db.venue record"
31 31
          },
32 32
          "isFree": {
33 33
            "type": "boolean",
34 34
            "description": "Whether entry is free"
35 35
          },
36 36
          "origin": {
37 37
            "type": "string",
38 38
            "description": "Where this record came from",
39 39
            "knownValues": [
40 40
              "scraped",
41 41
              "native",
42 42
              "atproto"
43 43
            ]
44 44
          },
45 45
          "poster": {
46 46
            "type": "string",
47 47
            "format": "uri",
48 48
            "description": "Event flyer/poster image URL"
49 49
          },
50 50
          "doorsAt": {
51 51
            "type": "string",
52 52
            "format": "datetime",
53 53
            "description": "Offset-qualified doors-open datetime, interpreted in the same timezone"
54 54
          },
55 55
          "roomRef": {
56 56
            "type": "string",
57 57
            "format": "at-uri",
58 58
            "description": "AT-URI reference to the town.laugh.db.room record"
59 59
          },
60 60
          "startAt": {
61 61
            "type": "string",
62 62
            "format": "datetime",
63 63
            "description": "Offset-qualified RFC-3339 start datetime; combine with timezone for Temporal.ZonedDateTime"
64 64
          },
65 65
          "currency": {
66 66
            "type": "string",
67 67
            "description": "ISO 4217 currency code for priceMin/priceMax, e.g. USD; required if either is set"
68 68
          },
69 69
          "priceMax": {
70 70
            "type": "integer",
71 71
            "description": "Highest ticket price in minor units for tiered pricing; same currency"
72 72
          },
73 73
          "priceMin": {
74 74
            "type": "integer",
75 75
            "description": "Lowest ticket price in minor units (e.g. cents); requires currency"
76 76
          },
77 77
          "timezone": {
78 78
            "type": "string",
79 79
            "description": "IANA timezone name for startAt/doorsAt, e.g. America/Los_Angeles"
80 80
          },
81 81
          "createdAt": {
82 82
            "type": "string",
83 83
            "format": "datetime",
84 84
            "description": "Timestamp of record creation"
85 85
          },
86 +
          "eventType": {
87 +
            "type": "string",
88 +
            "description": "Kind of comedy event; absent when unclassified",
89 +
            "knownValues": [
90 +
              "openMic",
91 +
              "showcase",
92 +
              "standup",
93 +
              "improv",
94 +
              "sketch"
95 +
            ]
96 +
          },
86 97
          "languages": {
87 98
            "type": "array",
88 99
            "items": {
89 100
              "type": "string",
90 101
              "format": "language"
91 102
            },
92 103
            "description": "BCP-47 languages of the show"
93 104
          },
94 105
          "sourceUrl": {
95 106
            "type": "string",
96 107
            "format": "uri",
97 108
            "description": "Source listing URL"
98 109
          },
99 110
          "ticketUrl": {
100 111
            "type": "string",
101 112
            "format": "uri",
102 113
            "description": "Ticket purchase URL"
103 114
          },
104 115
          "performers": {
105 116
            "type": "array",
106 117
            "items": {
107 118
              "ref": "town.laugh.db.defs#performer",
108 119
              "type": "ref"
109 120
            },
110 121
            "description": "Billed performers"
111 122
          },
112 123
          "description": {
113 124
            "type": "array",
114 125
            "items": {
115 126
              "ref": "town.laugh.db.defs#localizedText",
116 127
              "type": "ref"
117 128
            },
118 129
            "description": "Event description, one entry per language"
119 130
          },
120 131
          "posterWidth": {
121 132
            "type": "integer",
122 133
            "description": "Poster image width in pixels"
123 134
          },
124 135
          "presentedBy": {
125 136
            "type": "string",
126 137
            "description": "Presenting promoter/organizer"
127 138
          },
128 139
          "drinkMinimum": {
129 140
            "type": "string",
130 141
            "description": "Drink/purchase minimum, e.g. 2-drink minimum"
131 142
          },
132 143
          "posterHeight": {
133 144
            "type": "integer",
134 145
            "description": "Poster image height in pixels"
135 146
          },
136 147
          "ticketStatus": {
137 148
            "type": "string",
138 149
            "description": "Availability label, e.g. Sold Out / 3 left"
139 150
          },
140 151
          "ageRestriction": {
141 152
            "type": "string",
142 153
            "description": "Age policy, e.g. 21+ / All Ages"
143 154
          },
144 155
          "titleLocalized": {
145 156
            "type": "array",
146 157
            "items": {
147 158
              "ref": "town.laugh.db.defs#localizedText",
148 159
              "type": "ref"
149 160
            },
150 161
            "description": "Title in other languages/scripts; title is the canonical fallback"
151 162
          }
152 163
        }
153 164
      },
154 165
      "description": "A comedy show at a venue"
155 166
    }
156 167
  },
157 168
  "$type": "com.atproto.lexicon.schema",
158 169
  "lexicon": 1
159 170
}

Compare Other Versions

Lexicon Garden

@