app.didpic.chat.defs
Schema Diff
+7 -3
Compatibility Analysis
Backward Compatible
Backward compatible. 2 non-breaking changes.
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#messageView.unavailable" }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#messageView", tgt: "app.didpic.chat.defs#messageView.unavailable", kind: "prop", name: Some("unavailable") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.didpic.chat.defs#messageView.unavailable" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#messageView", tgt: "app.didpic.chat.defs#messageView.unavailable", kind: "prop", name: Some("unavailable") }
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. 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
69
"linkPreview": {
70
70
"properties": {
71
71
"description": {
72
72
"type": "string"
73
73
},
74
74
"imageHeight": {
75
75
"type": "integer"
76
76
},
77
77
"imageUrl": {
78
78
"type": "string"
79
79
},
80
80
"imageWidth": {
81
81
"type": "integer"
82
82
},
83
83
"title": {
84
84
"type": "string"
85
85
},
86
86
"url": {
87
87
"format": "uri",
88
88
"type": "string"
89
89
}
90
90
},
91
91
"required": [
92
92
"url"
93
93
],
94
94
"type": "object"
95
95
},
96
96
"messageView": {
97
97
"properties": {
98
98
"author": {
99
99
"ref": "app.didpic.actor.defs#profileBasic",
100
100
"type": "ref"
101
101
},
102
102
"blocked": {
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.",
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.",
104
104
"type": "boolean"
105
105
},
106
106
"conversationId": {
107
107
"type": "string"
108
108
},
109
109
"createdAt": {
110
110
"format": "datetime",
111
111
"type": "string"
112
112
},
113
113
"id": {
114
114
"type": "string"
115
115
},
116
116
"imageHeight": {
117
117
"type": "integer"
118
118
},
119
119
"imageUrl": {
120
120
"type": "string"
121
121
},
122
122
"imageWidth": {
123
123
"type": "integer"
124
124
},
125
125
"linkPreview": {
126
126
"ref": "app.didpic.chat.defs#linkPreview",
127
127
"type": "ref"
128
128
},
129
129
"reactions": {
130
130
"items": {
131
131
"ref": "app.didpic.chat.defs#reactionSummary",
132
132
"type": "ref"
133
133
},
134
134
"type": "array"
135
135
},
136
136
"replyTo": {
137
137
"ref": "app.didpic.chat.defs#replyPreview",
138
138
"type": "ref"
139
139
},
140
140
"sharedPost": {
141
141
"ref": "app.didpic.feed.defs#postView",
142
142
"type": "ref"
143
143
},
144
144
"sharedPostUnavailable": {
145
145
"description": "True when this message shared a post that has since been deleted/taken down - sharedPost is omitted in that case.",
146
146
"type": "boolean"
147
147
},
148
148
"takedown": {
149
149
"type": "boolean"
150
150
},
151
151
"text": {
152
152
"type": "string"
153
+
},
154
+
"unavailable": {
155
+
"description": "True when this message's author's account is takendown/suspended/deleted/deactivated - same redaction as blocked (content withheld, real position/author kept) but labeled Message unavailable, and the same for every viewer rather than a per-relationship thing.",
156
+
"type": "boolean"
153
157
}
154
158
},
155
159
"required": [
156
160
"id",
157
161
"conversationId",
158
162
"author",
159
163
"createdAt"
160
164
],
161
165
"type": "object"
162
166
},
163
167
"reactionSummary": {
164
168
"properties": {
165
169
"count": {
166
170
"minimum": 1,
167
171
"type": "integer"
168
172
},
169
173
"reaction": {
170
174
"type": "string"
171
175
},
172
176
"viewerReacted": {
173
177
"type": "boolean"
174
178
}
175
179
},
176
180
"required": [
177
181
"reaction",
178
182
"count",
179
183
"viewerReacted"
180
184
],
181
185
"type": "object"
182
186
},
183
187
"replyPreview": {
184
188
"properties": {
185
189
"authorDid": {
186
190
"type": "string"
187
191
},
188
192
"blocked": {
189
193
"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.",
190
194
"type": "boolean"
191
195
},
192
196
"id": {
193
197
"type": "string"
194
198
},
195
199
"imageHeight": {
196
200
"type": "integer"
197
201
},
198
202
"imageUrl": {
199
203
"type": "string"
200
204
},
201
205
"imageWidth": {
202
206
"type": "integer"
203
207
},
204
208
"linkPreview": {
205
209
"ref": "app.didpic.chat.defs#linkPreview",
206
210
"type": "ref"
207
211
},
208
212
"sharedPost": {
209
213
"ref": "app.didpic.feed.defs#postView",
210
214
"type": "ref"
211
215
},
212
216
"sharedPostUnavailable": {
213
217
"description": "True when the replied-to message shared a post that has since been deleted/taken down - sharedPost is omitted in that case.",
214
218
"type": "boolean"
215
219
},
216
220
"textSnippet": {
217
221
"type": "string"
218
222
},
219
223
"unavailable": {
220
-
"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 has since been taken down, or its author's account is itself takendown/suspended/deleted/deactivated - every other field is omitted in that case.",
221
225
"type": "boolean"
222
226
}
223
227
},
224
228
"required": [
225
229
"id",
226
230
"unavailable"
227
231
],
228
232
"type": "object"
229
233
}
230
234
},
231
235
"id": "app.didpic.chat.defs",
232
236
"lexicon": 1
233
237
}