org.simocracy.gathering
Schema Diff
+14 -0
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 6 non-breaking changes.
Breaking Changes (1)
- ConstraintAdded ConstraintAdded { vertex_id: "org.simocracy.gathering:body.collectionUri", sort: "maxLength", value: "5000" }
Non-Breaking Changes (6)
- AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.collectionUri" }
- AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.councilSims" }
- AddedVertex AddedVertex { vertex_id: "org.simocracy.gathering:body.councilSims:items" }
- AddedEdge AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.collectionUri", kind: "prop", name: Some("collectionUri") }
- AddedEdge AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.councilSims", kind: "prop", name: Some("councilSims") }
- AddedEdge AddedEdge { src: "org.simocracy.gathering:body.councilSims", tgt: "org.simocracy.gathering:body.councilSims:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "org.simocracy.gathering:body.collectionUri" }AddedVertex { vertex_id: "org.simocracy.gathering:body.councilSims" }AddedVertex { vertex_id: "org.simocracy.gathering:body.councilSims:items" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "org.simocracy.gathering:body.collectionUri", sort: "maxLength", value: "5000" }
Additional Notes
- Non-breaking: AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.collectionUri", kind: "prop", name: Some("collectionUri") }
- Non-breaking: AddedEdge { src: "org.simocracy.gathering:body", tgt: "org.simocracy.gathering:body.councilSims", kind: "prop", name: Some("councilSims") }
- Non-breaking: AddedEdge { src: "org.simocracy.gathering:body.councilSims", tgt: "org.simocracy.gathering:body.councilSims:items", kind: "items", name: None }
1
1
{
2
2
"id": "org.simocracy.gathering",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"name",
11
11
"gatheringType",
12
12
"status",
13
13
"createdAt"
14
14
],
15
15
"properties": {
16
16
"url": {
17
17
"type": "string",
18
18
"maxLength": 5000,
19
19
"description": "External link (e.g. Luma registration page)"
20
20
},
21
21
"name": {
22
22
"type": "string",
23
23
"maxLength": 3000,
24
24
"description": "Display name of the event",
25
25
"maxGraphemes": 300
26
26
},
27
27
"dates": {
28
28
"type": "string",
29
29
"maxLength": 1000,
30
30
"description": "Human-readable date range (e.g. March 14-15, 2026)",
31
31
"maxGraphemes": 100
32
32
},
33
33
"image": {
34
34
"type": "blob",
35
35
"accept": [
36
36
"image/png",
37
37
"image/jpeg",
38
38
"image/webp"
39
39
],
40
40
"maxSize": 1000000,
41
41
"description": "Cover image for the event (ATProto blob)"
42
42
},
43
43
"status": {
44
44
"type": "string",
45
45
"description": "Current status of the gathering",
46
46
"knownValues": [
47
47
"application",
48
48
"upcoming",
49
49
"active",
50
50
"completed"
51
51
]
52
52
},
53
53
"simSize": {
54
54
"type": "string",
55
55
"description": "Size of sim avatars in this gathering's world. large=48px, normal=32px (senate default), small=20px (ftc-sf default).",
56
56
"knownValues": [
57
57
"large",
58
58
"normal",
59
59
"small"
60
60
]
61
61
},
62
62
"appRoute": {
63
63
"type": "string",
64
64
"maxLength": 1000,
65
65
"description": "Internal app route path (e.g. /senate, /ftc-sf) for built-in events"
66
66
},
67
67
"location": {
68
68
"type": "string",
69
69
"maxLength": 3000,
70
70
"description": "Physical or virtual location",
71
71
"maxGraphemes": 300
72
72
},
73
73
"createdAt": {
74
74
"type": "string",
75
75
"format": "datetime",
76
76
"description": "Timestamp when the record was created"
77
77
},
78
+
"councilSims": {
79
+
"type": "array",
80
+
"items": {
81
+
"ref": "com.atproto.repo.strongRef",
82
+
"type": "ref"
83
+
},
84
+
"maxLength": 50,
85
+
"description": "Array of StrongRefs to sim records appointed to this gathering's council by the event creator."
86
+
},
78
87
"description": {
79
88
"type": "string",
80
89
"maxLength": 30000,
81
90
"description": "Full event description with details, agenda, etc.",
82
91
"maxGraphemes": 3000
83
92
},
93
+
"collectionUri": {
94
+
"type": "string",
95
+
"maxLength": 5000,
96
+
"description": "AT-URI of an org.hypercerts.collection record for this gathering's proposals."
97
+
},
84
98
"gatheringType": {
85
99
"type": "string",
86
100
"description": "Type of gathering",
87
101
"knownValues": [
88
102
"funding",
89
103
"governance",
90
104
"hybrid"
91
105
]
92
106
},
93
107
"buildingImageUrl": {
94
108
"type": "string",
95
109
"maxLength": 5000,
96
110
"description": "URL of the building/venue image for this gathering. Can be an absolute URL or a path relative to the app (e.g. /senate.png, /frontiertower.webp)."
97
111
},
98
112
"shortDescription": {
99
113
"type": "string",
100
114
"maxLength": 3000,
101
115
"description": "Brief summary for cards and previews",
102
116
"maxGraphemes": 300
103
117
},
104
118
"descriptionFacets": {
105
119
"type": "array",
106
120
"items": {
107
121
"ref": "app.bsky.richtext.facet",
108
122
"type": "ref"
109
123
},
110
124
"description": "Rich text facets for description"
111
125
},
112
126
"shortDescriptionFacets": {
113
127
"type": "array",
114
128
"items": {
115
129
"ref": "app.bsky.richtext.facet",
116
130
"type": "ref"
117
131
},
118
132
"description": "Rich text facets for shortDescription"
119
133
}
120
134
}
121
135
},
122
136
"description": "A governance or funding event that users can create and participate in."
123
137
}
124
138
},
125
139
"$type": "com.atproto.lexicon.schema",
126
140
"lexicon": 1
127
141
}