{
"id": "org.devcon.event.vone",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"start_utc",
"end_utc",
"title",
"description",
"organizer",
"location"
],
"properties": {
"title": {
"type": "string",
"description": "Title of the event"
},
"end_utc": {
"type": "string",
"format": "datetime",
"description": "End time of the entire event (use the 'timeslots' field for granular scheduling)"
},
"location": {
"ref": "lex:org.devcon.event.vone#location",
"type": "ref"
},
"metadata": {
"ref": "lex:org.devcon.event.vone#metadata",
"type": "ref"
},
"organizer": {
"ref": "lex:org.devcon.event.vone#organizer",
"type": "ref"
},
"start_utc": {
"type": "string",
"format": "datetime",
"description": "Start time of the entire event (use the 'timeslots' field for granular scheduling)"
},
"timeslots": {
"type": "array",
"items": {
"ref": "lex:org.devcon.event.vone#timeslot",
"type": "ref"
},
"description": "Optional event timeslots - this may be useful for events that span multiple days, need to specify timeslots for each day, or otherwise need more granular scheduling."
},
"description": {
"type": "string",
"description": "Description of the event"
}
}
}
},
"location": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the location"
},
"address": {
"type": "string",
"description": "Address of the location"
}
}
},
"metadata": {
"type": "object",
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Useful when other options dont apply or for searching"
},
"type": {
"type": "string",
"description": "Type of event, e.g. conference, talks, hackathon, etc."
},
"socials": {
"type": "array",
"items": {
"ref": "lex:org.devcon.event.vone#social_platform",
"type": "ref"
},
"description": "Array of social media platforms with platform name and URL."
},
"website": {
"type": "string",
"description": "Website/URL of the event"
},
"capacity": {
"type": "integer",
"description": "How many people can attend the event"
},
"sold_out": {
"type": "boolean",
"description": "Whether the event is sold out"
},
"image_url": {
"type": "string",
"description": "Url referencing an image for this event. Image should be .png, squared, and we suggest at least 1024x1024px."
},
"categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "Categories of the event (e.g. defi, privacy, security, etc.)"
},
"expertise_level": {
"enum": [
"all welcome",
"beginner",
"intermediate",
"expert",
"other"
],
"type": "string",
"description": "Expertise level of the event"
},
"requires_ticket": {
"type": "boolean",
"description": "Whether the event requires tickets"
}
},
"description": "Optional fields that can be used to provide less pertinent information about the event"
},
"timeslot": {
"type": "object",
"required": [
"start_utc",
"end_utc",
"title"
],
"properties": {
"title": {
"type": "string",
"description": "Title of the timeslot"
},
"end_utc": {
"type": "string",
"format": "datetime",
"description": "End of the timeslot"
},
"event_uri": {
"type": "string",
"description": "If the timeslot is a more intricate/detailed event that needs more than the basic title and description, this would refer to the atproto record key of that event. The referenced event should follow the same parent schema (org.devcon.event.v1)"
},
"start_utc": {
"type": "string",
"format": "datetime",
"description": "Start of the timeslot"
},
"description": {
"type": "string",
"description": "Description of the timeslot"
}
}
},
"organizer": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the organizer"
},
"contact": {
"type": "string",
"description": "Contact of the organizer (email, twitter, etc.)"
}
}
},
"social_platform": {
"type": "object",
"required": [
"platform",
"url"
],
"properties": {
"url": {
"type": "string"
},
"platform": {
"type": "string"
}
}
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}