app.didpic.chat.defs
Schema Diff
+52 -9
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 22 non-breaking changes.
Breaking Changes (1)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.didpic.chat.defs#linkPreview", src: "app.didpic.chat.defs#linkPreview", tgt: "app.didpic.chat.defs#linkPreview.url", kind: "prop", name: Some("url") }
Non-Breaking Changes (22)
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#conversationView.nickname" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview.description" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview.imageHeight" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview.imageUrl" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview.imageWidth" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview.title" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview.url" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#messageView.linkPreview" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#messageView.unavailable" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.linkPreview" }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#conversationView", tgt: "app.didpic.chat.defs#conversationView.nickname", kind: "prop", name: Some("nickname") }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#linkPreview", tgt: "app.didpic.chat.defs#linkPreview.description", kind: "prop", name: Some("description") }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#linkPreview", tgt: "app.didpic.chat.defs#linkPreview.imageHeight", kind: "prop", name: Some("imageHeight") }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#linkPreview", tgt: "app.didpic.chat.defs#linkPreview.imageUrl", kind: "prop", name: Some("imageUrl") }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#linkPreview", tgt: "app.didpic.chat.defs#linkPreview.imageWidth", kind: "prop", name: Some("imageWidth") }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#linkPreview", tgt: "app.didpic.chat.defs#linkPreview.title", kind: "prop", name: Some("title") }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#messageView", tgt: "app.didpic.chat.defs#messageView.linkPreview", kind: "prop", name: Some("linkPreview") }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#messageView", tgt: "app.didpic.chat.defs#messageView.unavailable", kind: "prop", name: Some("unavailable") }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#messageView.linkPreview", tgt: "app.didpic.chat.defs#linkPreview", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#replyPreview", tgt: "app.didpic.chat.defs#replyPreview.linkPreview", kind: "prop", name: Some("linkPreview") }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#replyPreview.linkPreview", tgt: "app.didpic.chat.defs#linkPreview", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.didpic.chat.defs#conversationView.nickname" }AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview" }AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview.description" }AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview.imageHeight" }AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview.imageUrl" }AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview.imageWidth" }AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview.title" }AddedVertex { vertex_id: "app.didpic.chat.defs#linkPreview.url" }AddedVertex { vertex_id: "app.didpic.chat.defs#messageView.linkPreview" }AddedVertex { vertex_id: "app.didpic.chat.defs#messageView.unavailable" }AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.linkPreview" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "app.didpic.chat.defs#linkPreview", src: "app.didpic.chat.defs#linkPreview", tgt: "app.didpic.chat.defs#linkPreview.url", kind: "prop", name: Some("url") }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#conversationView", tgt: "app.didpic.chat.defs#conversationView.nickname", kind: "prop", name: Some("nickname") }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#linkPreview", tgt: "app.didpic.chat.defs#linkPreview.description", kind: "prop", name: Some("description") }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#linkPreview", tgt: "app.didpic.chat.defs#linkPreview.imageHeight", kind: "prop", name: Some("imageHeight") }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#linkPreview", tgt: "app.didpic.chat.defs#linkPreview.imageUrl", kind: "prop", name: Some("imageUrl") }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#linkPreview", tgt: "app.didpic.chat.defs#linkPreview.imageWidth", kind: "prop", name: Some("imageWidth") }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#linkPreview", tgt: "app.didpic.chat.defs#linkPreview.title", kind: "prop", name: Some("title") }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#messageView", tgt: "app.didpic.chat.defs#messageView.linkPreview", kind: "prop", name: Some("linkPreview") }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#messageView", tgt: "app.didpic.chat.defs#messageView.unavailable", kind: "prop", name: Some("unavailable") }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#messageView.linkPreview", tgt: "app.didpic.chat.defs#linkPreview", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#replyPreview", tgt: "app.didpic.chat.defs#replyPreview.linkPreview", kind: "prop", name: Some("linkPreview") }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#replyPreview.linkPreview", tgt: "app.didpic.chat.defs#linkPreview", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"conversationView": {
5
5
"properties": {
6
6
"blockedParticipantDids": {
7
-
"description": "DIDs of other participants the viewer blocks or is blocked by. Their messages render as Message Blocked, but presence (typing indicators) still flows - clients should anonymize their displayed name to Blocked User rather than hiding the indicator.",
7
+
"description": "DIDs of other participants the viewer blocks or is blocked by.",
8
8
"items": {
9
9
"type": "string"
10
10
},
11
11
"type": "array"
12
12
},
13
13
"createdAt": {
14
14
"format": "datetime",
15
15
"type": "string"
16
16
},
17
17
"id": {
18
18
"type": "string"
19
19
},
20
20
"lastMessageAt": {
21
21
"format": "datetime",
22
22
"type": "string"
23
23
},
24
24
"lastMessagePreview": {
25
25
"type": "string"
26
26
},
27
27
"muted": {
28
-
"description": "True if the viewer has muted this conversation (app.didpic.chat.setMuted) - push notifications only, unread counts are unaffected.",
28
+
"description": "True if the viewer has muted this conversation.",
29
29
"type": "boolean"
30
30
},
31
+
"nickname": {
32
+
"description": "Shared conversation name, if set.",
33
+
"type": "string"
34
+
},
31
35
"otherLastReadAt": {
32
-
"description": "The other participant's last_read_at, for a 1:1 'Seen' indicator. Only present when participantCount is 2.",
36
+
"description": "The other participant's last-read time, for a 1:1 Seen indicator.",
33
37
"format": "datetime",
34
38
"type": "string"
35
39
},
36
40
"participantCount": {
37
41
"maximum": 10,
38
42
"minimum": 2,
39
43
"type": "integer"
40
44
},
41
45
"participants": {
42
46
"items": {
43
47
"ref": "app.didpic.actor.defs#profileBasic",
44
48
"type": "ref"
45
49
},
46
50
"type": "array"
47
51
},
48
52
"unreadCount": {
49
53
"minimum": 0,
50
54
"type": "integer"
51
55
},
52
56
"viewerBlocked": {
53
-
"description": "True only when participantCount is 2 and a block exists either direction between the viewer and the other participant - the conversation is frozen, no new messages can be sent.",
57
+
"description": "True if this 1:1 conversation is frozen by a block.",
54
58
"type": "boolean"
55
59
}
56
60
},
57
61
"required": [
58
62
"id",
59
63
"participants",
60
64
"participantCount",
61
65
"createdAt"
62
66
],
63
67
"type": "object"
64
68
},
69
+
"linkPreview": {
70
+
"properties": {
71
+
"description": {
72
+
"type": "string"
73
+
},
74
+
"imageHeight": {
75
+
"type": "integer"
76
+
},
77
+
"imageUrl": {
78
+
"type": "string"
79
+
},
80
+
"imageWidth": {
81
+
"type": "integer"
82
+
},
83
+
"title": {
84
+
"type": "string"
85
+
},
86
+
"url": {
87
+
"format": "uri",
88
+
"type": "string"
89
+
}
90
+
},
91
+
"required": [
92
+
"url"
93
+
],
94
+
"type": "object"
95
+
},
65
96
"messageView": {
66
97
"properties": {
67
98
"author": {
68
99
"ref": "app.didpic.actor.defs#profileBasic",
69
100
"type": "ref"
70
101
},
71
102
"blocked": {
72
-
"description": "True when this message's author is blocked by, or blocking, the viewer. The message stays in its real position with its real author, but content (text/image/sharedPost/reactions) is withheld - clients should render it like a takedown but labeled Message Blocked.",
103
+
"description": "True when the author is blocked by or blocking the viewer.",
73
104
"type": "boolean"
74
105
},
75
106
"conversationId": {
76
107
"type": "string"
77
108
},
78
109
"createdAt": {
79
110
"format": "datetime",
80
111
"type": "string"
81
112
},
82
113
"id": {
83
114
"type": "string"
84
115
},
85
116
"imageHeight": {
86
117
"type": "integer"
87
118
},
88
119
"imageUrl": {
89
120
"type": "string"
90
121
},
91
122
"imageWidth": {
92
123
"type": "integer"
93
124
},
125
+
"linkPreview": {
126
+
"ref": "app.didpic.chat.defs#linkPreview",
127
+
"type": "ref"
128
+
},
94
129
"reactions": {
95
130
"items": {
96
131
"ref": "app.didpic.chat.defs#reactionSummary",
97
132
"type": "ref"
98
133
},
99
134
"type": "array"
100
135
},
101
136
"replyTo": {
102
137
"ref": "app.didpic.chat.defs#replyPreview",
103
138
"type": "ref"
104
139
},
105
140
"sharedPost": {
106
141
"ref": "app.didpic.feed.defs#postView",
107
142
"type": "ref"
108
143
},
109
144
"sharedPostUnavailable": {
110
-
"description": "True when this message shared a post that has since been deleted/taken down - sharedPost is omitted in that case.",
145
+
"description": "True when the shared post is gone.",
111
146
"type": "boolean"
112
147
},
113
148
"takedown": {
114
149
"type": "boolean"
115
150
},
116
151
"text": {
117
152
"type": "string"
153
+
},
154
+
"unavailable": {
155
+
"description": "True when the author's account is unavailable.",
156
+
"type": "boolean"
118
157
}
119
158
},
120
159
"required": [
121
160
"id",
122
161
"conversationId",
123
162
"author",
124
163
"createdAt"
125
164
],
126
165
"type": "object"
127
166
},
128
167
"reactionSummary": {
129
168
"properties": {
130
169
"count": {
131
170
"minimum": 1,
132
171
"type": "integer"
133
172
},
134
173
"reaction": {
135
174
"type": "string"
136
175
},
137
176
"viewerReacted": {
138
177
"type": "boolean"
139
178
}
140
179
},
141
180
"required": [
142
181
"reaction",
143
182
"count",
144
183
"viewerReacted"
145
184
],
146
185
"type": "object"
147
186
},
148
187
"replyPreview": {
149
188
"properties": {
150
189
"authorDid": {
151
190
"type": "string"
152
191
},
153
192
"blocked": {
154
-
"description": "True when the replied-to message's author is blocked by, or blocking, the viewer. The message still exists (unlike unavailable) but its content is withheld - only authorDid is present.",
193
+
"description": "True when the replied-to message's author is blocked.",
155
194
"type": "boolean"
156
195
},
157
196
"id": {
158
197
"type": "string"
159
198
},
160
199
"imageHeight": {
161
200
"type": "integer"
162
201
},
163
202
"imageUrl": {
164
203
"type": "string"
165
204
},
166
205
"imageWidth": {
167
206
"type": "integer"
168
207
},
208
+
"linkPreview": {
209
+
"ref": "app.didpic.chat.defs#linkPreview",
210
+
"type": "ref"
211
+
},
169
212
"sharedPost": {
170
213
"ref": "app.didpic.feed.defs#postView",
171
214
"type": "ref"
172
215
},
173
216
"sharedPostUnavailable": {
174
-
"description": "True when the replied-to message shared a post that has since been deleted/taken down - sharedPost is omitted in that case.",
217
+
"description": "True when the shared post is gone.",
175
218
"type": "boolean"
176
219
},
177
220
"textSnippet": {
178
221
"type": "string"
179
222
},
180
223
"unavailable": {
181
-
"description": "True when the replied-to message has since been taken down - every other field is omitted in that case.",
224
+
"description": "True when the replied-to message is gone or unavailable.",
182
225
"type": "boolean"
183
226
}
184
227
},
185
228
"required": [
186
229
"id",
187
230
"unavailable"
188
231
],
189
232
"type": "object"
190
233
}
191
234
},
192
235
"id": "app.didpic.chat.defs",
193
236
"lexicon": 1
194
237
}