id.sifa.profile.presentationDelivery

sifa.id

Schema Diff

+15 -1

From

CID
bafyreiawrb4hhpq...
Indexed At
2026-06-19 22:54 UTC
View this version

To

CID
bafyreiak5smhlkd...
Indexed At
2026-07-18 22:50 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 8 non-breaking changes.

Non-Breaking Changes (8)
  • AddedVertex AddedVertex { vertex_id: "community.lexicon.location.address" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.presentationDelivery:body.address" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.presentationDelivery:body.coSpeakers" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.presentationDelivery:body.coSpeakers:items" }
  • AddedEdge AddedEdge { src: "id.sifa.profile.presentationDelivery:body", tgt: "id.sifa.profile.presentationDelivery:body.address", kind: "prop", name: Some("address") }
  • AddedEdge AddedEdge { src: "id.sifa.profile.presentationDelivery:body", tgt: "id.sifa.profile.presentationDelivery:body.coSpeakers", kind: "prop", name: Some("coSpeakers") }
  • AddedEdge AddedEdge { src: "id.sifa.profile.presentationDelivery:body.address", tgt: "community.lexicon.location.address", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "id.sifa.profile.presentationDelivery:body.coSpeakers", tgt: "id.sifa.profile.presentationDelivery:body.coSpeakers:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "community.lexicon.location.address" }
  • AddedVertex { vertex_id: "id.sifa.profile.presentationDelivery:body.address" }
  • AddedVertex { vertex_id: "id.sifa.profile.presentationDelivery:body.coSpeakers" }
  • AddedVertex { vertex_id: "id.sifa.profile.presentationDelivery:body.coSpeakers:items" }

Additional Notes

  • Non-breaking: AddedEdge { src: "id.sifa.profile.presentationDelivery:body", tgt: "id.sifa.profile.presentationDelivery:body.address", kind: "prop", name: Some("address") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.presentationDelivery:body", tgt: "id.sifa.profile.presentationDelivery:body.coSpeakers", kind: "prop", name: Some("coSpeakers") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.presentationDelivery:body.address", tgt: "community.lexicon.location.address", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.presentationDelivery:body.coSpeakers", tgt: "id.sifa.profile.presentationDelivery:body.coSpeakers:items", kind: "items", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "Record representing a single occasion on which a presentation was delivered. This is the entry shown on a profile's activity timeline. At least one of presentationRef, title, or eventName is expected, enforced at the app layer.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 +
          "address": {
10 +
            "description": "Structured delivery location. Sifa enforces ISO 3166-1 alpha-2 country codes at the app layer and surfaces country (for a flag) and locality (city); region, postalCode, and street are unused for deliveries. Takes precedence over the legacy location string when present.",
11 +
            "ref": "community.lexicon.location.address",
12 +
            "type": "ref"
13 +
          },
14 +
          "coSpeakers": {
15 +
            "description": "DIDs of co-speakers who presented alongside the author at this occasion. Any atproto account is allowed; hydrated to profile cards on read and linked to the co-speaker's Sifa profile.",
16 +
            "items": {
17 +
              "format": "did",
18 +
              "type": "string"
19 +
            },
20 +
            "maxLength": 20,
21 +
            "type": "array"
22 +
          },
9 23
          "createdAt": {
10 24
            "description": "Client-declared timestamp when this record was originally created.",
11 25
            "format": "datetime",
12 26
            "type": "string"
13 27
          },
14 28
          "date": {
15 29
            "description": "Calendar date of this delivery as YYYY-MM-DD (day only, no time). Future dates are allowed for upcoming deliveries. The day-only shape is enforced at the app layer. On the linked branch, derived from the event's startsAt in the event's own offset.",
16 30
            "maxLength": 10,
17 31
            "type": "string"
18 32
          },
19 33
          "eventName": {
20 34
            "description": "Name of the event or venue. On the linked branch, hydrated from the calendar event's name.",
21 35
            "maxGraphemes": 300,
22 36
            "maxLength": 3000,
23 37
            "type": "string"
24 38
          },
25 39
          "eventRef": {
26 40
            "description": "Optional reference to a community.lexicon.calendar.event for this occasion. Display fields are hydrated live from the target by AT-URI, with the stored fields as a fallback when the target is unavailable.",
27 41
            "ref": "id.sifa.defs#externalRecordRef",
28 42
            "type": "ref"
29 43
          },
30 44
          "links": {
31 45
            "description": "Links specific to this delivery, such as the recording of this occasion.",
32 46
            "items": {
33 47
              "ref": "id.sifa.defs#presentationLink",
34 48
              "type": "ref"
35 49
            },
36 50
            "maxLength": 20,
37 51
            "type": "array"
38 52
          },
39 53
          "location": {
40 -
            "description": "Display location (city, country, or venue). On the linked branch, composed from the calendar event's structured locations.",
54 +
            "description": "Legacy free-text display location (city, country, or venue), retained for dual-read. Prefer the structured address field. On the linked branch, composed from the calendar event's structured locations.",
41 55
            "maxGraphemes": 256,
42 56
            "maxLength": 2560,
43 57
            "type": "string"
44 58
          },
45 59
          "mode": {
46 60
            "description": "Whether this delivery was in person, virtual, or hybrid. Stores the full community.lexicon.calendar.event mode token; absent means in person.",
47 61
            "knownValues": [
48 62
              "community.lexicon.calendar.event#inperson",
49 63
              "community.lexicon.calendar.event#virtual",
50 64
              "community.lexicon.calendar.event#hybrid"
51 65
            ],
52 66
            "type": "string"
53 67
          },
54 68
          "presentationRef": {
55 69
            "description": "Optional reference to the id.sifa.profile.presentation (the content) delivered here. When set, title, duration, and audiences are taken from it.",
56 70
            "ref": "id.sifa.defs#externalRecordRef",
57 71
            "type": "ref"
58 72
          },
59 73
          "role": {
60 74
            "description": "The presenter's role in this delivery. Open set; see id.sifa.defs#presentationRole.",
61 75
            "knownValues": [
62 76
              "id.sifa.defs#presenter",
63 77
              "id.sifa.defs#panelist",
64 78
              "id.sifa.defs#keynote",
65 79
              "id.sifa.defs#workshop",
66 80
              "id.sifa.defs#host"
67 81
            ],
68 82
            "maxGraphemes": 64,
69 83
            "maxLength": 640,
70 84
            "type": "string"
71 85
          },
72 86
          "status": {
73 87
            "description": "Scheduling status of this delivery, typically hydrated from a linked calendar event. Stores the full community.lexicon.calendar.event status token. Consumers should surface cancelled and postponed states.",
74 88
            "knownValues": [
75 89
              "community.lexicon.calendar.event#scheduled",
76 90
              "community.lexicon.calendar.event#cancelled",
77 91
              "community.lexicon.calendar.event#postponed",
78 92
              "community.lexicon.calendar.event#rescheduled",
79 93
              "community.lexicon.calendar.event#planned"
80 94
            ],
81 95
            "type": "string"
82 96
          },
83 97
          "title": {
84 98
            "description": "Fallback title for this delivery, used when no presentationRef is set.",
85 99
            "maxGraphemes": 300,
86 100
            "maxLength": 3000,
87 101
            "type": "string"
88 102
          }
89 103
        },
90 104
        "required": [
91 105
          "createdAt"
92 106
        ],
93 107
        "type": "object"
94 108
      },
95 109
      "type": "record"
96 110
    }
97 111
  },
98 112
  "description": "An occasion on which a person delivered a presentation: a specific talk, panel, workshop, or demo at an event. References the reusable id.sifa.profile.presentation content and, optionally, the calendar event.",
99 113
  "id": "id.sifa.profile.presentationDelivery",
100 114
  "lexicon": 1
101 115
}

Compare Other Versions

Lexicon Garden

@