app.didpic.chat.defs

lexicons.didpic.app

Schema Diff

+52 -9

From

CID
bafyreiau52ausp4...
Indexed At
2026-10-11 01:00 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

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

Compare Other Versions

Lexicon Garden

@