Ionosphere.tv
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: define AT Protocol lexicons for talk, speaker, concept, event

+216
+41
lexicons/tv/ionosphere/concept.json
··· 1 + { 2 + "lexicon": 1, 3 + "$type": "com.atproto.lexicon.schema", 4 + "id": "tv.ionosphere.concept", 5 + "revision": 1, 6 + "description": "A knowledge entity referenced in talk transcripts.", 7 + "defs": { 8 + "main": { 9 + "type": "record", 10 + "key": "any", 11 + "record": { 12 + "type": "object", 13 + "required": ["name"], 14 + "properties": { 15 + "name": { 16 + "type": "string", 17 + "description": "Canonical concept name." 18 + }, 19 + "aliases": { 20 + "type": "array", 21 + "items": { "type": "string" }, 22 + "description": "Alternative names for matching." 23 + }, 24 + "description": { 25 + "type": "string", 26 + "description": "Brief description of the concept." 27 + }, 28 + "wikidataId": { 29 + "type": "string", 30 + "description": "Wikidata Q-identifier (e.g., 'Q123456')." 31 + }, 32 + "url": { 33 + "type": "string", 34 + "format": "uri", 35 + "description": "Canonical external URL for the concept." 36 + } 37 + } 38 + } 39 + } 40 + } 41 + }
+56
lexicons/tv/ionosphere/event.json
··· 1 + { 2 + "lexicon": 1, 3 + "$type": "com.atproto.lexicon.schema", 4 + "id": "tv.ionosphere.event", 5 + "revision": 1, 6 + "description": "A conference or event whose talks are archived.", 7 + "defs": { 8 + "main": { 9 + "type": "record", 10 + "key": "any", 11 + "record": { 12 + "type": "object", 13 + "required": ["name", "startsAt", "endsAt"], 14 + "properties": { 15 + "name": { 16 + "type": "string", 17 + "description": "Event name." 18 + }, 19 + "description": { 20 + "type": "string", 21 + "description": "Event description." 22 + }, 23 + "location": { 24 + "type": "string", 25 + "description": "Venue and city." 26 + }, 27 + "startsAt": { 28 + "type": "string", 29 + "format": "datetime", 30 + "description": "Event start date (ISO 8601)." 31 + }, 32 + "endsAt": { 33 + "type": "string", 34 + "format": "datetime", 35 + "description": "Event end date (ISO 8601)." 36 + }, 37 + "tracks": { 38 + "type": "array", 39 + "items": { "type": "string" }, 40 + "description": "Room/track names." 41 + }, 42 + "scheduleRepo": { 43 + "type": "string", 44 + "format": "did", 45 + "description": "DID of the repo containing schedule records." 46 + }, 47 + "vodRepo": { 48 + "type": "string", 49 + "format": "did", 50 + "description": "DID of the repo containing VOD records." 51 + } 52 + } 53 + } 54 + } 55 + } 56 + }
+41
lexicons/tv/ionosphere/speaker.json
··· 1 + { 2 + "lexicon": 1, 3 + "$type": "com.atproto.lexicon.schema", 4 + "id": "tv.ionosphere.speaker", 5 + "revision": 1, 6 + "description": "A conference speaker.", 7 + "defs": { 8 + "main": { 9 + "type": "record", 10 + "key": "any", 11 + "record": { 12 + "type": "object", 13 + "required": ["name"], 14 + "properties": { 15 + "name": { 16 + "type": "string", 17 + "description": "Speaker display name." 18 + }, 19 + "handle": { 20 + "type": "string", 21 + "description": "AT Protocol handle (e.g., 'signez.fr')." 22 + }, 23 + "did": { 24 + "type": "string", 25 + "format": "did", 26 + "description": "Speaker's DID, if known." 27 + }, 28 + "bio": { 29 + "type": "string", 30 + "description": "Speaker bio." 31 + }, 32 + "affiliations": { 33 + "type": "array", 34 + "items": { "type": "string" }, 35 + "description": "Organizations, projects, or affiliations." 36 + } 37 + } 38 + } 39 + } 40 + } 41 + }
+78
lexicons/tv/ionosphere/talk.json
··· 1 + { 2 + "lexicon": 1, 3 + "$type": "com.atproto.lexicon.schema", 4 + "id": "tv.ionosphere.talk", 5 + "revision": 1, 6 + "description": "A conference talk with video reference and enriched transcript document.", 7 + "defs": { 8 + "main": { 9 + "type": "record", 10 + "key": "any", 11 + "record": { 12 + "type": "object", 13 + "required": ["title", "eventUri"], 14 + "properties": { 15 + "title": { 16 + "type": "string", 17 + "description": "Talk title." 18 + }, 19 + "document": { 20 + "type": "ref", 21 + "ref": "org.relationaltext.richtext.document", 22 + "description": "Enriched transcript document with temporal and semantic facets." 23 + }, 24 + "speakerUris": { 25 + "type": "array", 26 + "items": { "type": "string", "format": "at-uri" }, 27 + "description": "AT URIs of tv.ionosphere.speaker records." 28 + }, 29 + "videoUri": { 30 + "type": "string", 31 + "format": "at-uri", 32 + "description": "AT URI to place.stream.video record." 33 + }, 34 + "scheduleUri": { 35 + "type": "string", 36 + "format": "at-uri", 37 + "description": "AT URI to source community.lexicon.calendar.event record." 38 + }, 39 + "eventUri": { 40 + "type": "string", 41 + "format": "at-uri", 42 + "description": "AT URI to tv.ionosphere.event record." 43 + }, 44 + "room": { 45 + "type": "string", 46 + "description": "Room or track name." 47 + }, 48 + "category": { 49 + "type": "string", 50 + "description": "Talk category from schedule." 51 + }, 52 + "talkType": { 53 + "type": "string", 54 + "description": "Type: presentation, lightning-talk, panel, workshop, etc." 55 + }, 56 + "startsAt": { 57 + "type": "string", 58 + "format": "datetime", 59 + "description": "Scheduled start time (ISO 8601)." 60 + }, 61 + "endsAt": { 62 + "type": "string", 63 + "format": "datetime", 64 + "description": "Scheduled end time (ISO 8601)." 65 + }, 66 + "duration": { 67 + "type": "integer", 68 + "description": "Video duration in nanoseconds (from VOD record)." 69 + }, 70 + "description": { 71 + "type": "string", 72 + "description": "Talk description/abstract from schedule." 73 + } 74 + } 75 + } 76 + } 77 + } 78 + }