com.cultureblocs.defs

cultureblocs.com

Schema Diff

+82 -0

From

CID
bafyreie22msjy4d...
Indexed At
2026-07-22 10:01 UTC
View this version

To

CID
bafyreibfuixgugn...
Indexed At
2026-07-27 13:18 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@