com.suibari.nagi.post
Schema Diff
+13 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 8 non-breaking changes.
Non-Breaking Changes (8)
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.post#image.contentWarning" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.post:body.channel" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.post:body.channelOnly" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.post:body.cwRestricted" }
- AddedEdge AddedEdge { src: "com.suibari.nagi.post#image", tgt: "com.suibari.nagi.post#image.contentWarning", kind: "prop", name: Some("contentWarning") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.channel", kind: "prop", name: Some("channel") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.channelOnly", kind: "prop", name: Some("channelOnly") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.cwRestricted", kind: "prop", name: Some("cwRestricted") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.suibari.nagi.post#image.contentWarning" }AddedVertex { vertex_id: "com.suibari.nagi.post:body.channel" }AddedVertex { vertex_id: "com.suibari.nagi.post:body.channelOnly" }AddedVertex { vertex_id: "com.suibari.nagi.post:body.cwRestricted" }
Additional Notes
- Non-breaking: AddedEdge { src: "com.suibari.nagi.post#image", tgt: "com.suibari.nagi.post#image.contentWarning", kind: "prop", name: Some("contentWarning") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.channel", kind: "prop", name: Some("channel") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.channelOnly", kind: "prop", name: Some("channelOnly") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.cwRestricted", kind: "prop", name: Some("cwRestricted") }
1
1
{
2
2
"id": "com.suibari.nagi.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
"text",
11
11
"createdAt"
12
12
],
13
13
"properties": {
14
14
"text": {
15
15
"type": "string",
16
16
"maxLength": 30000,
17
17
"maxGraphemes": 3000
18
18
},
19
19
"embed": {
20
20
"refs": [
21
21
"#images",
22
22
"#quote"
23
23
],
24
24
"type": "union"
25
25
},
26
26
"langs": {
27
27
"type": "array",
28
28
"items": {
29
29
"type": "string",
30
30
"format": "language"
31
31
},
32
32
"maxLength": 3
33
33
},
34
34
"reply": {
35
35
"ref": "#replyRef",
36
36
"type": "ref"
37
37
},
38
38
"facets": {
39
39
"type": "array",
40
40
"items": {
41
41
"ref": "app.bsky.richtext.facet",
42
42
"type": "ref"
43
43
}
44
44
},
45
+
"channel": {
46
+
"ref": "com.atproto.repo.strongRef",
47
+
"type": "ref"
48
+
},
45
49
"kossori": {
46
50
"type": "boolean"
47
51
},
48
52
"createdAt": {
49
53
"type": "string",
50
54
"format": "datetime"
51
55
},
52
56
"linkCards": {
53
57
"type": "array",
54
58
"items": {
55
59
"ref": "#linkCard",
56
60
"type": "ref"
57
61
},
58
62
"maxLength": 4
63
+
},
64
+
"channelOnly": {
65
+
"type": "boolean"
66
+
},
67
+
"cwRestricted": {
68
+
"type": "boolean"
59
69
}
60
70
}
61
71
}
62
72
},
63
73
"image": {
64
74
"type": "object",
65
75
"required": [
66
76
"image",
67
77
"alt"
68
78
],
69
79
"properties": {
70
80
"alt": {
71
81
"type": "string",
72
82
"maxLength": 10000,
73
83
"maxGraphemes": 1000
74
84
},
75
85
"image": {
76
86
"type": "blob",
77
87
"accept": [
78
88
"image/jpeg",
79
89
"image/png",
80
90
"image/webp",
81
91
"image/gif"
82
92
],
83
93
"maxSize": 2000000
84
94
},
85
95
"aspectRatio": {
86
96
"ref": "app.bsky.embed.defs#aspectRatio",
87
97
"type": "ref"
98
+
},
99
+
"contentWarning": {
100
+
"type": "boolean"
88
101
}
89
102
}
90
103
},
91
104
"quote": {
92
105
"type": "object",
93
106
"required": [
94
107
"record"
95
108
],
96
109
"properties": {
97
110
"images": {
98
111
"type": "array",
99
112
"items": {
100
113
"ref": "#image",
101
114
"type": "ref"
102
115
},
103
116
"maxLength": 4,
104
117
"minLength": 1
105
118
},
106
119
"record": {
107
120
"ref": "com.atproto.repo.strongRef",
108
121
"type": "ref"
109
122
}
110
123
}
111
124
},
112
125
"images": {
113
126
"type": "object",
114
127
"required": [
115
128
"images"
116
129
],
117
130
"properties": {
118
131
"images": {
119
132
"type": "array",
120
133
"items": {
121
134
"ref": "#image",
122
135
"type": "ref"
123
136
},
124
137
"maxLength": 4,
125
138
"minLength": 1
126
139
}
127
140
}
128
141
},
129
142
"linkCard": {
130
143
"type": "object",
131
144
"required": [
132
145
"uri",
133
146
"title"
134
147
],
135
148
"properties": {
136
149
"uri": {
137
150
"type": "string",
138
151
"format": "uri",
139
152
"maxLength": 2048
140
153
},
141
154
"thumb": {
142
155
"type": "blob",
143
156
"accept": [
144
157
"image/jpeg",
145
158
"image/png",
146
159
"image/webp"
147
160
],
148
161
"maxSize": 1000000
149
162
},
150
163
"title": {
151
164
"type": "string",
152
165
"maxLength": 3000,
153
166
"maxGraphemes": 300
154
167
},
155
168
"description": {
156
169
"type": "string",
157
170
"maxLength": 10000,
158
171
"maxGraphemes": 1000
159
172
}
160
173
}
161
174
},
162
175
"replyRef": {
163
176
"type": "object",
164
177
"required": [
165
178
"root",
166
179
"parent"
167
180
],
168
181
"properties": {
169
182
"root": {
170
183
"ref": "com.atproto.repo.strongRef",
171
184
"type": "ref"
172
185
},
173
186
"parent": {
174
187
"ref": "com.atproto.repo.strongRef",
175
188
"type": "ref"
176
189
}
177
190
}
178
191
}
179
192
},
180
193
"$type": "com.atproto.lexicon.schema",
181
194
"lexicon": 1
182
195
}