app.didpic.feed.post
Schema Diff
+13 -6
Compatibility Analysis
Backward Compatible
Backward compatible. 4 non-breaking changes.
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "app.didpic.feed.post:body.facets" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.feed.post:body.facets:items" }
- AddedEdge AddedEdge { src: "app.didpic.feed.post:body", tgt: "app.didpic.feed.post:body.facets", kind: "prop", name: Some("facets") }
- AddedEdge AddedEdge { src: "app.didpic.feed.post:body.facets", tgt: "app.didpic.feed.post:body.facets:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.didpic.feed.post:body.facets" }AddedVertex { vertex_id: "app.didpic.feed.post:body.facets:items" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.didpic.feed.post:body", tgt: "app.didpic.feed.post:body.facets", kind: "prop", name: Some("facets") }
- Non-breaking: AddedEdge { src: "app.didpic.feed.post:body.facets", tgt: "app.didpic.feed.post:body.facets:items", kind: "items", name: None }
1
1
{
2
2
"id": "app.didpic.feed.post",
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
"image",
11
11
"createdAt"
12
12
],
13
13
"properties": {
14
14
"alt": {
15
15
"type": "string",
16
16
"maxLength": 10000,
17
-
"description": "Alt text describing the image for accessibility.",
17
+
"description": "Alt text for accessibility.",
18
18
"maxGraphemes": 1000
19
19
},
20
20
"text": {
21
21
"type": "string",
22
22
"maxLength": 22000,
23
-
"description": "Caption text. May be empty.",
23
+
"description": "Caption text.",
24
24
"maxGraphemes": 2200
25
25
},
26
26
"image": {
27
27
"type": "blob",
28
28
"accept": [
29
29
"image/png",
30
30
"image/jpeg",
31
31
"image/webp"
32
32
],
33
33
"maxSize": 5000000
34
34
},
35
+
"facets": {
36
+
"type": "array",
37
+
"items": {
38
+
"ref": "app.didpic.richtext.facet",
39
+
"type": "ref"
40
+
}
41
+
},
35
42
"labels": {
36
43
"ref": "#selfLabels",
37
44
"type": "ref",
38
-
"description": "Self-applied content labels (e.g. nsfw). Lowercase identifiers; the union of self-labels and server-applied labels drives the viewer's hide/blur/show decision."
45
+
"description": "Self-applied content labels."
39
46
},
40
47
"createdAt": {
41
48
"type": "string",
42
49
"format": "datetime"
43
50
},
44
51
"aspectRatio": {
45
52
"ref": "#aspectRatio",
46
53
"type": "ref"
47
54
}
48
55
}
49
56
},
50
-
"description": "A didpic post: a single photo with an optional caption. Old-school photo-feed style — one image per post, no carousels."
57
+
"description": "A single-image photo post with optional caption."
51
58
},
52
59
"selfLabel": {
53
60
"type": "object",
54
61
"required": [
55
62
"val"
56
63
],
57
64
"properties": {
58
65
"val": {
59
66
"type": "string",
60
67
"maxLength": 128
61
68
}
62
69
}
63
70
},
64
71
"selfLabels": {
65
72
"type": "object",
66
73
"properties": {
67
74
"values": {
68
75
"type": "array",
69
76
"items": {
70
77
"ref": "#selfLabel",
71
78
"type": "ref"
72
79
}
73
80
}
74
81
},
75
-
"description": "Self-applied label set. Matches the shape of com.atproto.label.defs#selfLabels so labeling tooling and viewers can interoperate."
82
+
"description": "Self-applied label set."
76
83
},
77
84
"aspectRatio": {
78
85
"type": "object",
79
86
"required": [
80
87
"width",
81
88
"height"
82
89
],
83
90
"properties": {
84
91
"width": {
85
92
"type": "integer",
86
93
"minimum": 1
87
94
},
88
95
"height": {
89
96
"type": "integer",
90
97
"minimum": 1
91
98
}
92
99
},
93
-
"description": "Width:height ratio of the image in pixels. Used by clients to reserve layout space."
100
+
"description": "Image width:height in pixels."
94
101
}
95
102
},
96
103
"$type": "com.atproto.lexicon.schema",
97
104
"lexicon": 1
98
105
}