app.didpic.chat.defs
Schema Diff
+35 -0
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 18 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 (18)
- 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#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.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#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.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
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.",
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
28
"description": "True if the viewer has muted this conversation (app.didpic.chat.setMuted) - push notifications only, unread counts are unaffected.",
29
29
"type": "boolean"
30
30
},
31
31
"nickname": {
32
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.",
33
33
"type": "string"
34
34
},
35
35
"otherLastReadAt": {
36
36
"description": "The other participant's last_read_at, for a 1:1 'Seen' indicator. Only present when participantCount is 2.",
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
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.",
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
103
"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.",
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
145
"description": "True when this message shared a post that has since been deleted/taken down - sharedPost is omitted in that case.",
115
146
"type": "boolean"
116
147
},
117
148
"takedown": {
118
149
"type": "boolean"
119
150
},
120
151
"text": {
121
152
"type": "string"
122
153
}
123
154
},
124
155
"required": [
125
156
"id",
126
157
"conversationId",
127
158
"author",
128
159
"createdAt"
129
160
],
130
161
"type": "object"
131
162
},
132
163
"reactionSummary": {
133
164
"properties": {
134
165
"count": {
135
166
"minimum": 1,
136
167
"type": "integer"
137
168
},
138
169
"reaction": {
139
170
"type": "string"
140
171
},
141
172
"viewerReacted": {
142
173
"type": "boolean"
143
174
}
144
175
},
145
176
"required": [
146
177
"reaction",
147
178
"count",
148
179
"viewerReacted"
149
180
],
150
181
"type": "object"
151
182
},
152
183
"replyPreview": {
153
184
"properties": {
154
185
"authorDid": {
155
186
"type": "string"
156
187
},
157
188
"blocked": {
158
189
"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.",
159
190
"type": "boolean"
160
191
},
161
192
"id": {
162
193
"type": "string"
163
194
},
164
195
"imageHeight": {
165
196
"type": "integer"
166
197
},
167
198
"imageUrl": {
168
199
"type": "string"
169
200
},
170
201
"imageWidth": {
171
202
"type": "integer"
172
203
},
204
+
"linkPreview": {
205
+
"ref": "app.didpic.chat.defs#linkPreview",
206
+
"type": "ref"
207
+
},
173
208
"sharedPost": {
174
209
"ref": "app.didpic.feed.defs#postView",
175
210
"type": "ref"
176
211
},
177
212
"sharedPostUnavailable": {
178
213
"description": "True when the replied-to message shared a post that has since been deleted/taken down - sharedPost is omitted in that case.",
179
214
"type": "boolean"
180
215
},
181
216
"textSnippet": {
182
217
"type": "string"
183
218
},
184
219
"unavailable": {
185
220
"description": "True when the replied-to message has since been taken down - every other field is omitted in that case.",
186
221
"type": "boolean"
187
222
}
188
223
},
189
224
"required": [
190
225
"id",
191
226
"unavailable"
192
227
],
193
228
"type": "object"
194
229
}
195
230
},
196
231
"id": "app.didpic.chat.defs",
197
232
"lexicon": 1
198
233
}