app.didpic.chat.defs
Schema Diff
+49 -10
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 20 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 (20)
- 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#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#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#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
31
"nickname": {
32
-
"description": "Shared name set by any participant (app.didpic.chat.setNickname). Present only when set - clients fall back to a computed name from participants when absent.",
32
+
"description": "Shared conversation name, if set.",
33
33
"type": "string"
34
34
},
35
35
"otherLastReadAt": {
36
-
"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.",
37
37
"format": "datetime",
38
38
"type": "string"
39
39
},
40
40
"participantCount": {
41
41
"maximum": 10,
42
42
"minimum": 2,
43
43
"type": "integer"
44
44
},
45
45
"participants": {
46
46
"items": {
47
47
"ref": "app.didpic.actor.defs#profileBasic",
48
48
"type": "ref"
49
49
},
50
50
"type": "array"
51
51
},
52
52
"unreadCount": {
53
53
"minimum": 0,
54
54
"type": "integer"
55
55
},
56
56
"viewerBlocked": {
57
-
"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.",
58
58
"type": "boolean"
59
59
}
60
60
},
61
61
"required": [
62
62
"id",
63
63
"participants",
64
64
"participantCount",
65
65
"createdAt"
66
66
],
67
67
"type": "object"
68
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
+
},
69
96
"messageView": {
70
97
"properties": {
71
98
"author": {
72
99
"ref": "app.didpic.actor.defs#profileBasic",
73
100
"type": "ref"
74
101
},
75
102
"blocked": {
76
-
"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.",
77
104
"type": "boolean"
78
105
},
79
106
"conversationId": {
80
107
"type": "string"
81
108
},
82
109
"createdAt": {
83
110
"format": "datetime",
84
111
"type": "string"
85
112
},
86
113
"id": {
87
114
"type": "string"
88
115
},
89
116
"imageHeight": {
90
117
"type": "integer"
91
118
},
92
119
"imageUrl": {
93
120
"type": "string"
94
121
},
95
122
"imageWidth": {
96
123
"type": "integer"
97
124
},
125
+
"linkPreview": {
126
+
"ref": "app.didpic.chat.defs#linkPreview",
127
+
"type": "ref"
128
+
},
98
129
"reactions": {
99
130
"items": {
100
131
"ref": "app.didpic.chat.defs#reactionSummary",
101
132
"type": "ref"
102
133
},
103
134
"type": "array"
104
135
},
105
136
"replyTo": {
106
137
"ref": "app.didpic.chat.defs#replyPreview",
107
138
"type": "ref"
108
139
},
109
140
"sharedPost": {
110
141
"ref": "app.didpic.feed.defs#postView",
111
142
"type": "ref"
112
143
},
113
144
"sharedPostUnavailable": {
114
-
"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.",
115
146
"type": "boolean"
116
147
},
117
148
"takedown": {
118
149
"type": "boolean"
119
150
},
120
151
"text": {
121
152
"type": "string"
153
+
},
154
+
"unavailable": {
155
+
"description": "True when the author's account is unavailable.",
156
+
"type": "boolean"
122
157
}
123
158
},
124
159
"required": [
125
160
"id",
126
161
"conversationId",
127
162
"author",
128
163
"createdAt"
129
164
],
130
165
"type": "object"
131
166
},
132
167
"reactionSummary": {
133
168
"properties": {
134
169
"count": {
135
170
"minimum": 1,
136
171
"type": "integer"
137
172
},
138
173
"reaction": {
139
174
"type": "string"
140
175
},
141
176
"viewerReacted": {
142
177
"type": "boolean"
143
178
}
144
179
},
145
180
"required": [
146
181
"reaction",
147
182
"count",
148
183
"viewerReacted"
149
184
],
150
185
"type": "object"
151
186
},
152
187
"replyPreview": {
153
188
"properties": {
154
189
"authorDid": {
155
190
"type": "string"
156
191
},
157
192
"blocked": {
158
-
"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.",
159
194
"type": "boolean"
160
195
},
161
196
"id": {
162
197
"type": "string"
163
198
},
164
199
"imageHeight": {
165
200
"type": "integer"
166
201
},
167
202
"imageUrl": {
168
203
"type": "string"
169
204
},
170
205
"imageWidth": {
171
206
"type": "integer"
172
207
},
208
+
"linkPreview": {
209
+
"ref": "app.didpic.chat.defs#linkPreview",
210
+
"type": "ref"
211
+
},
173
212
"sharedPost": {
174
213
"ref": "app.didpic.feed.defs#postView",
175
214
"type": "ref"
176
215
},
177
216
"sharedPostUnavailable": {
178
-
"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.",
179
218
"type": "boolean"
180
219
},
181
220
"textSnippet": {
182
221
"type": "string"
183
222
},
184
223
"unavailable": {
185
-
"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.",
186
225
"type": "boolean"
187
226
}
188
227
},
189
228
"required": [
190
229
"id",
191
230
"unavailable"
192
231
],
193
232
"type": "object"
194
233
}
195
234
},
196
235
"id": "app.didpic.chat.defs",
197
236
"lexicon": 1
198
237
}