{
"id": "town.laugh.db.event",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"venue",
"slug",
"title",
"startAt",
"timezone",
"origin",
"createdAt"
],
"properties": {
"slug": {
"type": "string",
"description": "URL routing slug (mutable)"
},
"title": {
"type": "string",
"description": "Canonical event title"
},
"venue": {
"type": "string",
"format": "at-uri",
"description": "AT-URI reference to the town.laugh.db.venue record"
},
"isFree": {
"type": "boolean",
"description": "Whether entry is free"
},
"origin": {
"type": "string",
"description": "Where this record came from",
"knownValues": [
"scraped",
"native",
"atproto"
]
},
"poster": {
"type": "string",
"format": "uri",
"description": "Event flyer/poster image URL"
},
"doorsAt": {
"type": "string",
"format": "datetime",
"description": "Offset-qualified doors-open datetime, interpreted in the same timezone"
},
"roomRef": {
"type": "string",
"format": "at-uri",
"description": "AT-URI reference to the town.laugh.db.room record"
},
"startAt": {
"type": "string",
"format": "datetime",
"description": "Offset-qualified RFC-3339 start datetime; combine with timezone for Temporal.ZonedDateTime"
},
"currency": {
"type": "string",
"description": "ISO 4217 currency code for priceMin/priceMax, e.g. USD; required if either is set"
},
"priceMax": {
"type": "integer",
"description": "Highest ticket price in minor units for tiered pricing; same currency"
},
"priceMin": {
"type": "integer",
"description": "Lowest ticket price in minor units (e.g. cents); requires currency"
},
"timezone": {
"type": "string",
"description": "IANA timezone name for startAt/doorsAt, e.g. America/Los_Angeles"
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp of record creation"
},
"eventType": {
"type": "string",
"description": "Kind of comedy event; absent when unclassified",
"knownValues": [
"openMic",
"showcase",
"standup",
"improv",
"sketch"
]
},
"languages": {
"type": "array",
"items": {
"type": "string",
"format": "language"
},
"description": "BCP-47 languages of the show"
},
"sourceUrl": {
"type": "string",
"format": "uri",
"description": "Source listing URL"
},
"ticketUrl": {
"type": "string",
"format": "uri",
"description": "Ticket purchase URL"
},
"performers": {
"type": "array",
"items": {
"ref": "town.laugh.db.defs#performer",
"type": "ref"
},
"description": "Billed performers"
},
"description": {
"type": "array",
"items": {
"ref": "town.laugh.db.defs#localizedText",
"type": "ref"
},
"description": "Event description, one entry per language"
},
"posterWidth": {
"type": "integer",
"description": "Poster image width in pixels"
},
"presentedBy": {
"type": "string",
"description": "Presenting promoter/organizer"
},
"drinkMinimum": {
"type": "string",
"description": "Drink/purchase minimum, e.g. 2-drink minimum"
},
"posterHeight": {
"type": "integer",
"description": "Poster image height in pixels"
},
"ticketStatus": {
"type": "string",
"description": "Availability label, e.g. Sold Out / 3 left"
},
"ageRestriction": {
"type": "string",
"description": "Age policy, e.g. 21+ / All Ages"
},
"titleLocalized": {
"type": "array",
"items": {
"ref": "town.laugh.db.defs#localizedText",
"type": "ref"
},
"description": "Title in other languages/scripts; title is the canonical fallback"
}
}
},
"description": "A comedy show at a venue"
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}