social.colibri.channel.defs
Schema Diff
+24 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 12 non-breaking changes.
Non-Breaking Changes (12)
- AddedVertex AddedVertex { vertex_id: "social.colibri.channel.defs#attachment.height" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.channel.defs#attachment.width" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.channel.defs#message.modSuppressedEmbeds" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.channel.defs#message.modSuppressedEmbeds:items" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.channel.defs#message.suppressedEmbeds" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.channel.defs#message.suppressedEmbeds:items" }
- AddedEdge AddedEdge { src: "social.colibri.channel.defs#attachment", tgt: "social.colibri.channel.defs#attachment.height", kind: "prop", name: Some("height") }
- AddedEdge AddedEdge { src: "social.colibri.channel.defs#attachment", tgt: "social.colibri.channel.defs#attachment.width", kind: "prop", name: Some("width") }
- AddedEdge AddedEdge { src: "social.colibri.channel.defs#message", tgt: "social.colibri.channel.defs#message.modSuppressedEmbeds", kind: "prop", name: Some("modSuppressedEmbeds") }
- AddedEdge AddedEdge { src: "social.colibri.channel.defs#message", tgt: "social.colibri.channel.defs#message.suppressedEmbeds", kind: "prop", name: Some("suppressedEmbeds") }
- AddedEdge AddedEdge { src: "social.colibri.channel.defs#message.modSuppressedEmbeds", tgt: "social.colibri.channel.defs#message.modSuppressedEmbeds:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "social.colibri.channel.defs#message.suppressedEmbeds", tgt: "social.colibri.channel.defs#message.suppressedEmbeds:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "social.colibri.channel.defs#attachment.height" }AddedVertex { vertex_id: "social.colibri.channel.defs#attachment.width" }AddedVertex { vertex_id: "social.colibri.channel.defs#message.modSuppressedEmbeds" }AddedVertex { vertex_id: "social.colibri.channel.defs#message.modSuppressedEmbeds:items" }AddedVertex { vertex_id: "social.colibri.channel.defs#message.suppressedEmbeds" }AddedVertex { vertex_id: "social.colibri.channel.defs#message.suppressedEmbeds:items" }
Additional Notes
- Non-breaking: AddedEdge { src: "social.colibri.channel.defs#attachment", tgt: "social.colibri.channel.defs#attachment.height", kind: "prop", name: Some("height") }
- Non-breaking: AddedEdge { src: "social.colibri.channel.defs#attachment", tgt: "social.colibri.channel.defs#attachment.width", kind: "prop", name: Some("width") }
- Non-breaking: AddedEdge { src: "social.colibri.channel.defs#message", tgt: "social.colibri.channel.defs#message.modSuppressedEmbeds", kind: "prop", name: Some("modSuppressedEmbeds") }
- Non-breaking: AddedEdge { src: "social.colibri.channel.defs#message", tgt: "social.colibri.channel.defs#message.suppressedEmbeds", kind: "prop", name: Some("suppressedEmbeds") }
- Non-breaking: AddedEdge { src: "social.colibri.channel.defs#message.modSuppressedEmbeds", tgt: "social.colibri.channel.defs#message.modSuppressedEmbeds:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "social.colibri.channel.defs#message.suppressedEmbeds", tgt: "social.colibri.channel.defs#message.suppressedEmbeds:items", kind: "items", name: None }
1
1
{
2
2
"id": "social.colibri.channel.defs",
3
3
"defs": {
4
4
"message": {
5
5
"type": "object",
6
6
"required": [
7
7
"uri",
8
8
"text",
9
9
"facets",
10
10
"channel",
11
11
"community",
12
12
"author",
13
13
"attachments",
14
14
"reactions",
15
15
"createdAt",
16
16
"edited"
17
17
],
18
18
"properties": {
19
19
"uri": {
20
20
"type": "string",
21
21
"format": "at-uri"
22
22
},
23
23
"text": {
24
24
"type": "string"
25
25
},
26
26
"author": {
27
27
"ref": "lex:social.colibri.actor.defs#actorView",
28
28
"type": "ref"
29
29
},
30
30
"edited": {
31
31
"type": "boolean"
32
32
},
33
33
"facets": {
34
34
"type": "array",
35
35
"items": {
36
36
"ref": "lex:social.colibri.richtext.facet",
37
37
"type": "ref"
38
38
}
39
39
},
40
40
"parent": {
41
41
"ref": "lex:social.colibri.channel.defs#message",
42
42
"type": "ref",
43
43
"description": "The message this one replies to, if any. Never itself nested (the parent's own parent is omitted)."
44
44
},
45
45
"channel": {
46
46
"type": "string",
47
47
"format": "at-uri"
48
48
},
49
49
"community": {
50
50
"type": "string",
51
51
"format": "at-uri"
52
52
},
53
53
"createdAt": {
54
54
"type": "string",
55
55
"format": "datetime"
56
56
},
57
57
"reactions": {
58
58
"type": "array",
59
59
"items": {
60
60
"ref": "lex:social.colibri.channel.defs#reactionView",
61
61
"type": "ref"
62
62
}
63
63
},
64
64
"attachments": {
65
65
"type": "array",
66
66
"items": {
67
67
"ref": "lex:social.colibri.channel.defs#attachment",
68
68
"type": "ref"
69
69
}
70
+
},
71
+
"suppressedEmbeds": {
72
+
"type": "array",
73
+
"items": {
74
+
"type": "string",
75
+
"format": "uri"
76
+
},
77
+
"description": "URLs whose embed the author suppressed, mirrored from the message record."
78
+
},
79
+
"modSuppressedEmbeds": {
80
+
"type": "array",
81
+
"items": {
82
+
"type": "string",
83
+
"format": "uri"
84
+
},
85
+
"description": "URLs whose embed a moderator suppressed, derived from the community's moderation log. Only the moderator who can hide messages may clear these."
70
86
}
71
87
},
72
88
"description": "A hydrated message as served by the AppView."
73
89
},
74
90
"attachment": {
75
91
"type": "object",
76
92
"required": [
77
93
"blob"
78
94
],
79
95
"properties": {
80
96
"blob": {
81
97
"type": "blob"
82
98
},
83
99
"name": {
84
100
"type": "string"
101
+
},
102
+
"width": {
103
+
"type": "integer",
104
+
"description": "Pixel width of the attachment's intrinsic dimensions, when it is a decodable image or video. Lets a client reserve the correct box before the bytes arrive."
105
+
},
106
+
"height": {
107
+
"type": "integer",
108
+
"description": "Pixel height of the attachment's intrinsic dimensions, when it is a decodable image or video."
85
109
}
86
110
},
87
111
"description": "A file attached to a message."
88
112
},
89
113
"readCursor": {
90
114
"type": "object",
91
115
"required": [
92
116
"uri",
93
117
"cursor",
94
118
"channel"
95
119
],
96
120
"properties": {
97
121
"uri": {
98
122
"type": "string",
99
123
"format": "at-uri"
100
124
},
101
125
"cursor": {
102
126
"type": "string"
103
127
},
104
128
"channel": {
105
129
"type": "string",
106
130
"format": "at-uri"
107
131
}
108
132
},
109
133
"description": "The authenticated user's read cursor for a channel."
110
134
},
111
135
"reactionView": {
112
136
"type": "object",
113
137
"required": [
114
138
"emoji",
115
139
"count",
116
140
"reactorDIDs"
117
141
],
118
142
"properties": {
119
143
"count": {
120
144
"type": "integer"
121
145
},
122
146
"emoji": {
123
147
"type": "string"
124
148
},
125
149
"reactorDIDs": {
126
150
"type": "array",
127
151
"items": {
128
152
"type": "string",
129
153
"format": "did"
130
154
}
131
155
}
132
156
},
133
157
"description": "An aggregated reaction on a message."
134
158
},
135
159
"unreadStatus": {
136
160
"type": "object",
137
161
"required": [
138
162
"channelUri",
139
163
"hasUnreadMessages",
140
164
"unreadPingCount"
141
165
],
142
166
"properties": {
143
167
"channelUri": {
144
168
"type": "string",
145
169
"format": "at-uri"
146
170
},
147
171
"unreadPingCount": {
148
172
"type": "integer"
149
173
},
150
174
"hasUnreadMessages": {
151
175
"type": "boolean"
152
176
}
153
177
},
154
178
"description": "Per-channel unread state for the authenticated user."
155
179
}
156
180
},
157
181
"$type": "com.atproto.lexicon.schema",
158
182
"lexicon": 1
159
183
}