app.didpic.chat.defs

lexicons.didpic.app

Schema Diff

+15 -0

From

CID
bafyreidkaosir37...
Indexed At
2026-10-11 00:41 UTC
View this version

To

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

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
}

Compare Other Versions

Lexicon Garden

@