app.didpic.chat.defs

lexicons.didpic.app

Schema Diff

+4 -0

From

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

To

CID
bafyreifeb3y7wrh...
Indexed At
2026-10-11 01:07 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#conversationView.nickname" }
  • AddedEdge AddedEdge { src: "app.didpic.chat.defs#conversationView", tgt: "app.didpic.chat.defs#conversationView.nickname", kind: "prop", name: Some("nickname") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.didpic.chat.defs#conversationView.nickname" }

Additional Notes

  • Non-breaking: AddedEdge { src: "app.didpic.chat.defs#conversationView", tgt: "app.didpic.chat.defs#conversationView.nickname", kind: "prop", name: Some("nickname") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "conversationView": {
5 5
      "properties": {
6 6
        "blockedParticipantDids": {
7 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 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 28
          "description": "True if the viewer has muted this conversation (app.didpic.chat.setMuted) - push notifications only, unread counts are unaffected.",
29 29
          "type": "boolean"
30 30
        },
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.",
33 +
          "type": "string"
34 +
        },
31 35
        "otherLastReadAt": {
32 36
          "description": "The other participant's last_read_at, for a 1:1 'Seen' indicator. Only present when participantCount is 2.",
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 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.",
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
    },
65 69
    "messageView": {
66 70
      "properties": {
67 71
        "author": {
68 72
          "ref": "app.didpic.actor.defs#profileBasic",
69 73
          "type": "ref"
70 74
        },
71 75
        "blocked": {
72 76
          "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 77
          "type": "boolean"
74 78
        },
75 79
        "conversationId": {
76 80
          "type": "string"
77 81
        },
78 82
        "createdAt": {
79 83
          "format": "datetime",
80 84
          "type": "string"
81 85
        },
82 86
        "id": {
83 87
          "type": "string"
84 88
        },
85 89
        "imageHeight": {
86 90
          "type": "integer"
87 91
        },
88 92
        "imageUrl": {
89 93
          "type": "string"
90 94
        },
91 95
        "imageWidth": {
92 96
          "type": "integer"
93 97
        },
94 98
        "reactions": {
95 99
          "items": {
96 100
            "ref": "app.didpic.chat.defs#reactionSummary",
97 101
            "type": "ref"
98 102
          },
99 103
          "type": "array"
100 104
        },
101 105
        "replyTo": {
102 106
          "ref": "app.didpic.chat.defs#replyPreview",
103 107
          "type": "ref"
104 108
        },
105 109
        "sharedPost": {
106 110
          "ref": "app.didpic.feed.defs#postView",
107 111
          "type": "ref"
108 112
        },
109 113
        "sharedPostUnavailable": {
110 114
          "description": "True when this message shared a post that has since been deleted/taken down - sharedPost is omitted in that case.",
111 115
          "type": "boolean"
112 116
        },
113 117
        "takedown": {
114 118
          "type": "boolean"
115 119
        },
116 120
        "text": {
117 121
          "type": "string"
118 122
        }
119 123
      },
120 124
      "required": [
121 125
        "id",
122 126
        "conversationId",
123 127
        "author",
124 128
        "createdAt"
125 129
      ],
126 130
      "type": "object"
127 131
    },
128 132
    "reactionSummary": {
129 133
      "properties": {
130 134
        "count": {
131 135
          "minimum": 1,
132 136
          "type": "integer"
133 137
        },
134 138
        "reaction": {
135 139
          "type": "string"
136 140
        },
137 141
        "viewerReacted": {
138 142
          "type": "boolean"
139 143
        }
140 144
      },
141 145
      "required": [
142 146
        "reaction",
143 147
        "count",
144 148
        "viewerReacted"
145 149
      ],
146 150
      "type": "object"
147 151
    },
148 152
    "replyPreview": {
149 153
      "properties": {
150 154
        "authorDid": {
151 155
          "type": "string"
152 156
        },
153 157
        "blocked": {
154 158
          "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 159
          "type": "boolean"
156 160
        },
157 161
        "id": {
158 162
          "type": "string"
159 163
        },
160 164
        "imageHeight": {
161 165
          "type": "integer"
162 166
        },
163 167
        "imageUrl": {
164 168
          "type": "string"
165 169
        },
166 170
        "imageWidth": {
167 171
          "type": "integer"
168 172
        },
169 173
        "sharedPost": {
170 174
          "ref": "app.didpic.feed.defs#postView",
171 175
          "type": "ref"
172 176
        },
173 177
        "sharedPostUnavailable": {
174 178
          "description": "True when the replied-to message shared a post that has since been deleted/taken down - sharedPost is omitted in that case.",
175 179
          "type": "boolean"
176 180
        },
177 181
        "textSnippet": {
178 182
          "type": "string"
179 183
        },
180 184
        "unavailable": {
181 185
          "description": "True when the replied-to message has since been taken down - every other field is omitted in that case.",
182 186
          "type": "boolean"
183 187
        }
184 188
      },
185 189
      "required": [
186 190
        "id",
187 191
        "unavailable"
188 192
      ],
189 193
      "type": "object"
190 194
    }
191 195
  },
192 196
  "id": "app.didpic.chat.defs",
193 197
  "lexicon": 1
194 198
}

Compare Other Versions

Lexicon Garden

@