app.didpic.chat.defs
Schema Diff
+15 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 8 non-breaking changes.
Non-Breaking Changes (8)
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#conversationView.blockedParticipantDids" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#conversationView.blockedParticipantDids:items" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#messageView.blocked" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.blocked" }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#conversationView", tgt: "app.didpic.chat.defs#conversationView.blockedParticipantDids", kind: "prop", name: Some("blockedParticipantDids") }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#conversationView.blockedParticipantDids", tgt: "app.didpic.chat.defs#conversationView.blockedParticipantDids:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#messageView", tgt: "app.didpic.chat.defs#messageView.blocked", kind: "prop", name: Some("blocked") }
- AddedEdge AddedEdge { src: "app.didpic.chat.defs#replyPreview", tgt: "app.didpic.chat.defs#replyPreview.blocked", kind: "prop", name: Some("blocked") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.didpic.chat.defs#conversationView.blockedParticipantDids" }AddedVertex { vertex_id: "app.didpic.chat.defs#conversationView.blockedParticipantDids:items" }AddedVertex { vertex_id: "app.didpic.chat.defs#messageView.blocked" }AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.blocked" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#conversationView", tgt: "app.didpic.chat.defs#conversationView.blockedParticipantDids", kind: "prop", name: Some("blockedParticipantDids") }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#conversationView.blockedParticipantDids", tgt: "app.didpic.chat.defs#conversationView.blockedParticipantDids:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#messageView", tgt: "app.didpic.chat.defs#messageView.blocked", kind: "prop", name: Some("blocked") }
- Non-breaking: AddedEdge { src: "app.didpic.chat.defs#replyPreview", tgt: "app.didpic.chat.defs#replyPreview.blocked", kind: "prop", name: Some("blocked") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"conversationView": {
5
5
"properties": {
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.",
8
+
"items": {
9
+
"type": "string"
10
+
},
11
+
"type": "array"
12
+
},
6
13
"createdAt": {
7
14
"format": "datetime",
8
15
"type": "string"
9
16
},
10
17
"id": {
11
18
"type": "string"
12
19
},
13
20
"lastMessageAt": {
14
21
"format": "datetime",
15
22
"type": "string"
16
23
},
17
24
"lastMessagePreview": {
18
25
"type": "string"
19
26
},
20
27
"muted": {
21
28
"description": "True if the viewer has muted this conversation (app.didpic.chat.setMuted) - push notifications only, unread counts are unaffected.",
22
29
"type": "boolean"
23
30
},
24
31
"otherLastReadAt": {
25
32
"description": "The other participant's last_read_at, for a 1:1 'Seen' indicator. Only present when participantCount is 2.",
26
33
"format": "datetime",
27
34
"type": "string"
28
35
},
29
36
"participantCount": {
30
37
"maximum": 10,
31
38
"minimum": 2,
32
39
"type": "integer"
33
40
},
34
41
"participants": {
35
42
"items": {
36
43
"ref": "app.didpic.actor.defs#profileBasic",
37
44
"type": "ref"
38
45
},
39
46
"type": "array"
40
47
},
41
48
"unreadCount": {
42
49
"minimum": 0,
43
50
"type": "integer"
44
51
},
45
52
"viewerBlocked": {
46
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.",
47
54
"type": "boolean"
48
55
}
49
56
},
50
57
"required": [
51
58
"id",
52
59
"participants",
53
60
"participantCount",
54
61
"createdAt"
55
62
],
56
63
"type": "object"
57
64
},
58
65
"messageView": {
59
66
"properties": {
60
67
"author": {
61
68
"ref": "app.didpic.actor.defs#profileBasic",
62
69
"type": "ref"
63
70
},
71
+
"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.",
73
+
"type": "boolean"
74
+
},
64
75
"conversationId": {
65
76
"type": "string"
66
77
},
67
78
"createdAt": {
68
79
"format": "datetime",
69
80
"type": "string"
70
81
},
71
82
"id": {
72
83
"type": "string"
73
84
},
74
85
"imageHeight": {
75
86
"type": "integer"
76
87
},
77
88
"imageUrl": {
78
89
"type": "string"
79
90
},
80
91
"imageWidth": {
81
92
"type": "integer"
82
93
},
83
94
"reactions": {
84
95
"items": {
85
96
"ref": "app.didpic.chat.defs#reactionSummary",
86
97
"type": "ref"
87
98
},
88
99
"type": "array"
89
100
},
90
101
"replyTo": {
91
102
"ref": "app.didpic.chat.defs#replyPreview",
92
103
"type": "ref"
93
104
},
94
105
"sharedPost": {
95
106
"ref": "app.didpic.feed.defs#postView",
96
107
"type": "ref"
97
108
},
98
109
"sharedPostUnavailable": {
99
110
"description": "True when this message shared a post that has since been deleted/taken down - sharedPost is omitted in that case.",
100
111
"type": "boolean"
101
112
},
102
113
"takedown": {
103
114
"type": "boolean"
104
115
},
105
116
"text": {
106
117
"type": "string"
107
118
}
108
119
},
109
120
"required": [
110
121
"id",
111
122
"conversationId",
112
123
"author",
113
124
"createdAt"
114
125
],
115
126
"type": "object"
116
127
},
117
128
"reactionSummary": {
118
129
"properties": {
119
130
"count": {
120
131
"minimum": 1,
121
132
"type": "integer"
122
133
},
123
134
"reaction": {
124
135
"type": "string"
125
136
},
126
137
"viewerReacted": {
127
138
"type": "boolean"
128
139
}
129
140
},
130
141
"required": [
131
142
"reaction",
132
143
"count",
133
144
"viewerReacted"
134
145
],
135
146
"type": "object"
136
147
},
137
148
"replyPreview": {
138
149
"properties": {
139
150
"authorDid": {
140
151
"type": "string"
141
152
},
153
+
"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.",
155
+
"type": "boolean"
156
+
},
142
157
"id": {
143
158
"type": "string"
144
159
},
145
160
"imageHeight": {
146
161
"type": "integer"
147
162
},
148
163
"imageUrl": {
149
164
"type": "string"
150
165
},
151
166
"imageWidth": {
152
167
"type": "integer"
153
168
},
154
169
"sharedPost": {
155
170
"ref": "app.didpic.feed.defs#postView",
156
171
"type": "ref"
157
172
},
158
173
"sharedPostUnavailable": {
159
174
"description": "True when the replied-to message shared a post that has since been deleted/taken down - sharedPost is omitted in that case.",
160
175
"type": "boolean"
161
176
},
162
177
"textSnippet": {
163
178
"type": "string"
164
179
},
165
180
"unavailable": {
166
181
"description": "True when the replied-to message has since been taken down - every other field is omitted in that case.",
167
182
"type": "boolean"
168
183
}
169
184
},
170
185
"required": [
171
186
"id",
172
187
"unavailable"
173
188
],
174
189
"type": "object"
175
190
}
176
191
},
177
192
"id": "app.didpic.chat.defs",
178
193
"lexicon": 1
179
194
}