art.cllctv.artwork
Schema Diff
+32 -1
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 20 non-breaking changes.
Breaking Changes (1)
- RemovedEdge RemovedEdge { src: "art.cllctv.artwork:body.content", tgt: "art.cllctv.artwork:body.content:variant0", kind: "variant", name: Some("art.cllctv.content.plaintext") }
Non-Breaking Changes (20)
- AddedVertex AddedVertex { vertex_id: "art.cllctv.artwork#content" }
- AddedVertex AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks" }
- AddedVertex AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks:items" }
- AddedVertex AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks:items:variant0" }
- AddedVertex AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks:items:variant1" }
- AddedVertex AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks:items:variant2" }
- AddedVertex AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks:items:variant3" }
- AddedVertex AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks:items:variant4" }
- AddedVertex AddedVertex { vertex_id: "art.cllctv.artwork:body.bskyPostRef" }
- AddedVertex AddedVertex { vertex_id: "art.cllctv.artwork:body.textContent" }
- AddedEdge AddedEdge { src: "art.cllctv.artwork#content", tgt: "art.cllctv.artwork#content.blocks", kind: "prop", name: Some("blocks") }
- AddedEdge AddedEdge { src: "art.cllctv.artwork#content.blocks", tgt: "art.cllctv.artwork#content.blocks:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "art.cllctv.artwork#content.blocks:items", tgt: "art.cllctv.artwork#content.blocks:items:variant0", kind: "variant", name: Some("art.cllctv.block.text") }
- AddedEdge AddedEdge { src: "art.cllctv.artwork#content.blocks:items", tgt: "art.cllctv.artwork#content.blocks:items:variant1", kind: "variant", name: Some("art.cllctv.block.blockquote") }
- AddedEdge AddedEdge { src: "art.cllctv.artwork#content.blocks:items", tgt: "art.cllctv.artwork#content.blocks:items:variant2", kind: "variant", name: Some("art.cllctv.block.bulletList") }
- AddedEdge AddedEdge { src: "art.cllctv.artwork#content.blocks:items", tgt: "art.cllctv.artwork#content.blocks:items:variant3", kind: "variant", name: Some("art.cllctv.block.orderedList") }
- AddedEdge AddedEdge { src: "art.cllctv.artwork#content.blocks:items", tgt: "art.cllctv.artwork#content.blocks:items:variant4", kind: "variant", name: Some("art.cllctv.block.horizontalRule") }
- AddedEdge AddedEdge { src: "art.cllctv.artwork:body", tgt: "art.cllctv.artwork:body.bskyPostRef", kind: "prop", name: Some("bskyPostRef") }
- AddedEdge AddedEdge { src: "art.cllctv.artwork:body", tgt: "art.cllctv.artwork:body.textContent", kind: "prop", name: Some("textContent") }
- AddedEdge AddedEdge { src: "art.cllctv.artwork:body.content", tgt: "art.cllctv.artwork:body.content:variant0", kind: "variant", name: Some("#content") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "art.cllctv.artwork#content" }AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks" }AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks:items" }AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks:items:variant0" }AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks:items:variant1" }AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks:items:variant2" }AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks:items:variant3" }AddedVertex { vertex_id: "art.cllctv.artwork#content.blocks:items:variant4" }AddedVertex { vertex_id: "art.cllctv.artwork:body.bskyPostRef" }AddedVertex { vertex_id: "art.cllctv.artwork:body.textContent" }
Additional Notes
- Breaking: RemovedEdge { src: "art.cllctv.artwork:body.content", tgt: "art.cllctv.artwork:body.content:variant0", kind: "variant", name: Some("art.cllctv.content.plaintext") }
- Non-breaking: AddedEdge { src: "art.cllctv.artwork#content", tgt: "art.cllctv.artwork#content.blocks", kind: "prop", name: Some("blocks") }
- Non-breaking: AddedEdge { src: "art.cllctv.artwork#content.blocks", tgt: "art.cllctv.artwork#content.blocks:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "art.cllctv.artwork#content.blocks:items", tgt: "art.cllctv.artwork#content.blocks:items:variant0", kind: "variant", name: Some("art.cllctv.block.text") }
- Non-breaking: AddedEdge { src: "art.cllctv.artwork#content.blocks:items", tgt: "art.cllctv.artwork#content.blocks:items:variant1", kind: "variant", name: Some("art.cllctv.block.blockquote") }
- Non-breaking: AddedEdge { src: "art.cllctv.artwork#content.blocks:items", tgt: "art.cllctv.artwork#content.blocks:items:variant2", kind: "variant", name: Some("art.cllctv.block.bulletList") }
- Non-breaking: AddedEdge { src: "art.cllctv.artwork#content.blocks:items", tgt: "art.cllctv.artwork#content.blocks:items:variant3", kind: "variant", name: Some("art.cllctv.block.orderedList") }
- Non-breaking: AddedEdge { src: "art.cllctv.artwork#content.blocks:items", tgt: "art.cllctv.artwork#content.blocks:items:variant4", kind: "variant", name: Some("art.cllctv.block.horizontalRule") }
- Non-breaking: AddedEdge { src: "art.cllctv.artwork:body", tgt: "art.cllctv.artwork:body.bskyPostRef", kind: "prop", name: Some("bskyPostRef") }
- Non-breaking: AddedEdge { src: "art.cllctv.artwork:body", tgt: "art.cllctv.artwork:body.textContent", kind: "prop", name: Some("textContent") }
- Non-breaking: AddedEdge { src: "art.cllctv.artwork:body.content", tgt: "art.cllctv.artwork:body.content:variant0", kind: "variant", name: Some("#content") }
1
1
{
2
2
"id": "art.cllctv.artwork",
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
+
"title",
11
+
"embed",
10
12
"createdAt"
11
13
],
12
14
"properties": {
13
15
"tags": {
14
16
"type": "array",
15
17
"items": {
16
18
"type": "string",
17
19
"maxLength": 640,
18
20
"maxGraphemes": 64
19
21
},
20
22
"maxLength": 8,
21
23
"description": "Additional hashtags, in addition to any included in post text and facets."
22
24
},
23
25
"embed": {
24
26
"type": "array",
25
27
"items": {
26
28
"refs": [
27
29
"art.cllctv.embed.images#image",
28
30
"art.cllctv.embed.externalVideo"
29
31
],
30
32
"type": "union"
31
33
}
32
34
},
33
35
"langs": {
34
36
"type": "array",
35
37
"items": {
36
38
"type": "string",
37
39
"format": "language"
38
40
},
39
41
"maxLength": 3,
40
42
"description": "Indicates human language of post primary text content."
41
43
},
42
44
"title": {
43
45
"type": "string",
44
46
"maxLength": 1280,
45
47
"maxGraphemes": 128
46
48
},
47
49
"labels": {
48
50
"refs": [
49
51
"com.atproto.label.defs#selfLabels"
50
52
],
51
53
"type": "union",
52
54
"description": "Self-label values for this post. Effectively content warnings."
53
55
},
54
56
"content": {
55
57
"refs": [
56
-
"art.cllctv.content.plaintext"
58
+
"#content"
57
59
],
58
60
"type": "union"
59
61
},
60
62
"details": {
61
63
"ref": "#details",
62
64
"type": "ref"
63
65
},
64
66
"ogImage": {
65
67
"type": "blob",
66
68
"accept": [
67
69
"image/png"
68
70
],
69
71
"maxSize": 5000000
70
72
},
71
73
"createdAt": {
72
74
"type": "string",
73
75
"format": "datetime"
74
76
},
77
+
"bskyPostRef": {
78
+
"ref": "com.atproto.repo.strongRef",
79
+
"type": "ref",
80
+
"description": "Strong reference to a Bluesky post. Useful to keep track of comments off-platform."
81
+
},
75
82
"description": {
76
83
"type": "string",
77
84
"maxLength": 3000,
78
85
"maxGraphemes": 300
86
+
},
87
+
"textContent": {
88
+
"type": "string"
79
89
}
80
90
}
81
91
},
82
92
"description": "Record containing a cllctv.ART artwork."
83
93
},
94
+
"content": {
95
+
"type": "object",
96
+
"required": [
97
+
"blocks"
98
+
],
99
+
"properties": {
100
+
"blocks": {
101
+
"type": "array",
102
+
"items": {
103
+
"refs": [
104
+
"art.cllctv.block.text",
105
+
"art.cllctv.block.blockquote",
106
+
"art.cllctv.block.bulletList",
107
+
"art.cllctv.block.orderedList",
108
+
"art.cllctv.block.horizontalRule"
109
+
],
110
+
"type": "union"
111
+
}
112
+
}
113
+
}
114
+
},
84
115
"details": {
85
116
"type": "object",
86
117
"properties": {
87
118
"size": {
88
119
"ref": "#detailsSize",
89
120
"type": "ref"
90
121
},
91
122
"year": {
92
123
"type": "string"
93
124
},
94
125
"place": {
95
126
"type": "string",
96
127
"maxLength": 3000,
97
128
"maxGraphemes": 300
98
129
},
99
130
"medium": {
100
131
"type": "string",
101
132
"knownValues": [
102
133
"ceramic",
103
134
"collage",
104
135
"digital",
105
136
"drawing",
106
137
"ephemera",
107
138
"jewelry",
108
139
"painting",
109
140
"performance",
110
141
"photography",
111
142
"prints",
112
143
"sculpture",
113
144
"street",
114
145
"video"
115
146
]
116
147
},
117
148
"rarity": {
118
149
"type": "string",
119
150
"knownValues": [
120
151
"unique",
121
152
"limited",
122
153
"open",
123
154
"unknown"
124
155
]
125
156
},
126
157
"condition": {
127
158
"type": "string",
128
159
"knownValues": [
129
160
"excellent",
130
161
"fine",
131
162
"good",
132
163
"fair"
133
164
]
134
165
},
135
166
"materials": {
136
167
"type": "string",
137
168
"maxLength": 2000,
138
169
"maxGraphemes": 200
139
170
}
140
171
}
141
172
},
142
173
"detailsSize": {
143
174
"type": "object",
144
175
"properties": {
145
176
"depth": {
146
177
"type": "string"
147
178
},
148
179
"width": {
149
180
"type": "string"
150
181
},
151
182
"height": {
152
183
"type": "string"
153
184
}
154
185
},
155
186
"description": "Values should be stored in millimetre (mm)."
156
187
}
157
188
},
158
189
"$type": "com.atproto.lexicon.schema",
159
190
"lexicon": 1
160
191
}