{
"id": "com.cultureblocs.venue.listing",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"title",
"start",
"createdAt"
],
"properties": {
"end": {
"type": "string",
"format": "datetime"
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxGraphemes": 64
},
"maxLength": 8
},
"event": {
"ref": "com.cultureblocs.defs#strongRef",
"type": "ref",
"description": "Interop hook: a general-purpose event record elsewhere that this listing corresponds to. Prefer pointing over duplicating."
},
"links": {
"type": "array",
"items": {
"ref": "com.cultureblocs.defs#linkRef",
"type": "ref"
},
"maxLength": 8,
"description": "Tickets, event page, the venue's own listing."
},
"start": {
"type": "string",
"format": "datetime"
},
"title": {
"type": "string",
"maxGraphemes": 300
},
"venue": {
"refs": [
"com.cultureblocs.defs#placeRef",
"com.cultureblocs.defs#strongRef"
],
"type": "union",
"description": "The venue profile record, or a named place when the venue has no CultureBlocs identity."
},
"works": {
"type": "array",
"items": {
"ref": "com.cultureblocs.defs#workRef",
"type": "ref"
},
"maxLength": 20,
"description": "Works shown or performed, where the listing is specific about them."
},
"status": {
"type": "string",
"knownValues": [
"scheduled",
"cancelled",
"postponed",
"soldout"
],
"maxGraphemes": 32
},
"billing": {
"type": "array",
"items": {
"ref": "com.cultureblocs.defs#creditRef",
"type": "ref"
},
"maxLength": 20,
"description": "Who is on: performers, artists, speakers, DJs. `did` links to a creative profile where one exists."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "When this record was first stamped. The only immutable field: everything else may be revised by publishing a new commit."
},
"description": {
"type": "string",
"maxGraphemes": 2000
},
"externalIds": {
"type": "array",
"items": {
"ref": "com.cultureblocs.defs#externalId",
"type": "ref"
},
"maxLength": 20
}
}
},
"description": "Something happening at a venue: a gig, screening, exhibition run, meetup. Deliberately thin — its job is to be a stable thing that beads can point at, not to be a calendar. Where a general-purpose event record exists elsewhere (e.g. the Lexicon Community calendar work), point at it with `event` rather than duplicating it here; this record then carries only what CultureBlocs needs."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}