com.cultureblocs.defs
Schema Diff
+82 -0
Compatibility Analysis
Breaking Changes Detected
4 breaking changes, 17 non-breaking changes.
Breaking Changes (4)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.cultureblocs.defs#creditRef", src: "com.cultureblocs.defs#creditRef", tgt: "com.cultureblocs.defs#creditRef.name", kind: "prop", name: Some("name") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.cultureblocs.defs#didRef", src: "com.cultureblocs.defs#didRef", tgt: "com.cultureblocs.defs#didRef.did", kind: "prop", name: Some("did") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.cultureblocs.defs#externalId", src: "com.cultureblocs.defs#externalId", tgt: "com.cultureblocs.defs#externalId.scheme", kind: "prop", name: Some("scheme") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.cultureblocs.defs#externalId", src: "com.cultureblocs.defs#externalId", tgt: "com.cultureblocs.defs#externalId.id", kind: "prop", name: Some("id") }
Non-Breaking Changes (17)
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#creditRef" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#creditRef.did" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#creditRef.name" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#creditRef.role" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#didRef" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#didRef.did" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#didRef.name" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#externalId" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#externalId.id" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#externalId.scheme" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#externalId.uri" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#workRef.creatorDid" }
- AddedEdge AddedEdge { src: "com.cultureblocs.defs#creditRef", tgt: "com.cultureblocs.defs#creditRef.did", kind: "prop", name: Some("did") }
- AddedEdge AddedEdge { src: "com.cultureblocs.defs#creditRef", tgt: "com.cultureblocs.defs#creditRef.role", kind: "prop", name: Some("role") }
- AddedEdge AddedEdge { src: "com.cultureblocs.defs#didRef", tgt: "com.cultureblocs.defs#didRef.name", kind: "prop", name: Some("name") }
- AddedEdge AddedEdge { src: "com.cultureblocs.defs#externalId", tgt: "com.cultureblocs.defs#externalId.uri", kind: "prop", name: Some("uri") }
- AddedEdge AddedEdge { src: "com.cultureblocs.defs#workRef", tgt: "com.cultureblocs.defs#workRef.creatorDid", kind: "prop", name: Some("creatorDid") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.cultureblocs.defs#creditRef" }AddedVertex { vertex_id: "com.cultureblocs.defs#creditRef.did" }AddedVertex { vertex_id: "com.cultureblocs.defs#creditRef.name" }AddedVertex { vertex_id: "com.cultureblocs.defs#creditRef.role" }AddedVertex { vertex_id: "com.cultureblocs.defs#didRef" }AddedVertex { vertex_id: "com.cultureblocs.defs#didRef.did" }AddedVertex { vertex_id: "com.cultureblocs.defs#didRef.name" }AddedVertex { vertex_id: "com.cultureblocs.defs#externalId" }AddedVertex { vertex_id: "com.cultureblocs.defs#externalId.id" }AddedVertex { vertex_id: "com.cultureblocs.defs#externalId.scheme" }AddedVertex { vertex_id: "com.cultureblocs.defs#externalId.uri" }AddedVertex { vertex_id: "com.cultureblocs.defs#workRef.creatorDid" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "com.cultureblocs.defs#didRef", src: "com.cultureblocs.defs#didRef", tgt: "com.cultureblocs.defs#didRef.did", kind: "prop", name: Some("did") }
- Breaking: RequiredEdgeAdded { vertex_id: "com.cultureblocs.defs#creditRef", src: "com.cultureblocs.defs#creditRef", tgt: "com.cultureblocs.defs#creditRef.name", kind: "prop", name: Some("name") }
- Breaking: RequiredEdgeAdded { vertex_id: "com.cultureblocs.defs#externalId", src: "com.cultureblocs.defs#externalId", tgt: "com.cultureblocs.defs#externalId.scheme", kind: "prop", name: Some("scheme") }
- Breaking: RequiredEdgeAdded { vertex_id: "com.cultureblocs.defs#externalId", src: "com.cultureblocs.defs#externalId", tgt: "com.cultureblocs.defs#externalId.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "com.cultureblocs.defs#creditRef", tgt: "com.cultureblocs.defs#creditRef.did", kind: "prop", name: Some("did") }
- Non-breaking: AddedEdge { src: "com.cultureblocs.defs#creditRef", tgt: "com.cultureblocs.defs#creditRef.role", kind: "prop", name: Some("role") }
- Non-breaking: AddedEdge { src: "com.cultureblocs.defs#didRef", tgt: "com.cultureblocs.defs#didRef.name", kind: "prop", name: Some("name") }
- Non-breaking: AddedEdge { src: "com.cultureblocs.defs#externalId", tgt: "com.cultureblocs.defs#externalId.uri", kind: "prop", name: Some("uri") }
- Non-breaking: AddedEdge { src: "com.cultureblocs.defs#workRef", tgt: "com.cultureblocs.defs#workRef.creatorDid", kind: "prop", name: Some("creatorDid") }
1
1
{
2
2
"id": "com.cultureblocs.defs",
3
3
"defs": {
4
4
"geo": {
5
5
"type": "object",
6
6
"required": [
7
7
"lat",
8
8
"lng",
9
9
"precision"
10
10
],
11
11
"properties": {
12
12
"lat": {
13
13
"type": "number"
14
14
},
15
15
"lng": {
16
16
"type": "number"
17
17
},
18
18
"precision": {
19
19
"type": "string",
20
20
"description": "Declared coordinate fuzzing level. Coordinates MUST already be fuzzed to this precision before the record leaves Tier 0.",
21
21
"knownValues": [
22
22
"exact",
23
23
"100m",
24
24
"1km",
25
25
"city"
26
26
]
27
27
}
28
28
}
29
29
},
30
+
"didRef": {
31
+
"type": "object",
32
+
"required": [
33
+
"did"
34
+
],
35
+
"properties": {
36
+
"did": {
37
+
"type": "string",
38
+
"format": "did"
39
+
},
40
+
"name": {
41
+
"type": "string",
42
+
"maxGraphemes": 300
43
+
}
44
+
},
45
+
"description": "A person or organisation by DID, with a descriptive fallback name."
46
+
},
30
47
"linkRef": {
31
48
"type": "object",
32
49
"required": [
33
50
"uri"
34
51
],
35
52
"properties": {
36
53
"uri": {
37
54
"type": "string",
38
55
"format": "uri"
39
56
},
40
57
"title": {
41
58
"type": "string",
42
59
"maxGraphemes": 300
43
60
}
44
61
},
45
62
"description": "External link attached to a bead or strand: event page, venue page, ticket listing."
46
63
},
47
64
"workRef": {
48
65
"type": "object",
49
66
"properties": {
50
67
"date": {
51
68
"type": "string",
52
69
"description": "Freeform creation date, e.g. '1972' or 'c. 1889'",
53
70
"maxGraphemes": 100
54
71
},
55
72
"image": {
56
73
"ref": "#mediaRef",
57
74
"type": "ref"
58
75
},
59
76
"title": {
60
77
"type": "string",
61
78
"maxGraphemes": 500
62
79
},
63
80
"creator": {
64
81
"type": "string",
65
82
"maxGraphemes": 300
66
83
},
67
84
"wikidata": {
68
85
"type": "string",
69
86
"description": "Wikidata QID, e.g. Q1892745"
70
87
},
71
88
"accession": {
72
89
"ref": "#accessionRef",
73
90
"type": "ref"
74
91
},
75
92
"linkedArt": {
76
93
"type": "string",
77
94
"format": "uri",
78
95
"description": "Linked Art object URI"
96
+
},
97
+
"creatorDid": {
98
+
"type": "string",
99
+
"format": "did",
100
+
"description": "DID of the creative who made this work, when known. The `creator` string remains the descriptive fallback."
79
101
}
80
102
},
81
103
"description": "Reference to an artwork/creative work. At least one resolvable ID or a descriptive fallback (title)."
82
104
},
83
105
"mediaRef": {
84
106
"type": "object",
85
107
"required": [
86
108
"uri"
87
109
],
88
110
"properties": {
89
111
"alt": {
90
112
"type": "string",
91
113
"maxGraphemes": 1000
92
114
},
93
115
"uri": {
94
116
"type": "string",
95
117
"format": "uri"
96
118
},
97
119
"mime": {
98
120
"type": "string",
99
121
"maxGraphemes": 100
100
122
}
101
123
},
102
124
"description": "Tier 0/1 media reference. Replaced by an atproto blob at promotion time."
103
125
},
104
126
"placeRef": {
105
127
"type": "object",
106
128
"properties": {
107
129
"did": {
108
130
"type": "string",
109
131
"format": "did",
110
132
"description": "Venue DID if it has an ATProto account"
111
133
},
112
134
"geo": {
113
135
"ref": "#geo",
114
136
"type": "ref"
115
137
},
116
138
"name": {
117
139
"type": "string",
118
140
"maxGraphemes": 300
119
141
}
120
142
},
121
143
"description": "A venue with an ATProto identity, or an ad-hoc named place."
122
144
},
145
+
"creditRef": {
146
+
"type": "object",
147
+
"required": [
148
+
"name"
149
+
],
150
+
"properties": {
151
+
"did": {
152
+
"type": "string",
153
+
"format": "did"
154
+
},
155
+
"name": {
156
+
"type": "string",
157
+
"maxGraphemes": 300
158
+
},
159
+
"role": {
160
+
"type": "string",
161
+
"maxGraphemes": 100
162
+
}
163
+
},
164
+
"description": "A named contributor. `role` is deliberately freeform: role vocabularies differ per industry and belong in referencing layers, not in this schema."
165
+
},
123
166
"strongRef": {
124
167
"type": "object",
125
168
"required": [
126
169
"uri"
127
170
],
128
171
"properties": {
129
172
"cid": {
130
173
"type": "string"
131
174
},
132
175
"uri": {
133
176
"type": "string",
134
177
"format": "uri"
135
178
}
136
179
},
137
180
"description": "Local stand-in for com.atproto.repo.strongRef"
138
181
},
182
+
"externalId": {
183
+
"type": "object",
184
+
"required": [
185
+
"scheme",
186
+
"id"
187
+
],
188
+
"properties": {
189
+
"id": {
190
+
"type": "string",
191
+
"maxGraphemes": 200
192
+
},
193
+
"uri": {
194
+
"type": "string",
195
+
"format": "uri",
196
+
"description": "Resolvable URL for this identifier, where one exists."
197
+
},
198
+
"scheme": {
199
+
"type": "string",
200
+
"knownValues": [
201
+
"isni",
202
+
"ipi",
203
+
"ipn",
204
+
"orcid",
205
+
"wikidata",
206
+
"musicbrainz",
207
+
"auracle",
208
+
"isrc",
209
+
"iswc",
210
+
"isan",
211
+
"doi",
212
+
"viaf",
213
+
"discogs",
214
+
"rsl"
215
+
],
216
+
"maxGraphemes": 64
217
+
}
218
+
},
219
+
"description": "An identifier for this subject in another system. Registries are peers: no scheme is privileged, and knownValues is advisory so new schemes need no schema change."
220
+
},
139
221
"provenance": {
140
222
"type": "object",
141
223
"required": [
142
224
"app",
143
225
"mintedAt"
144
226
],
145
227
"properties": {
146
228
"app": {
147
229
"type": "string",
148
230
"description": "Producing app id, e.g. 'culturebloc', 'ar-gallery'",
149
231
"maxGraphemes": 100
150
232
},
151
233
"device": {
152
234
"type": "string",
153
235
"description": "Device identifier, e.g. StickS3 id",
154
236
"maxGraphemes": 100
155
237
},
156
238
"mintId": {
157
239
"type": "string",
158
240
"description": "Device-generated mint identifier (hex). Shared between both parties' beads on a mutual mint — the encounter join key.",
159
241
"maxGraphemes": 64
160
242
},
161
243
"mintedAt": {
162
244
"type": "string",
163
245
"format": "datetime"
164
246
},
165
247
"mutualMint": {
166
248
"type": "boolean",
167
249
"description": "True if created by a mutual-press ceremony"
168
250
},
169
251
"timeAnchored": {
170
252
"type": "boolean",
171
253
"description": "False when the device knew only the time-of-day or nothing; createdAt is then a best guess"
172
254
}
173
255
}
174
256
},
175
257
"accessionRef": {
176
258
"type": "object",
177
259
"required": [
178
260
"institution",
179
261
"id"
180
262
],
181
263
"properties": {
182
264
"id": {
183
265
"type": "string",
184
266
"description": "Accession/inventory number",
185
267
"maxGraphemes": 200
186
268
},
187
269
"institution": {
188
270
"type": "string",
189
271
"format": "did",
190
272
"description": "DID of the holding institution"
191
273
}
192
274
}
193
275
}
194
276
},
195
277
"$type": "com.atproto.lexicon.schema",
196
278
"lexicon": 1
197
279
}