town.laugh.db.event
Schema Diff
+11 -0
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
}