com.cultureblocs.creative.work
Schema Diff
+3 -6
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 2 non-breaking changes.
Breaking Changes (2)
- KindChanged KindChanged { vertex_id: "com.cultureblocs.creative.work:body.images:items", old_kind: "blob", new_kind: "ref" }
- ConstraintAdded ConstraintAdded { vertex_id: "com.cultureblocs.creative.work:body.images:items", sort: "ref", value: "com.cultureblocs.defs#imageRef" }
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#imageRef" }
- AddedEdge AddedEdge { src: "com.cultureblocs.creative.work:body.images:items", tgt: "com.cultureblocs.defs#imageRef", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.cultureblocs.defs#imageRef" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "com.cultureblocs.creative.work:body.images:items", sort: "ref", value: "com.cultureblocs.defs#imageRef" }
Additional Notes
- Breaking: KindChanged { vertex_id: "com.cultureblocs.creative.work:body.images:items", old_kind: "blob", new_kind: "ref" }
- Non-breaking: AddedEdge { src: "com.cultureblocs.creative.work:body.images:items", tgt: "com.cultureblocs.defs#imageRef", kind: "ref", name: None }
1
1
{
2
2
"id": "com.cultureblocs.creative.work",
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
"title",
11
11
"createdAt"
12
12
],
13
13
"properties": {
14
14
"tags": {
15
15
"type": "array",
16
16
"items": {
17
17
"type": "string",
18
18
"maxGraphemes": 64
19
19
},
20
20
"maxLength": 8
21
21
},
22
22
"links": {
23
23
"type": "array",
24
24
"items": {
25
25
"ref": "com.cultureblocs.defs#linkRef",
26
26
"type": "ref"
27
27
},
28
28
"maxLength": 8,
29
29
"description": "Other contexts for the work: press, a Flickr set, the Instagram post, a review."
30
30
},
31
31
"title": {
32
32
"type": "string",
33
33
"description": "Titles can change; history is preserved in repository commits.",
34
34
"maxGraphemes": 300
35
35
},
36
36
"images": {
37
37
"type": "array",
38
38
"items": {
39
-
"type": "blob",
40
-
"accept": [
41
-
"image/*"
42
-
],
43
-
"maxSize": 2000000
39
+
"ref": "com.cultureblocs.defs#imageRef",
40
+
"type": "ref"
44
41
},
45
42
"maxLength": 10,
46
-
"description": "The work itself, as published ATProto blobs (small / optionally watermarked). For image-based works this is the work, not metadata. Full-resolution originals need not leave the creator's machine."
43
+
"description": "The work itself, as published images (small / optionally watermarked). For image-based works this is the work, not metadata. Full-resolution originals need not leave the creator's machine."
47
44
},
48
45
"credits": {
49
46
"type": "array",
50
47
"items": {
51
48
"ref": "com.cultureblocs.defs#creditRef",
52
49
"type": "ref"
53
50
},
54
51
"maxLength": 20,
55
52
"description": "Self-asserted collaborators. Asymmetric by design: no approval inbox. If a collaborator publishes a matching claim, readers may compute a verified collaboration from the closed loop."
56
53
},
57
54
"createdAt": {
58
55
"type": "string",
59
56
"format": "datetime",
60
57
"description": "When this record was first stamped. The only immutable field: everything else may be revised by publishing a new commit."
61
58
},
62
59
"description": {
63
60
"type": "string",
64
61
"maxGraphemes": 2000
65
62
},
66
63
"externalIds": {
67
64
"type": "array",
68
65
"items": {
69
66
"ref": "com.cultureblocs.defs#externalId",
70
67
"type": "ref"
71
68
},
72
69
"maxLength": 20,
73
70
"description": "ISWC, ISRC, DOI, Wikidata and so on, once they exist. Registering them is a separate, often paid, workflow — this field is the hook a bridge service would write back into."
74
71
},
75
72
"referenceUrl": {
76
73
"type": "string",
77
74
"format": "uri",
78
75
"description": "Where the work currently lives online — gallery page, Bandcamp, Instagram post, own site. Expected to change over a career."
79
76
},
80
77
"completionDate": {
81
78
"type": "string",
82
79
"description": "Freeform: '2024', 'Spring 2019', 'ongoing'. Not a datetime: creative chronology is rarely precise.",
83
80
"maxGraphemes": 100
84
81
}
85
82
}
86
83
},
87
84
"description": "A minimal, self-asserted marker: 'I made this' / 'we made this'. Deliberately tiny. It proves that this claim was made on this date by the holder of this repository — nothing more, which is exactly the claim that can honestly be made. Everything else (industry metadata, scene layers, commercial registrations, licensing terms) belongs in other namespaces that REFERENCE this record's URI rather than adding fields to it."
88
85
}
89
86
},
90
87
"$type": "com.atproto.lexicon.schema",
91
88
"lexicon": 1
92
89
}