app.didpic.chat.defs

lexicons.didpic.app

Schema Diff

+83 -5

From

CID
bafyreia2f7ut7qy...
Indexed At
2026-10-10 08:21 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

5 breaking changes, 45 non-breaking changes.

Breaking Changes (5)
  • 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") }
  • RemovedVertex RemovedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.hasImage" }
  • RemovedVertex RemovedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.isSharedPost" }
  • RemovedEdge RemovedEdge { src: "app.didpic.chat.defs#replyPreview", tgt: "app.didpic.chat.defs#replyPreview.hasImage", kind: "prop", name: Some("hasImage") }
  • RemovedEdge RemovedEdge { src: "app.didpic.chat.defs#replyPreview", tgt: "app.didpic.chat.defs#replyPreview.isSharedPost", kind: "prop", name: Some("isSharedPost") }
Non-Breaking Changes (45)
  • 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#conversationView.muted" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#conversationView.nickname" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#conversationView.otherLastReadAt" }
  • 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.blocked" }
  • 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.blocked" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.imageHeight" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.imageUrl" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.imageWidth" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.linkPreview" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.sharedPost" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.sharedPostUnavailable" }
  • 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", tgt: "app.didpic.chat.defs#conversationView.muted", kind: "prop", name: Some("muted") }
  • 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#conversationView", tgt: "app.didpic.chat.defs#conversationView.otherLastReadAt", kind: "prop", name: Some("otherLastReadAt") }
  • 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#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.blocked", kind: "prop", name: Some("blocked") }
  • 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.blocked", kind: "prop", name: Some("blocked") }
  • AddedEdge AddedEdge { src: "app.didpic.chat.defs#replyPreview", tgt: "app.didpic.chat.defs#replyPreview.imageHeight", kind: "prop", name: Some("imageHeight") }
  • AddedEdge AddedEdge { src: "app.didpic.chat.defs#replyPreview", tgt: "app.didpic.chat.defs#replyPreview.imageUrl", kind: "prop", name: Some("imageUrl") }
  • AddedEdge AddedEdge { src: "app.didpic.chat.defs#replyPreview", tgt: "app.didpic.chat.defs#replyPreview.imageWidth", kind: "prop", name: Some("imageWidth") }
  • 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", tgt: "app.didpic.chat.defs#replyPreview.sharedPost", kind: "prop", name: Some("sharedPost") }
  • AddedEdge AddedEdge { src: "app.didpic.chat.defs#replyPreview", tgt: "app.didpic.chat.defs#replyPreview.sharedPostUnavailable", kind: "prop", name: Some("sharedPostUnavailable") }
  • AddedEdge AddedEdge { src: "app.didpic.chat.defs#replyPreview.linkPreview", tgt: "app.didpic.chat.defs#linkPreview", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.didpic.chat.defs#replyPreview.sharedPost", tgt: "app.didpic.feed.defs#postView", kind: "ref", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.hasImage" }
  • RemovedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.isSharedPost" }

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#conversationView.muted" }
  • AddedVertex { vertex_id: "app.didpic.chat.defs#conversationView.nickname" }
  • AddedVertex { vertex_id: "app.didpic.chat.defs#conversationView.otherLastReadAt" }
  • 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.blocked" }
  • 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.blocked" }
  • AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.imageHeight" }
  • AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.imageUrl" }
  • AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.imageWidth" }
  • AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.linkPreview" }
  • AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.sharedPost" }
  • AddedVertex { vertex_id: "app.didpic.chat.defs#replyPreview.sharedPostUnavailable" }

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

Compare Other Versions

Lexicon Garden

@