win.tomo-x.rogaining.defs
Schema Diff
+48 -7
Compatibility Analysis
Breaking Changes Detected
6 breaking changes, 17 non-breaking changes.
Breaking Changes (6)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "win.tomo-x.rogaining.defs#rankingEntry", src: "win.tomo-x.rogaining.defs#rankingEntry", tgt: "win.tomo-x.rogaining.defs#rankingEntry.team", kind: "prop", name: Some("team") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "win.tomo-x.rogaining.defs#submissionView", src: "win.tomo-x.rogaining.defs#submissionView", tgt: "win.tomo-x.rogaining.defs#submissionView.team", kind: "prop", name: Some("team") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "win.tomo-x.rogaining.defs#rankingEntry", src: "win.tomo-x.rogaining.defs#rankingEntry", tgt: "win.tomo-x.rogaining.defs#rankingEntry.participant", kind: "prop", name: Some("participant") }
- RemovedVertex RemovedVertex { vertex_id: "win.tomo-x.rogaining.defs#rankingEntry.participant" }
- RemovedEdge RemovedEdge { src: "win.tomo-x.rogaining.defs#rankingEntry.participant", tgt: "app.bsky.actor.defs#profileViewBasic", kind: "ref", name: None }
- ConstraintTightened ConstraintTightened { vertex_id: "win.tomo-x.rogaining.defs#submissionView.status", sort: "knownValues", old_value: "[\"pending\",\"approved\"]", new_value: "[\"pending\",\"approved\",\"rejected\"]" }
Non-Breaking Changes (17)
- AddedVertex AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#checkpointView.imageUrl" }
- AddedVertex AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#checkpointView.internalImageUrls" }
- AddedVertex AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#checkpointView.internalImageUrls:items" }
- AddedVertex AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#rankingEntry.team" }
- AddedVertex AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#submissionView.distanceMeters" }
- AddedVertex AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#submissionView.reason" }
- AddedVertex AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#submissionView.rejectionUri" }
- AddedVertex AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#submissionView.team" }
- AddedVertex AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#submissionView.withinEventPeriod" }
- AddedEdge AddedEdge { src: "win.tomo-x.rogaining.defs#checkpointView", tgt: "win.tomo-x.rogaining.defs#checkpointView.imageUrl", kind: "prop", name: Some("imageUrl") }
- AddedEdge AddedEdge { src: "win.tomo-x.rogaining.defs#checkpointView", tgt: "win.tomo-x.rogaining.defs#checkpointView.internalImageUrls", kind: "prop", name: Some("internalImageUrls") }
- AddedEdge AddedEdge { src: "win.tomo-x.rogaining.defs#checkpointView.internalImageUrls", tgt: "win.tomo-x.rogaining.defs#checkpointView.internalImageUrls:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "win.tomo-x.rogaining.defs#rankingEntry.team", tgt: "win.tomo-x.rogaining.defs#teamView", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "win.tomo-x.rogaining.defs#submissionView", tgt: "win.tomo-x.rogaining.defs#submissionView.distanceMeters", kind: "prop", name: Some("distanceMeters") }
- AddedEdge AddedEdge { src: "win.tomo-x.rogaining.defs#submissionView", tgt: "win.tomo-x.rogaining.defs#submissionView.reason", kind: "prop", name: Some("reason") }
- AddedEdge AddedEdge { src: "win.tomo-x.rogaining.defs#submissionView", tgt: "win.tomo-x.rogaining.defs#submissionView.rejectionUri", kind: "prop", name: Some("rejectionUri") }
- AddedEdge AddedEdge { src: "win.tomo-x.rogaining.defs#submissionView", tgt: "win.tomo-x.rogaining.defs#submissionView.withinEventPeriod", kind: "prop", name: Some("withinEventPeriod") }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "win.tomo-x.rogaining.defs#rankingEntry.participant" }
Added Elements
AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#checkpointView.imageUrl" }AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#checkpointView.internalImageUrls" }AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#checkpointView.internalImageUrls:items" }AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#rankingEntry.team" }AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#submissionView.distanceMeters" }AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#submissionView.reason" }AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#submissionView.rejectionUri" }AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#submissionView.team" }AddedVertex { vertex_id: "win.tomo-x.rogaining.defs#submissionView.withinEventPeriod" }
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "win.tomo-x.rogaining.defs#submissionView.status", sort: "knownValues", old_value: "[\"pending\",\"approved\"]", new_value: "[\"pending\",\"approved\",\"rejected\"]" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "win.tomo-x.rogaining.defs#rankingEntry", src: "win.tomo-x.rogaining.defs#rankingEntry", tgt: "win.tomo-x.rogaining.defs#rankingEntry.team", kind: "prop", name: Some("team") }
- Breaking: RequiredEdgeAdded { vertex_id: "win.tomo-x.rogaining.defs#submissionView", src: "win.tomo-x.rogaining.defs#submissionView", tgt: "win.tomo-x.rogaining.defs#submissionView.team", kind: "prop", name: Some("team") }
- Breaking: RequiredEdgeRemoved { vertex_id: "win.tomo-x.rogaining.defs#rankingEntry", src: "win.tomo-x.rogaining.defs#rankingEntry", tgt: "win.tomo-x.rogaining.defs#rankingEntry.participant", kind: "prop", name: Some("participant") }
- Breaking: RemovedEdge { src: "win.tomo-x.rogaining.defs#rankingEntry.participant", tgt: "app.bsky.actor.defs#profileViewBasic", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "win.tomo-x.rogaining.defs#checkpointView", tgt: "win.tomo-x.rogaining.defs#checkpointView.imageUrl", kind: "prop", name: Some("imageUrl") }
- Non-breaking: AddedEdge { src: "win.tomo-x.rogaining.defs#checkpointView", tgt: "win.tomo-x.rogaining.defs#checkpointView.internalImageUrls", kind: "prop", name: Some("internalImageUrls") }
- Non-breaking: AddedEdge { src: "win.tomo-x.rogaining.defs#checkpointView.internalImageUrls", tgt: "win.tomo-x.rogaining.defs#checkpointView.internalImageUrls:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "win.tomo-x.rogaining.defs#rankingEntry.team", tgt: "win.tomo-x.rogaining.defs#teamView", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "win.tomo-x.rogaining.defs#submissionView", tgt: "win.tomo-x.rogaining.defs#submissionView.distanceMeters", kind: "prop", name: Some("distanceMeters") }
- Non-breaking: AddedEdge { src: "win.tomo-x.rogaining.defs#submissionView", tgt: "win.tomo-x.rogaining.defs#submissionView.reason", kind: "prop", name: Some("reason") }
- Non-breaking: AddedEdge { src: "win.tomo-x.rogaining.defs#submissionView", tgt: "win.tomo-x.rogaining.defs#submissionView.rejectionUri", kind: "prop", name: Some("rejectionUri") }
- Non-breaking: AddedEdge { src: "win.tomo-x.rogaining.defs#submissionView", tgt: "win.tomo-x.rogaining.defs#submissionView.withinEventPeriod", kind: "prop", name: Some("withinEventPeriod") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"checkpointView": {
5
5
"properties": {
6
6
"cid": {
7
7
"format": "cid",
8
8
"type": "string"
9
9
},
10
+
"imageUrl": {
11
+
"description": "URL of the checkpoint image.",
12
+
"format": "uri",
13
+
"type": "string"
14
+
},
10
15
"indexedAt": {
11
16
"format": "datetime",
12
17
"type": "string"
13
18
},
19
+
"internalImageUrls": {
20
+
"description": "URLs of the internal images. Only returned to the event's author.",
21
+
"items": {
22
+
"format": "uri",
23
+
"type": "string"
24
+
},
25
+
"maxLength": 10,
26
+
"type": "array"
27
+
},
14
28
"record": {
15
29
"description": "The win.tomo-x.rogaining.checkpoint record.",
16
30
"type": "unknown"
17
31
},
18
32
"uri": {
19
33
"format": "at-uri",
20
34
"type": "string"
21
35
}
22
36
},
23
37
"required": [
24
38
"uri",
25
39
"cid",
26
40
"record",
27
41
"indexedAt"
28
42
],
29
43
"type": "object"
30
44
},
31
45
"eventView": {
32
46
"properties": {
33
47
"approver": {
34
48
"ref": "app.bsky.actor.defs#profileViewBasic",
35
49
"type": "ref"
36
50
},
37
51
"author": {
38
52
"ref": "app.bsky.actor.defs#profileViewBasic",
39
53
"type": "ref"
40
54
},
41
55
"checkpointCount": {
42
56
"minimum": 0,
43
57
"type": "integer"
44
58
},
45
59
"cid": {
46
60
"format": "cid",
47
61
"type": "string"
48
62
},
49
63
"imageUrl": {
50
64
"format": "uri",
51
65
"type": "string"
52
66
},
53
67
"indexedAt": {
54
68
"format": "datetime",
55
69
"type": "string"
56
70
},
57
71
"participantCount": {
58
72
"minimum": 0,
59
73
"type": "integer"
60
74
},
61
75
"record": {
62
76
"description": "The win.tomo-x.rogaining.event record.",
63
77
"type": "unknown"
64
78
},
65
79
"teamCount": {
66
80
"minimum": 0,
67
81
"type": "integer"
68
82
},
69
83
"uri": {
70
84
"format": "at-uri",
71
85
"type": "string"
72
86
}
73
87
},
74
88
"required": [
75
89
"uri",
76
90
"cid",
77
91
"author",
78
92
"record",
79
93
"indexedAt"
80
94
],
81
95
"type": "object"
82
96
},
83
97
"location": {
84
98
"description": "Coordinates as decimal degrees encoded as strings (lexicon has no float type), e.g. \"35.681236\".",
85
99
"properties": {
86
100
"latitude": {
87
101
"maxLength": 20,
88
102
"type": "string"
89
103
},
90
104
"longitude": {
91
105
"maxLength": 20,
92
106
"type": "string"
93
107
}
94
108
},
95
109
"required": [
96
110
"latitude",
97
111
"longitude"
98
112
],
99
113
"type": "object"
100
114
},
101
115
"rankingEntry": {
102
116
"properties": {
103
117
"approvedCount": {
118
+
"description": "Number of distinct non-goal checkpoints with an approved submission.",
104
119
"minimum": 0,
105
120
"type": "integer"
106
121
},
107
-
"participant": {
108
-
"ref": "app.bsky.actor.defs#profileViewBasic",
109
-
"type": "ref"
110
-
},
111
122
"rank": {
112
123
"minimum": 1,
113
124
"type": "integer"
114
125
},
126
+
"team": {
127
+
"ref": "win.tomo-x.rogaining.defs#teamView",
128
+
"type": "ref"
129
+
},
115
130
"totalPoints": {
131
+
"description": "Sum of approved checkpoint points and the team's finish-time bonus.",
116
132
"minimum": 0,
117
133
"type": "integer"
118
134
}
119
135
},
120
136
"required": [
121
-
"participant",
137
+
"team",
122
138
"rank",
123
139
"totalPoints",
124
140
"approvedCount"
125
141
],
126
142
"type": "object"
127
143
},
128
144
"submissionView": {
129
145
"properties": {
130
146
"approvalUri": {
131
147
"description": "AT-URI of the approve record, if approved.",
132
148
"format": "at-uri",
133
149
"type": "string"
134
150
},
135
151
"author": {
136
152
"ref": "app.bsky.actor.defs#profileViewBasic",
137
153
"type": "ref"
138
154
},
139
155
"cid": {
140
156
"format": "cid",
141
157
"type": "string"
142
158
},
159
+
"distanceMeters": {
160
+
"description": "Distance between the submitted location and the checkpoint, for the approver's review.",
161
+
"minimum": 0,
162
+
"type": "integer"
163
+
},
143
164
"indexedAt": {
144
165
"format": "datetime",
145
166
"type": "string"
146
167
},
147
168
"photoUrl": {
148
169
"format": "uri",
149
170
"type": "string"
150
171
},
172
+
"reason": {
173
+
"description": "The reason of the approve or reject record that decided the status.",
174
+
"type": "string"
175
+
},
151
176
"record": {
152
177
"description": "The win.tomo-x.rogaining.submit record.",
153
178
"type": "unknown"
154
179
},
180
+
"rejectionUri": {
181
+
"description": "AT-URI of the reject record, if rejected.",
182
+
"format": "at-uri",
183
+
"type": "string"
184
+
},
155
185
"status": {
156
-
"description": "approved when a valid approve record by the event's approver exists.",
186
+
"description": "Decided by one valid approve or reject record for the submission's current cid, made by the event's author or approver. The author's records take precedence over the approver's; among one account's records, the one with the newest createdAt wins. approved or rejected by that record, otherwise pending. Only approved submissions count for the ranking.",
157
187
"knownValues": [
158
188
"pending",
159
-
"approved"
189
+
"approved",
190
+
"rejected"
160
191
],
161
192
"type": "string"
162
193
},
194
+
"team": {
195
+
"description": "The team the author belongs to in this event.",
196
+
"format": "at-uri",
197
+
"type": "string"
198
+
},
163
199
"uri": {
164
200
"format": "at-uri",
165
201
"type": "string"
202
+
},
203
+
"withinEventPeriod": {
204
+
"description": "Whether the submission's createdAt is between the event's startsAt and endsAt, for the approver's review.",
205
+
"type": "boolean"
166
206
}
167
207
},
168
208
"required": [
169
209
"uri",
170
210
"cid",
171
211
"author",
212
+
"team",
172
213
"record",
173
214
"status",
174
215
"indexedAt"
175
216
],
176
217
"type": "object"
177
218
},
178
219
"teamView": {
179
220
"properties": {
180
221
"cid": {
181
222
"format": "cid",
182
223
"type": "string"
183
224
},
184
225
"indexedAt": {
185
226
"format": "datetime",
186
227
"type": "string"
187
228
},
188
229
"members": {
189
230
"description": "Profiles of the team members.",
190
231
"items": {
191
232
"ref": "app.bsky.actor.defs#profileViewBasic",
192
233
"type": "ref"
193
234
},
194
235
"type": "array"
195
236
},
196
237
"record": {
197
238
"description": "The win.tomo-x.rogaining.team record.",
198
239
"type": "unknown"
199
240
},
200
241
"uri": {
201
242
"format": "at-uri",
202
243
"type": "string"
203
244
}
204
245
},
205
246
"required": [
206
247
"uri",
207
248
"cid",
208
249
"record",
209
250
"members",
210
251
"indexedAt"
211
252
],
212
253
"type": "object"
213
254
}
214
255
},
215
256
"id": "win.tomo-x.rogaining.defs",
216
257
"lexicon": 1
217
258
}