app.didpic.chat.defs

lexicons.didpic.app

Schema Diff

+14 -10

From

CID
bafyreigrzk73hpv...
Indexed At
2026-10-11 02:09 UTC
View this version

To

CID
bafyreih2w6vvgqd...
Indexed At
2026-10-11 02:28 UTC
View this version

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.",
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 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 the author is blocked by or blocking the viewer.",
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 -
          "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.",
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 the author's account is unavailable.",
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 -
          "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.",
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 -
          "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.",
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 is gone or unavailable.",
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
}

Compare Other Versions

Lexicon Garden

@