tools.ozone.moderation.defs

ozone-lexicons.bsky.social

Schema Diff

+41 -3

From

CID
bafyreifhnzfv3et...
Indexed At
2026-07-26 20:04 UTC
View this version

To

CID
bafyreidon7bz3r3...
Indexed At
2026-10-07 18:19 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 23 non-breaking changes.

Breaking Changes (2)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "tools.ozone.moderation.defs#convoView", src: "tools.ozone.moderation.defs#convoView", tgt: "tools.ozone.moderation.defs#convoView.convoId", kind: "prop", name: Some("convoId") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "tools.ozone.moderation.defs#convoView", src: "tools.ozone.moderation.defs#convoView", tgt: "tools.ozone.moderation.defs#convoView.did", kind: "prop", name: Some("did") }
Non-Breaking Changes (23)
  • AddedVertex AddedVertex { vertex_id: "chat.bsky.convo.defs#convoRef" }
  • AddedVertex AddedVertex { vertex_id: "tools.ozone.moderation.defs#convoView" }
  • AddedVertex AddedVertex { vertex_id: "tools.ozone.moderation.defs#convoView.convoId" }
  • AddedVertex AddedVertex { vertex_id: "tools.ozone.moderation.defs#convoView.did" }
  • AddedVertex AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventReport.appealActionId" }
  • AddedVertex AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventReport.appealActionType" }
  • AddedVertex AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventReport.appealLabel" }
  • AddedVertex AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventReport.appealSubmittedBy" }
  • AddedVertex AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventTag.durationInHours" }
  • AddedVertex AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventView.subject:variant3" }
  • AddedVertex AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventViewDetail.subject:variant4" }
  • AddedVertex AddedVertex { vertex_id: "tools.ozone.moderation.defs#subjectStatusView.subject:variant3" }
  • AddedEdge AddedEdge { src: "tools.ozone.moderation.defs#modEventReport", tgt: "tools.ozone.moderation.defs#modEventReport.appealActionId", kind: "prop", name: Some("appealActionId") }
  • AddedEdge AddedEdge { src: "tools.ozone.moderation.defs#modEventReport", tgt: "tools.ozone.moderation.defs#modEventReport.appealActionType", kind: "prop", name: Some("appealActionType") }
  • AddedEdge AddedEdge { src: "tools.ozone.moderation.defs#modEventReport", tgt: "tools.ozone.moderation.defs#modEventReport.appealLabel", kind: "prop", name: Some("appealLabel") }
  • AddedEdge AddedEdge { src: "tools.ozone.moderation.defs#modEventReport", tgt: "tools.ozone.moderation.defs#modEventReport.appealSubmittedBy", kind: "prop", name: Some("appealSubmittedBy") }
  • AddedEdge AddedEdge { src: "tools.ozone.moderation.defs#modEventTag", tgt: "tools.ozone.moderation.defs#modEventTag.durationInHours", kind: "prop", name: Some("durationInHours") }
  • AddedEdge AddedEdge { src: "tools.ozone.moderation.defs#modEventView.subject", tgt: "tools.ozone.moderation.defs#modEventView.subject:variant3", kind: "variant", name: Some("chat.bsky.convo.defs#convoRef") }
  • AddedEdge AddedEdge { src: "tools.ozone.moderation.defs#modEventView.subject:variant3", tgt: "chat.bsky.convo.defs#convoRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "tools.ozone.moderation.defs#modEventViewDetail.subject", tgt: "tools.ozone.moderation.defs#modEventViewDetail.subject:variant4", kind: "variant", name: Some("#convoView") }
  • AddedEdge AddedEdge { src: "tools.ozone.moderation.defs#modEventViewDetail.subject:variant4", tgt: "tools.ozone.moderation.defs#convoView", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "tools.ozone.moderation.defs#subjectStatusView.subject", tgt: "tools.ozone.moderation.defs#subjectStatusView.subject:variant3", kind: "variant", name: Some("chat.bsky.convo.defs#convoRef") }
  • AddedEdge AddedEdge { src: "tools.ozone.moderation.defs#subjectStatusView.subject:variant3", tgt: "chat.bsky.convo.defs#convoRef", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "chat.bsky.convo.defs#convoRef" }
  • AddedVertex { vertex_id: "tools.ozone.moderation.defs#convoView" }
  • AddedVertex { vertex_id: "tools.ozone.moderation.defs#convoView.convoId" }
  • AddedVertex { vertex_id: "tools.ozone.moderation.defs#convoView.did" }
  • AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventReport.appealActionId" }
  • AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventReport.appealActionType" }
  • AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventReport.appealLabel" }
  • AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventReport.appealSubmittedBy" }
  • AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventTag.durationInHours" }
  • AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventView.subject:variant3" }
  • AddedVertex { vertex_id: "tools.ozone.moderation.defs#modEventViewDetail.subject:variant4" }
  • AddedVertex { vertex_id: "tools.ozone.moderation.defs#subjectStatusView.subject:variant3" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "tools.ozone.moderation.defs#convoView", src: "tools.ozone.moderation.defs#convoView", tgt: "tools.ozone.moderation.defs#convoView.convoId", kind: "prop", name: Some("convoId") }
  • Breaking: RequiredEdgeAdded { vertex_id: "tools.ozone.moderation.defs#convoView", src: "tools.ozone.moderation.defs#convoView", tgt: "tools.ozone.moderation.defs#convoView.did", kind: "prop", name: Some("did") }
  • Non-breaking: AddedEdge { src: "tools.ozone.moderation.defs#modEventReport", tgt: "tools.ozone.moderation.defs#modEventReport.appealActionId", kind: "prop", name: Some("appealActionId") }
  • Non-breaking: AddedEdge { src: "tools.ozone.moderation.defs#modEventReport", tgt: "tools.ozone.moderation.defs#modEventReport.appealActionType", kind: "prop", name: Some("appealActionType") }
  • Non-breaking: AddedEdge { src: "tools.ozone.moderation.defs#modEventReport", tgt: "tools.ozone.moderation.defs#modEventReport.appealLabel", kind: "prop", name: Some("appealLabel") }
  • Non-breaking: AddedEdge { src: "tools.ozone.moderation.defs#modEventReport", tgt: "tools.ozone.moderation.defs#modEventReport.appealSubmittedBy", kind: "prop", name: Some("appealSubmittedBy") }
  • Non-breaking: AddedEdge { src: "tools.ozone.moderation.defs#modEventTag", tgt: "tools.ozone.moderation.defs#modEventTag.durationInHours", kind: "prop", name: Some("durationInHours") }
  • Non-breaking: AddedEdge { src: "tools.ozone.moderation.defs#modEventView.subject", tgt: "tools.ozone.moderation.defs#modEventView.subject:variant3", kind: "variant", name: Some("chat.bsky.convo.defs#convoRef") }
  • Non-breaking: AddedEdge { src: "tools.ozone.moderation.defs#modEventView.subject:variant3", tgt: "chat.bsky.convo.defs#convoRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "tools.ozone.moderation.defs#modEventViewDetail.subject", tgt: "tools.ozone.moderation.defs#modEventViewDetail.subject:variant4", kind: "variant", name: Some("#convoView") }
  • Non-breaking: AddedEdge { src: "tools.ozone.moderation.defs#modEventViewDetail.subject:variant4", tgt: "tools.ozone.moderation.defs#convoView", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "tools.ozone.moderation.defs#subjectStatusView.subject", tgt: "tools.ozone.moderation.defs#subjectStatusView.subject:variant3", kind: "variant", name: Some("chat.bsky.convo.defs#convoRef") }
  • Non-breaking: AddedEdge { src: "tools.ozone.moderation.defs#subjectStatusView.subject:variant3", tgt: "chat.bsky.convo.defs#convoRef", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "accountEvent": {
5 5
      "description": "Logs account status related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.",
6 6
      "properties": {
7 7
        "active": {
8 8
          "description": "Indicates that the account has a repository which can be fetched from the host that emitted this event.",
9 9
          "type": "boolean"
10 10
        },
11 11
        "comment": {
12 12
          "type": "string"
13 13
        },
14 14
        "status": {
15 15
          "knownValues": [
16 16
            "unknown",
17 17
            "deactivated",
18 18
            "deleted",
19 19
            "takendown",
20 20
            "suspended",
21 21
            "tombstoned"
22 22
          ],
23 23
          "type": "string"
24 24
        },
25 25
        "timestamp": {
26 26
          "format": "datetime",
27 27
          "type": "string"
28 28
        }
29 29
      },
30 30
      "required": [
31 31
        "timestamp",
32 32
        "active"
33 33
      ],
34 34
      "type": "object"
35 35
    },
36 36
    "accountHosting": {
37 37
      "properties": {
38 38
        "createdAt": {
39 39
          "format": "datetime",
40 40
          "type": "string"
41 41
        },
42 42
        "deactivatedAt": {
43 43
          "format": "datetime",
44 44
          "type": "string"
45 45
        },
46 46
        "deletedAt": {
47 47
          "format": "datetime",
48 48
          "type": "string"
49 49
        },
50 50
        "reactivatedAt": {
51 51
          "format": "datetime",
52 52
          "type": "string"
53 53
        },
54 54
        "status": {
55 55
          "knownValues": [
56 56
            "takendown",
57 57
            "suspended",
58 58
            "deleted",
59 59
            "deactivated",
60 60
            "unknown"
61 61
          ],
62 62
          "type": "string"
63 63
        },
64 64
        "updatedAt": {
65 65
          "format": "datetime",
66 66
          "type": "string"
67 67
        }
68 68
      },
69 69
      "required": [
70 70
        "status"
71 71
      ],
72 72
      "type": "object"
73 73
    },
74 74
    "accountStats": {
75 75
      "description": "Statistics about a particular account subject",
76 76
      "properties": {
77 77
        "appealCount": {
78 78
          "description": "Total number of appeals against a moderation action on the account",
79 79
          "type": "integer"
80 80
        },
81 81
        "escalateCount": {
82 82
          "description": "Number of times the account was escalated",
83 83
          "type": "integer"
84 84
        },
85 85
        "reportCount": {
86 86
          "description": "Total number of reports on the account",
87 87
          "type": "integer"
88 88
        },
89 89
        "suspendCount": {
90 90
          "description": "Number of times the account was suspended",
91 91
          "type": "integer"
92 92
        },
93 93
        "takedownCount": {
94 94
          "description": "Number of times the account was taken down",
95 95
          "type": "integer"
96 96
        }
97 97
      },
98 98
      "type": "object"
99 99
    },
100 100
    "accountStrike": {
101 101
      "description": "Strike information for an account",
102 102
      "properties": {
103 103
        "activeStrikeCount": {
104 104
          "description": "Current number of active strikes (excluding expired strikes)",
105 105
          "type": "integer"
106 106
        },
107 107
        "firstStrikeAt": {
108 108
          "description": "Timestamp of the first strike received",
109 109
          "format": "datetime",
110 110
          "type": "string"
111 111
        },
112 112
        "lastStrikeAt": {
113 113
          "description": "Timestamp of the most recent strike received",
114 114
          "format": "datetime",
115 115
          "type": "string"
116 116
        },
117 117
        "totalStrikeCount": {
118 118
          "description": "Total number of strikes ever received (including expired strikes)",
119 119
          "type": "integer"
120 120
        }
121 121
      },
122 122
      "type": "object"
123 123
    },
124 124
    "ageAssuranceEvent": {
125 125
      "description": "Age assurance info coming directly from users. Only works on DID subjects.",
126 126
      "properties": {
127 127
        "access": {
128 128
          "ref": "app.bsky.ageassurance.defs#access",
129 129
          "type": "ref"
130 130
        },
131 131
        "attemptId": {
132 132
          "description": "The unique identifier for this instance of the age assurance flow, in UUID format.",
133 133
          "type": "string"
134 134
        },
135 135
        "completeIp": {
136 136
          "description": "The IP address used when completing the AA flow.",
137 137
          "type": "string"
138 138
        },
139 139
        "completeUa": {
140 140
          "description": "The user agent used when completing the AA flow.",
141 141
          "type": "string"
142 142
        },
143 143
        "countryCode": {
144 144
          "description": "The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow.",
145 145
          "type": "string"
146 146
        },
147 147
        "createdAt": {
148 148
          "description": "The date and time of this write operation.",
149 149
          "format": "datetime",
150 150
          "type": "string"
151 151
        },
152 152
        "initIp": {
153 153
          "description": "The IP address used when initiating the AA flow.",
154 154
          "type": "string"
155 155
        },
156 156
        "initUa": {
157 157
          "description": "The user agent used when initiating the AA flow.",
158 158
          "type": "string"
159 159
        },
160 160
        "regionCode": {
161 161
          "description": "The ISO 3166-2 region code provided when beginning the Age Assurance flow.",
162 162
          "type": "string"
163 163
        },
164 164
        "status": {
165 165
          "description": "The status of the Age Assurance process.",
166 166
          "knownValues": [
167 167
            "unknown",
168 168
            "pending",
169 169
            "assured"
170 170
          ],
171 171
          "type": "string"
172 172
        }
173 173
      },
174 174
      "required": [
175 175
        "createdAt",
176 176
        "status",
177 177
        "attemptId"
178 178
      ],
179 179
      "type": "object"
180 180
    },
181 181
    "ageAssuranceOverrideEvent": {
182 182
      "description": "Age assurance status override by moderators. Only works on DID subjects.",
183 183
      "properties": {
184 184
        "access": {
185 185
          "ref": "app.bsky.ageassurance.defs#access",
186 186
          "type": "ref"
187 187
        },
188 188
        "comment": {
189 189
          "description": "Comment describing the reason for the override.",
190 190
          "minLength": 1,
191 191
          "type": "string"
192 192
        },
193 193
        "status": {
194 194
          "description": "The status to be set for the user decided by a moderator, overriding whatever value the user had previously. Use reset to default to original state.",
195 195
          "knownValues": [
196 196
            "assured",
197 197
            "reset",
198 198
            "blocked"
199 199
          ],
200 200
          "type": "string"
201 201
        }
202 202
      },
203 203
      "required": [
204 204
        "comment",
205 205
        "status"
206 206
      ],
207 207
      "type": "object"
208 208
    },
209 209
    "ageAssurancePurgeEvent": {
210 210
      "description": "Purges all age assurance events for the subject. Only works on DID subjects. Moderator-only.",
211 211
      "properties": {
212 212
        "comment": {
213 213
          "description": "Comment describing the reason for the purge.",
214 214
          "minLength": 1,
215 215
          "type": "string"
216 216
        }
217 217
      },
218 218
      "required": [
219 219
        "comment"
220 220
      ],
221 221
      "type": "object"
222 222
    },
223 223
    "blobView": {
224 224
      "properties": {
225 225
        "cid": {
226 226
          "format": "cid",
227 227
          "type": "string"
228 228
        },
229 229
        "createdAt": {
230 230
          "format": "datetime",
231 231
          "type": "string"
232 232
        },
233 233
        "details": {
234 234
          "refs": [
235 235
            "#imageDetails",
236 236
            "#videoDetails"
237 237
          ],
238 238
          "type": "union"
239 239
        },
240 240
        "mimeType": {
241 241
          "type": "string"
242 242
        },
243 243
        "moderation": {
244 244
          "ref": "#moderation",
245 245
          "type": "ref"
246 246
        },
247 247
        "size": {
248 248
          "type": "integer"
249 249
        }
250 250
      },
251 251
      "required": [
252 252
        "cid",
253 253
        "mimeType",
254 254
        "size",
255 255
        "createdAt"
256 256
      ],
257 257
      "type": "object"
258 258
    },
259 259
    "cancelScheduledTakedownEvent": {
260 260
      "description": "Logs cancellation of a scheduled takedown action for an account.",
261 261
      "properties": {
262 262
        "comment": {
263 263
          "type": "string"
264 264
        }
265 265
      },
266 266
      "type": "object"
267 267
    },
268 +
    "convoView": {
269 +
      "properties": {
270 +
        "convoId": {
271 +
          "type": "string"
272 +
        },
273 +
        "did": {
274 +
          "format": "did",
275 +
          "type": "string"
276 +
        }
277 +
      },
278 +
      "required": [
279 +
        "did",
280 +
        "convoId"
281 +
      ],
282 +
      "type": "object"
283 +
    },
268 284
    "identityEvent": {
269 285
      "description": "Logs identity related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.",
270 286
      "properties": {
271 287
        "comment": {
272 288
          "type": "string"
273 289
        },
274 290
        "handle": {
275 291
          "format": "handle",
276 292
          "type": "string"
277 293
        },
278 294
        "pdsHost": {
279 295
          "format": "uri",
280 296
          "type": "string"
281 297
        },
282 298
        "timestamp": {
283 299
          "format": "datetime",
284 300
          "type": "string"
285 301
        },
286 302
        "tombstone": {
287 303
          "type": "boolean"
288 304
        }
289 305
      },
290 306
      "required": [
291 307
        "timestamp"
292 308
      ],
293 309
      "type": "object"
294 310
    },
295 311
    "imageDetails": {
296 312
      "properties": {
297 313
        "height": {
298 314
          "type": "integer"
299 315
        },
300 316
        "width": {
301 317
          "type": "integer"
302 318
        }
303 319
      },
304 320
      "required": [
305 321
        "width",
306 322
        "height"
307 323
      ],
308 324
      "type": "object"
309 325
    },
310 326
    "modEventAcknowledge": {
311 327
      "properties": {
312 328
        "acknowledgeAccountSubjects": {
313 329
          "description": "If true, all other reports on content authored by this account will be resolved (acknowledged).",
314 330
          "type": "boolean"
315 331
        },
316 332
        "comment": {
317 333
          "type": "string"
318 334
        }
319 335
      },
320 336
      "type": "object"
321 337
    },
322 338
    "modEventComment": {
323 339
      "description": "Add a comment to a subject. An empty comment will clear any previously set sticky comment.",
324 340
      "properties": {
325 341
        "comment": {
326 342
          "type": "string"
327 343
        },
328 344
        "sticky": {
329 345
          "description": "Make the comment persistent on the subject",
330 346
          "type": "boolean"
331 347
        }
332 348
      },
333 349
      "type": "object"
334 350
    },
335 351
    "modEventDivert": {
336 352
      "description": "Divert a record's blobs to a 3rd party service for further scanning/tagging",
337 353
      "properties": {
338 354
        "comment": {
339 355
          "type": "string"
340 356
        }
341 357
      },
342 358
      "type": "object"
343 359
    },
344 360
    "modEventEmail": {
345 361
      "description": "Keep a log of outgoing email to a user",
346 362
      "properties": {
347 363
        "comment": {
348 364
          "description": "Additional comment about the outgoing comm.",
349 365
          "type": "string"
350 366
        },
351 367
        "content": {
352 368
          "description": "The content of the email sent to the user.",
353 369
          "type": "string"
354 370
        },
355 371
        "isDelivered": {
356 372
          "description": "Indicates whether the email was successfully delivered to the user's inbox.",
357 373
          "type": "boolean"
358 374
        },
359 375
        "policies": {
360 376
          "description": "Names/Keywords of the policies that necessitated the email.",
361 377
          "items": {
362 378
            "type": "string"
363 379
          },
364 380
          "maxLength": 5,
365 381
          "type": "array"
366 382
        },
367 383
        "severityLevel": {
368 384
          "description": "Severity level of the violation. Normally 'sev-1' that adds strike on repeat offense",
369 385
          "type": "string"
370 386
        },
371 387
        "strikeCount": {
372 388
          "description": "Number of strikes to assign to the user for this violation. Normally 0 as an indicator of a warning and only added as a strike on a repeat offense.",
373 389
          "type": "integer"
374 390
        },
375 391
        "strikeExpiresAt": {
376 392
          "description": "When the strike should expire. If not provided, the strike never expires.",
377 393
          "format": "datetime",
378 394
          "type": "string"
379 395
        },
380 396
        "subjectLine": {
381 397
          "description": "The subject line of the email sent to the user.",
382 398
          "type": "string"
383 399
        }
384 400
      },
385 401
      "required": [
386 402
        "subjectLine"
387 403
      ],
388 404
      "type": "object"
389 405
    },
390 406
    "modEventEscalate": {
391 407
      "properties": {
392 408
        "comment": {
393 409
          "type": "string"
394 410
        }
395 411
      },
396 412
      "type": "object"
397 413
    },
398 414
    "modEventLabel": {
399 415
      "description": "Apply/Negate labels on a subject",
400 416
      "properties": {
401 417
        "comment": {
402 418
          "type": "string"
403 419
        },
404 420
        "createLabelVals": {
405 421
          "items": {
406 422
            "type": "string"
407 423
          },
408 424
          "type": "array"
409 425
        },
410 426
        "durationInHours": {
411 427
          "description": "Indicates how long the label will remain on the subject. Only applies on labels that are being added.",
412 428
          "type": "integer"
413 429
        },
414 430
        "negateLabelVals": {
415 431
          "items": {
416 432
            "type": "string"
417 433
          },
418 434
          "type": "array"
419 435
        }
420 436
      },
421 437
      "required": [
422 438
        "createLabelVals",
423 439
        "negateLabelVals"
424 440
      ],
425 441
      "type": "object"
426 442
    },
427 443
    "modEventMute": {
428 444
      "description": "Mute incoming reports on a subject",
429 445
      "properties": {
430 446
        "comment": {
431 447
          "type": "string"
432 448
        },
433 449
        "durationInHours": {
434 450
          "description": "Indicates how long the subject should remain muted.",
435 451
          "type": "integer"
436 452
        }
437 453
      },
438 454
      "required": [
439 455
        "durationInHours"
440 456
      ],
441 457
      "type": "object"
442 458
    },
443 459
    "modEventMuteReporter": {
444 460
      "description": "Mute incoming reports from an account",
445 461
      "properties": {
446 462
        "comment": {
447 463
          "type": "string"
448 464
        },
449 465
        "durationInHours": {
450 466
          "description": "Indicates how long the account should remain muted. Falsy value here means a permanent mute.",
451 467
          "type": "integer"
452 468
        }
453 469
      },
454 470
      "type": "object"
455 471
    },
456 472
    "modEventPriorityScore": {
457 473
      "description": "Set priority score of the subject. Higher score means higher priority.",
458 474
      "properties": {
459 475
        "comment": {
460 476
          "type": "string"
461 477
        },
462 478
        "score": {
463 479
          "maximum": 100,
464 480
          "minimum": 0,
465 481
          "type": "integer"
466 482
        }
467 483
      },
468 484
      "required": [
469 485
        "score"
470 486
      ],
471 487
      "type": "object"
472 488
    },
473 489
    "modEventReport": {
474 490
      "description": "Report a subject",
475 491
      "properties": {
492 +
        "appealActionId": {
493 +
          "type": "integer"
494 +
        },
495 +
        "appealActionType": {
496 +
          "description": "Action reference type recorded when this appeal was submitted.",
497 +
          "type": "string"
498 +
        },
499 +
        "appealLabel": {
500 +
          "type": "string"
501 +
        },
502 +
        "appealSubmittedBy": {
503 +
          "description": "Moderator who submitted this appeal on behalf of the affected account. Returned by moderator event APIs.",
504 +
          "format": "did",
505 +
          "type": "string"
506 +
        },
476 507
        "comment": {
477 508
          "type": "string"
478 509
        },
479 510
        "isReporterMuted": {
480 511
          "description": "Set to true if the reporter was muted from reporting at the time of the event. These reports won't impact the reviewState of the subject.",
481 512
          "type": "boolean"
482 513
        },
483 514
        "reportType": {
484 515
          "ref": "com.atproto.moderation.defs#reasonType",
485 516
          "type": "ref"
486 517
        }
487 518
      },
488 519
      "required": [
489 520
        "reportType"
490 521
      ],
491 522
      "type": "object"
492 523
    },
493 524
    "modEventResolveAppeal": {
494 525
      "description": "Resolve appeal on a subject",
495 526
      "properties": {
496 527
        "comment": {
497 528
          "description": "Describe resolution.",
498 529
          "type": "string"
499 530
        }
500 531
      },
501 532
      "type": "object"
502 533
    },
503 534
    "modEventReverseTakedown": {
504 535
      "description": "Revert take down action on a subject",
505 536
      "properties": {
506 537
        "comment": {
507 538
          "description": "Describe reasoning behind the reversal.",
508 539
          "type": "string"
509 540
        },
510 541
        "policies": {
511 542
          "description": "Names/Keywords of the policy infraction for which takedown is being reversed.",
512 543
          "items": {
513 544
            "type": "string"
514 545
          },
515 546
          "maxLength": 5,
516 547
          "type": "array"
517 548
        },
518 549
        "severityLevel": {
519 550
          "description": "Severity level of the violation. Usually set from the last policy infraction's severity.",
520 551
          "type": "string"
521 552
        },
522 553
        "strikeCount": {
523 554
          "description": "Number of strikes to subtract from the user's strike count. Usually set from the last policy infraction's severity.",
524 555
          "type": "integer"
525 556
        }
526 557
      },
527 558
      "type": "object"
528 559
    },
529 560
    "modEventTag": {
530 561
      "description": "Add/Remove a tag on a subject",
531 562
      "properties": {
532 563
        "add": {
533 564
          "description": "Tags to be added to the subject. If already exists, won't be duplicated.",
534 565
          "items": {
535 566
            "type": "string"
536 567
          },
537 568
          "type": "array"
538 569
        },
539 570
        "comment": {
540 571
          "description": "Additional comment about added/removed tags.",
541 572
          "type": "string"
542 573
        },
574 +
        "durationInHours": {
575 +
          "description": "Indicates how long the tags being added should remain before automatically being removed. Only applies to tags being added.",
576 +
          "type": "integer"
577 +
        },
543 578
        "remove": {
544 579
          "description": "Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated.",
545 580
          "items": {
546 581
            "type": "string"
547 582
          },
548 583
          "type": "array"
549 584
        }
550 585
      },
551 586
      "required": [
552 587
        "add",
553 588
        "remove"
554 589
      ],
555 590
      "type": "object"
556 591
    },
557 592
    "modEventTakedown": {
558 593
      "description": "Take down a subject permanently or temporarily",
559 594
      "properties": {
560 595
        "acknowledgeAccountSubjects": {
561 596
          "description": "If true, all other reports on content authored by this account will be resolved (acknowledged).",
562 597
          "type": "boolean"
563 598
        },
564 599
        "comment": {
565 600
          "type": "string"
566 601
        },
567 602
        "durationInHours": {
568 603
          "description": "Indicates how long the takedown should be in effect before automatically expiring.",
569 604
          "type": "integer"
570 605
        },
571 606
        "policies": {
572 607
          "description": "Names/Keywords of the policies that drove the decision.",
573 608
          "items": {
574 609
            "type": "string"
575 610
          },
576 611
          "maxLength": 5,
577 612
          "type": "array"
578 613
        },
579 614
        "severityLevel": {
580 615
          "description": "Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.).",
581 616
          "type": "string"
582 617
        },
583 618
        "strikeCount": {
584 619
          "description": "Number of strikes to assign to the user for this violation.",
585 620
          "type": "integer"
586 621
        },
587 622
        "strikeExpiresAt": {
588 623
          "description": "When the strike should expire. If not provided, the strike never expires.",
589 624
          "format": "datetime",
590 625
          "type": "string"
591 626
        },
592 627
        "targetServices": {
593 628
          "description": "List of services where the takedown should be applied. If empty or not provided, takedown is applied on all configured services.",
594 629
          "items": {
595 630
            "knownValues": [
596 631
              "appview",
597 632
              "pds"
598 633
            ],
599 634
            "type": "string"
600 635
          },
601 636
          "type": "array"
602 637
        }
603 638
      },
604 639
      "type": "object"
605 640
    },
606 641
    "modEventUnmute": {
607 642
      "description": "Unmute action on a subject",
608 643
      "properties": {
609 644
        "comment": {
610 645
          "description": "Describe reasoning behind the reversal.",
611 646
          "type": "string"
612 647
        }
613 648
      },
614 649
      "type": "object"
615 650
    },
616 651
    "modEventUnmuteReporter": {
617 652
      "description": "Unmute incoming reports from an account",
618 653
      "properties": {
619 654
        "comment": {
620 655
          "description": "Describe reasoning behind the reversal.",
621 656
          "type": "string"
622 657
        }
623 658
      },
624 659
      "type": "object"
625 660
    },
626 661
    "modEventView": {
627 662
      "properties": {
628 663
        "createdAt": {
629 664
          "format": "datetime",
630 665
          "type": "string"
631 666
        },
632 667
        "createdBy": {
633 668
          "format": "did",
634 669
          "type": "string"
635 670
        },
636 671
        "creatorHandle": {
637 672
          "type": "string"
638 673
        },
639 674
        "event": {
640 675
          "refs": [
641 676
            "#modEventTakedown",
642 677
            "#modEventReverseTakedown",
643 678
            "#modEventComment",
644 679
            "#modEventReport",
645 680
            "#modEventLabel",
646 681
            "#modEventAcknowledge",
647 682
            "#modEventEscalate",
648 683
            "#modEventMute",
649 684
            "#modEventUnmute",
650 685
            "#modEventMuteReporter",
651 686
            "#modEventUnmuteReporter",
652 687
            "#modEventEmail",
653 688
            "#modEventResolveAppeal",
654 689
            "#modEventDivert",
655 690
            "#modEventTag",
656 691
            "#accountEvent",
657 692
            "#identityEvent",
658 693
            "#recordEvent",
659 694
            "#modEventPriorityScore",
660 695
            "#ageAssuranceEvent",
661 696
            "#ageAssuranceOverrideEvent",
662 697
            "#ageAssurancePurgeEvent",
663 698
            "#revokeAccountCredentialsEvent",
664 699
            "#scheduleTakedownEvent",
665 700
            "#cancelScheduledTakedownEvent"
666 701
          ],
667 702
          "type": "union"
668 703
        },
669 704
        "id": {
670 705
          "type": "integer"
671 706
        },
672 707
        "modTool": {
673 708
          "ref": "#modTool",
674 709
          "type": "ref"
675 710
        },
676 711
        "subject": {
677 712
          "refs": [
678 713
            "com.atproto.admin.defs#repoRef",
679 714
            "com.atproto.repo.strongRef",
680 -
            "chat.bsky.convo.defs#messageRef"
715 +
            "chat.bsky.convo.defs#messageRef",
716 +
            "chat.bsky.convo.defs#convoRef"
681 717
          ],
682 718
          "type": "union"
683 719
        },
684 720
        "subjectBlobCids": {
685 721
          "items": {
686 722
            "type": "string"
687 723
          },
688 724
          "type": "array"
689 725
        },
690 726
        "subjectHandle": {
691 727
          "type": "string"
692 728
        }
693 729
      },
694 730
      "required": [
695 731
        "id",
696 732
        "event",
697 733
        "subject",
698 734
        "subjectBlobCids",
699 735
        "createdBy",
700 736
        "createdAt"
701 737
      ],
702 738
      "type": "object"
703 739
    },
704 740
    "modEventViewDetail": {
705 741
      "properties": {
706 742
        "createdAt": {
707 743
          "format": "datetime",
708 744
          "type": "string"
709 745
        },
710 746
        "createdBy": {
711 747
          "format": "did",
712 748
          "type": "string"
713 749
        },
714 750
        "event": {
715 751
          "refs": [
716 752
            "#modEventTakedown",
717 753
            "#modEventReverseTakedown",
718 754
            "#modEventComment",
719 755
            "#modEventReport",
720 756
            "#modEventLabel",
721 757
            "#modEventAcknowledge",
722 758
            "#modEventEscalate",
723 759
            "#modEventMute",
724 760
            "#modEventUnmute",
725 761
            "#modEventMuteReporter",
726 762
            "#modEventUnmuteReporter",
727 763
            "#modEventEmail",
728 764
            "#modEventResolveAppeal",
729 765
            "#modEventDivert",
730 766
            "#modEventTag",
731 767
            "#accountEvent",
732 768
            "#identityEvent",
733 769
            "#recordEvent",
734 770
            "#modEventPriorityScore",
735 771
            "#ageAssuranceEvent",
736 772
            "#ageAssuranceOverrideEvent",
737 773
            "#ageAssurancePurgeEvent",
738 774
            "#revokeAccountCredentialsEvent",
739 775
            "#scheduleTakedownEvent",
740 776
            "#cancelScheduledTakedownEvent"
741 777
          ],
742 778
          "type": "union"
743 779
        },
744 780
        "id": {
745 781
          "type": "integer"
746 782
        },
747 783
        "modTool": {
748 784
          "ref": "#modTool",
749 785
          "type": "ref"
750 786
        },
751 787
        "subject": {
752 788
          "refs": [
753 789
            "#repoView",
754 790
            "#repoViewNotFound",
755 791
            "#recordView",
756 -
            "#recordViewNotFound"
792 +
            "#recordViewNotFound",
793 +
            "#convoView"
757 794
          ],
758 795
          "type": "union"
759 796
        },
760 797
        "subjectBlobs": {
761 798
          "items": {
762 799
            "ref": "#blobView",
763 800
            "type": "ref"
764 801
          },
765 802
          "type": "array"
766 803
        }
767 804
      },
768 805
      "required": [
769 806
        "id",
770 807
        "event",
771 808
        "subject",
772 809
        "subjectBlobs",
773 810
        "createdBy",
774 811
        "createdAt"
775 812
      ],
776 813
      "type": "object"
777 814
    },
778 815
    "modTool": {
779 816
      "description": "Moderation tool information for tracing the source of the action",
780 817
      "properties": {
781 818
        "meta": {
782 819
          "description": "Additional arbitrary metadata about the source",
783 820
          "type": "unknown"
784 821
        },
785 822
        "name": {
786 823
          "description": "Name/identifier of the source (e.g., 'automod', 'ozone/workspace')",
787 824
          "type": "string"
788 825
        }
789 826
      },
790 827
      "required": [
791 828
        "name"
792 829
      ],
793 830
      "type": "object"
794 831
    },
795 832
    "moderation": {
796 833
      "properties": {
797 834
        "subjectStatus": {
798 835
          "ref": "#subjectStatusView",
799 836
          "type": "ref"
800 837
        }
801 838
      },
802 839
      "type": "object"
803 840
    },
804 841
    "moderationDetail": {
805 842
      "properties": {
806 843
        "subjectStatus": {
807 844
          "ref": "#subjectStatusView",
808 845
          "type": "ref"
809 846
        }
810 847
      },
811 848
      "type": "object"
812 849
    },
813 850
    "recordEvent": {
814 851
      "description": "Logs lifecycle event on a record subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.",
815 852
      "properties": {
816 853
        "cid": {
817 854
          "format": "cid",
818 855
          "type": "string"
819 856
        },
820 857
        "comment": {
821 858
          "type": "string"
822 859
        },
823 860
        "op": {
824 861
          "knownValues": [
825 862
            "create",
826 863
            "update",
827 864
            "delete"
828 865
          ],
829 866
          "type": "string"
830 867
        },
831 868
        "timestamp": {
832 869
          "format": "datetime",
833 870
          "type": "string"
834 871
        }
835 872
      },
836 873
      "required": [
837 874
        "timestamp",
838 875
        "op"
839 876
      ],
840 877
      "type": "object"
841 878
    },
842 879
    "recordHosting": {
843 880
      "properties": {
844 881
        "createdAt": {
845 882
          "format": "datetime",
846 883
          "type": "string"
847 884
        },
848 885
        "deletedAt": {
849 886
          "format": "datetime",
850 887
          "type": "string"
851 888
        },
852 889
        "status": {
853 890
          "knownValues": [
854 891
            "deleted",
855 892
            "unknown"
856 893
          ],
857 894
          "type": "string"
858 895
        },
859 896
        "updatedAt": {
860 897
          "format": "datetime",
861 898
          "type": "string"
862 899
        }
863 900
      },
864 901
      "required": [
865 902
        "status"
866 903
      ],
867 904
      "type": "object"
868 905
    },
869 906
    "recordView": {
870 907
      "properties": {
871 908
        "blobCids": {
872 909
          "items": {
873 910
            "format": "cid",
874 911
            "type": "string"
875 912
          },
876 913
          "type": "array"
877 914
        },
878 915
        "cid": {
879 916
          "format": "cid",
880 917
          "type": "string"
881 918
        },
882 919
        "indexedAt": {
883 920
          "format": "datetime",
884 921
          "type": "string"
885 922
        },
886 923
        "moderation": {
887 924
          "ref": "#moderation",
888 925
          "type": "ref"
889 926
        },
890 927
        "repo": {
891 928
          "ref": "#repoView",
892 929
          "type": "ref"
893 930
        },
894 931
        "uri": {
895 932
          "format": "at-uri",
896 933
          "type": "string"
897 934
        },
898 935
        "value": {
899 936
          "type": "unknown"
900 937
        }
901 938
      },
902 939
      "required": [
903 940
        "uri",
904 941
        "cid",
905 942
        "value",
906 943
        "blobCids",
907 944
        "indexedAt",
908 945
        "moderation",
909 946
        "repo"
910 947
      ],
911 948
      "type": "object"
912 949
    },
913 950
    "recordViewDetail": {
914 951
      "properties": {
915 952
        "blobs": {
916 953
          "items": {
917 954
            "ref": "#blobView",
918 955
            "type": "ref"
919 956
          },
920 957
          "type": "array"
921 958
        },
922 959
        "cid": {
923 960
          "format": "cid",
924 961
          "type": "string"
925 962
        },
926 963
        "indexedAt": {
927 964
          "format": "datetime",
928 965
          "type": "string"
929 966
        },
930 967
        "labels": {
931 968
          "items": {
932 969
            "ref": "com.atproto.label.defs#label",
933 970
            "type": "ref"
934 971
          },
935 972
          "type": "array"
936 973
        },
937 974
        "moderation": {
938 975
          "ref": "#moderationDetail",
939 976
          "type": "ref"
940 977
        },
941 978
        "repo": {
942 979
          "ref": "#repoView",
943 980
          "type": "ref"
944 981
        },
945 982
        "uri": {
946 983
          "format": "at-uri",
947 984
          "type": "string"
948 985
        },
949 986
        "value": {
950 987
          "type": "unknown"
951 988
        }
952 989
      },
953 990
      "required": [
954 991
        "uri",
955 992
        "cid",
956 993
        "value",
957 994
        "blobs",
958 995
        "indexedAt",
959 996
        "moderation",
960 997
        "repo"
961 998
      ],
962 999
      "type": "object"
963 1000
    },
964 1001
    "recordViewNotFound": {
965 1002
      "properties": {
966 1003
        "uri": {
967 1004
          "format": "at-uri",
968 1005
          "type": "string"
969 1006
        }
970 1007
      },
971 1008
      "required": [
972 1009
        "uri"
973 1010
      ],
974 1011
      "type": "object"
975 1012
    },
976 1013
    "recordsStats": {
977 1014
      "description": "Statistics about a set of record subject items",
978 1015
      "properties": {
979 1016
        "appealedCount": {
980 1017
          "description": "Number of items that were appealed at least once",
981 1018
          "type": "integer"
982 1019
        },
983 1020
        "escalatedCount": {
984 1021
          "description": "Number of items that were escalated at least once",
985 1022
          "type": "integer"
986 1023
        },
987 1024
        "pendingCount": {
988 1025
          "description": "Number of item currently in \"reviewOpen\" or \"reviewEscalated\" state",
989 1026
          "type": "integer"
990 1027
        },
991 1028
        "processedCount": {
992 1029
          "description": "Number of item currently in \"reviewNone\" or \"reviewClosed\" state",
993 1030
          "type": "integer"
994 1031
        },
995 1032
        "reportedCount": {
996 1033
          "description": "Number of items that were reported at least once",
997 1034
          "type": "integer"
998 1035
        },
999 1036
        "subjectCount": {
1000 1037
          "description": "Total number of item in the set",
1001 1038
          "type": "integer"
1002 1039
        },
1003 1040
        "takendownCount": {
1004 1041
          "description": "Number of item currently taken down",
1005 1042
          "type": "integer"
1006 1043
        },
1007 1044
        "totalReports": {
1008 1045
          "description": "Cumulative sum of the number of reports on the items in the set",
1009 1046
          "type": "integer"
1010 1047
        }
1011 1048
      },
1012 1049
      "type": "object"
1013 1050
    },
1014 1051
    "repoView": {
1015 1052
      "properties": {
1016 1053
        "deactivatedAt": {
1017 1054
          "format": "datetime",
1018 1055
          "type": "string"
1019 1056
        },
1020 1057
        "did": {
1021 1058
          "format": "did",
1022 1059
          "type": "string"
1023 1060
        },
1024 1061
        "email": {
1025 1062
          "type": "string"
1026 1063
        },
1027 1064
        "handle": {
1028 1065
          "format": "handle",
1029 1066
          "type": "string"
1030 1067
        },
1031 1068
        "indexedAt": {
1032 1069
          "format": "datetime",
1033 1070
          "type": "string"
1034 1071
        },
1035 1072
        "inviteNote": {
1036 1073
          "type": "string"
1037 1074
        },
1038 1075
        "invitedBy": {
1039 1076
          "ref": "com.atproto.server.defs#inviteCode",
1040 1077
          "type": "ref"
1041 1078
        },
1042 1079
        "invitesDisabled": {
1043 1080
          "type": "boolean"
1044 1081
        },
1045 1082
        "moderation": {
1046 1083
          "ref": "#moderation",
1047 1084
          "type": "ref"
1048 1085
        },
1049 1086
        "relatedRecords": {
1050 1087
          "items": {
1051 1088
            "type": "unknown"
1052 1089
          },
1053 1090
          "type": "array"
1054 1091
        },
1055 1092
        "threatSignatures": {
1056 1093
          "items": {
1057 1094
            "ref": "com.atproto.admin.defs#threatSignature",
1058 1095
            "type": "ref"
1059 1096
          },
1060 1097
          "type": "array"
1061 1098
        }
1062 1099
      },
1063 1100
      "required": [
1064 1101
        "did",
1065 1102
        "handle",
1066 1103
        "relatedRecords",
1067 1104
        "indexedAt",
1068 1105
        "moderation"
1069 1106
      ],
1070 1107
      "type": "object"
1071 1108
    },
1072 1109
    "repoViewDetail": {
1073 1110
      "properties": {
1074 1111
        "deactivatedAt": {
1075 1112
          "format": "datetime",
1076 1113
          "type": "string"
1077 1114
        },
1078 1115
        "did": {
1079 1116
          "format": "did",
1080 1117
          "type": "string"
1081 1118
        },
1082 1119
        "email": {
1083 1120
          "type": "string"
1084 1121
        },
1085 1122
        "emailConfirmedAt": {
1086 1123
          "format": "datetime",
1087 1124
          "type": "string"
1088 1125
        },
1089 1126
        "handle": {
1090 1127
          "format": "handle",
1091 1128
          "type": "string"
1092 1129
        },
1093 1130
        "indexedAt": {
1094 1131
          "format": "datetime",
1095 1132
          "type": "string"
1096 1133
        },
1097 1134
        "inviteNote": {
1098 1135
          "type": "string"
1099 1136
        },
1100 1137
        "invitedBy": {
1101 1138
          "ref": "com.atproto.server.defs#inviteCode",
1102 1139
          "type": "ref"
1103 1140
        },
1104 1141
        "invites": {
1105 1142
          "items": {
1106 1143
            "ref": "com.atproto.server.defs#inviteCode",
1107 1144
            "type": "ref"
1108 1145
          },
1109 1146
          "type": "array"
1110 1147
        },
1111 1148
        "invitesDisabled": {
1112 1149
          "type": "boolean"
1113 1150
        },
1114 1151
        "labels": {
1115 1152
          "items": {
1116 1153
            "ref": "com.atproto.label.defs#label",
1117 1154
            "type": "ref"
1118 1155
          },
1119 1156
          "type": "array"
1120 1157
        },
1121 1158
        "moderation": {
1122 1159
          "ref": "#moderationDetail",
1123 1160
          "type": "ref"
1124 1161
        },
1125 1162
        "relatedRecords": {
1126 1163
          "items": {
1127 1164
            "type": "unknown"
1128 1165
          },
1129 1166
          "type": "array"
1130 1167
        },
1131 1168
        "threatSignatures": {
1132 1169
          "items": {
1133 1170
            "ref": "com.atproto.admin.defs#threatSignature",
1134 1171
            "type": "ref"
1135 1172
          },
1136 1173
          "type": "array"
1137 1174
        }
1138 1175
      },
1139 1176
      "required": [
1140 1177
        "did",
1141 1178
        "handle",
1142 1179
        "relatedRecords",
1143 1180
        "indexedAt",
1144 1181
        "moderation"
1145 1182
      ],
1146 1183
      "type": "object"
1147 1184
    },
1148 1185
    "repoViewNotFound": {
1149 1186
      "properties": {
1150 1187
        "did": {
1151 1188
          "format": "did",
1152 1189
          "type": "string"
1153 1190
        }
1154 1191
      },
1155 1192
      "required": [
1156 1193
        "did"
1157 1194
      ],
1158 1195
      "type": "object"
1159 1196
    },
1160 1197
    "reporterStats": {
1161 1198
      "properties": {
1162 1199
        "accountReportCount": {
1163 1200
          "description": "The total number of reports made by the user on accounts.",
1164 1201
          "type": "integer"
1165 1202
        },
1166 1203
        "did": {
1167 1204
          "format": "did",
1168 1205
          "type": "string"
1169 1206
        },
1170 1207
        "labeledAccountCount": {
1171 1208
          "description": "The total number of accounts labeled as a result of the user's reports.",
1172 1209
          "type": "integer"
1173 1210
        },
1174 1211
        "labeledRecordCount": {
1175 1212
          "description": "The total number of records labeled as a result of the user's reports.",
1176 1213
          "type": "integer"
1177 1214
        },
1178 1215
        "recordReportCount": {
1179 1216
          "description": "The total number of reports made by the user on records.",
1180 1217
          "type": "integer"
1181 1218
        },
1182 1219
        "reportedAccountCount": {
1183 1220
          "description": "The total number of accounts reported by the user.",
1184 1221
          "type": "integer"
1185 1222
        },
1186 1223
        "reportedRecordCount": {
1187 1224
          "description": "The total number of records reported by the user.",
1188 1225
          "type": "integer"
1189 1226
        },
1190 1227
        "takendownAccountCount": {
1191 1228
          "description": "The total number of accounts taken down as a result of the user's reports.",
1192 1229
          "type": "integer"
1193 1230
        },
1194 1231
        "takendownRecordCount": {
1195 1232
          "description": "The total number of records taken down as a result of the user's reports.",
1196 1233
          "type": "integer"
1197 1234
        }
1198 1235
      },
1199 1236
      "required": [
1200 1237
        "did",
1201 1238
        "accountReportCount",
1202 1239
        "recordReportCount",
1203 1240
        "reportedAccountCount",
1204 1241
        "reportedRecordCount",
1205 1242
        "takendownAccountCount",
1206 1243
        "takendownRecordCount",
1207 1244
        "labeledAccountCount",
1208 1245
        "labeledRecordCount"
1209 1246
      ],
1210 1247
      "type": "object"
1211 1248
    },
1212 1249
    "reviewClosed": {
1213 1250
      "description": "Moderator review status of a subject: Closed. Indicates that the subject was already reviewed and resolved by a moderator",
1214 1251
      "type": "token"
1215 1252
    },
1216 1253
    "reviewEscalated": {
1217 1254
      "description": "Moderator review status of a subject: Escalated. Indicates that the subject was escalated for review by a moderator",
1218 1255
      "type": "token"
1219 1256
    },
1220 1257
    "reviewNone": {
1221 1258
      "description": "Moderator review status of a subject: Unnecessary. Indicates that the subject does not need a review at the moment but there is probably some moderation related metadata available for it",
1222 1259
      "type": "token"
1223 1260
    },
1224 1261
    "reviewOpen": {
1225 1262
      "description": "Moderator review status of a subject: Open. Indicates that the subject needs to be reviewed by a moderator",
1226 1263
      "type": "token"
1227 1264
    },
1228 1265
    "revokeAccountCredentialsEvent": {
1229 1266
      "description": "Account credentials revocation by moderators. Only works on DID subjects.",
1230 1267
      "properties": {
1231 1268
        "comment": {
1232 1269
          "description": "Comment describing the reason for the revocation.",
1233 1270
          "minLength": 1,
1234 1271
          "type": "string"
1235 1272
        }
1236 1273
      },
1237 1274
      "required": [
1238 1275
        "comment"
1239 1276
      ],
1240 1277
      "type": "object"
1241 1278
    },
1242 1279
    "scheduleTakedownEvent": {
1243 1280
      "description": "Logs a scheduled takedown action for an account.",
1244 1281
      "properties": {
1245 1282
        "comment": {
1246 1283
          "type": "string"
1247 1284
        },
1248 1285
        "executeAfter": {
1249 1286
          "format": "datetime",
1250 1287
          "type": "string"
1251 1288
        },
1252 1289
        "executeAt": {
1253 1290
          "format": "datetime",
1254 1291
          "type": "string"
1255 1292
        },
1256 1293
        "executeUntil": {
1257 1294
          "format": "datetime",
1258 1295
          "type": "string"
1259 1296
        }
1260 1297
      },
1261 1298
      "type": "object"
1262 1299
    },
1263 1300
    "scheduledActionView": {
1264 1301
      "description": "View of a scheduled moderation action",
1265 1302
      "properties": {
1266 1303
        "action": {
1267 1304
          "description": "Type of action to be executed",
1268 1305
          "knownValues": [
1269 1306
            "takedown"
1270 1307
          ],
1271 1308
          "type": "string"
1272 1309
        },
1273 1310
        "createdAt": {
1274 1311
          "description": "When the scheduled action was created",
1275 1312
          "format": "datetime",
1276 1313
          "type": "string"
1277 1314
        },
1278 1315
        "createdBy": {
1279 1316
          "description": "DID of the user who created this scheduled action",
1280 1317
          "format": "did",
1281 1318
          "type": "string"
1282 1319
        },
1283 1320
        "did": {
1284 1321
          "description": "Subject DID for the action",
1285 1322
          "format": "did",
1286 1323
          "type": "string"
1287 1324
        },
1288 1325
        "eventData": {
1289 1326
          "description": "Serialized event object that will be propagated to the event when performed",
1290 1327
          "type": "unknown"
1291 1328
        },
1292 1329
        "executeAfter": {
1293 1330
          "description": "Earliest time to execute the action (for randomized scheduling)",
1294 1331
          "format": "datetime",
1295 1332
          "type": "string"
1296 1333
        },
1297 1334
        "executeAt": {
1298 1335
          "description": "Exact time to execute the action",
1299 1336
          "format": "datetime",
1300 1337
          "type": "string"
1301 1338
        },
1302 1339
        "executeUntil": {
1303 1340
          "description": "Latest time to execute the action (for randomized scheduling)",
1304 1341
          "format": "datetime",
1305 1342
          "type": "string"
1306 1343
        },
1307 1344
        "executionEventId": {
1308 1345
          "description": "ID of the moderation event created when action was successfully executed",
1309 1346
          "type": "integer"
1310 1347
        },
1311 1348
        "id": {
1312 1349
          "description": "Auto-incrementing row ID",
1313 1350
          "type": "integer"
1314 1351
        },
1315 1352
        "lastExecutedAt": {
1316 1353
          "description": "When the action was last attempted to be executed",
1317 1354
          "format": "datetime",
1318 1355
          "type": "string"
1319 1356
        },
1320 1357
        "lastFailureReason": {
1321 1358
          "description": "Reason for the last execution failure",
1322 1359
          "type": "string"
1323 1360
        },
1324 1361
        "randomizeExecution": {
1325 1362
          "description": "Whether execution time should be randomized within the specified range",
1326 1363
          "type": "boolean"
1327 1364
        },
1328 1365
        "status": {
1329 1366
          "description": "Current status of the scheduled action",
1330 1367
          "knownValues": [
1331 1368
            "pending",
1332 1369
            "executed",
1333 1370
            "cancelled",
1334 1371
            "failed"
1335 1372
          ],
1336 1373
          "type": "string"
1337 1374
        },
1338 1375
        "updatedAt": {
1339 1376
          "description": "When the scheduled action was last updated",
1340 1377
          "format": "datetime",
1341 1378
          "type": "string"
1342 1379
        }
1343 1380
      },
1344 1381
      "required": [
1345 1382
        "id",
1346 1383
        "action",
1347 1384
        "did",
1348 1385
        "createdBy",
1349 1386
        "createdAt",
1350 1387
        "status"
1351 1388
      ],
1352 1389
      "type": "object"
1353 1390
    },
1354 1391
    "subjectReviewState": {
1355 1392
      "knownValues": [
1356 1393
        "tools.ozone.moderation.defs#reviewOpen",
1357 1394
        "tools.ozone.moderation.defs#reviewEscalated",
1358 1395
        "tools.ozone.moderation.defs#reviewClosed",
1359 1396
        "tools.ozone.moderation.defs#reviewNone"
1360 1397
      ],
1361 1398
      "type": "string"
1362 1399
    },
1363 1400
    "subjectStatusView": {
1364 1401
      "properties": {
1365 1402
        "accountStats": {
1366 1403
          "description": "Statistics related to the account subject",
1367 1404
          "ref": "#accountStats",
1368 1405
          "type": "ref"
1369 1406
        },
1370 1407
        "accountStrike": {
1371 1408
          "description": "Strike information for the account (account-level only)",
1372 1409
          "ref": "#accountStrike",
1373 1410
          "type": "ref"
1374 1411
        },
1375 1412
        "ageAssuranceState": {
1376 1413
          "description": "Current age assurance state of the subject.",
1377 1414
          "knownValues": [
1378 1415
            "pending",
1379 1416
            "assured",
1380 1417
            "unknown",
1381 1418
            "reset",
1382 1419
            "blocked"
1383 1420
          ],
1384 1421
          "type": "string"
1385 1422
        },
1386 1423
        "ageAssuranceUpdatedBy": {
1387 1424
          "description": "Whether or not the last successful update to age assurance was made by the user or admin.",
1388 1425
          "knownValues": [
1389 1426
            "admin",
1390 1427
            "user"
1391 1428
          ],
1392 1429
          "type": "string"
1393 1430
        },
1394 1431
        "appealed": {
1395 1432
          "description": "True indicates that the a previously taken moderator action was appealed against, by the author of the content. False indicates last appeal was resolved by moderators.",
1396 1433
          "type": "boolean"
1397 1434
        },
1398 1435
        "comment": {
1399 1436
          "description": "Sticky comment on the subject.",
1400 1437
          "type": "string"
1401 1438
        },
1402 1439
        "createdAt": {
1403 1440
          "description": "Timestamp referencing the first moderation status impacting event was emitted on the subject",
1404 1441
          "format": "datetime",
1405 1442
          "type": "string"
1406 1443
        },
1407 1444
        "hosting": {
1408 1445
          "refs": [
1409 1446
            "#accountHosting",
1410 1447
            "#recordHosting"
1411 1448
          ],
1412 1449
          "type": "union"
1413 1450
        },
1414 1451
        "id": {
1415 1452
          "type": "integer"
1416 1453
        },
1417 1454
        "lastAppealedAt": {
1418 1455
          "description": "Timestamp referencing when the author of the subject appealed a moderation action",
1419 1456
          "format": "datetime",
1420 1457
          "type": "string"
1421 1458
        },
1422 1459
        "lastReportedAt": {
1423 1460
          "format": "datetime",
1424 1461
          "type": "string"
1425 1462
        },
1426 1463
        "lastReviewedAt": {
1427 1464
          "format": "datetime",
1428 1465
          "type": "string"
1429 1466
        },
1430 1467
        "lastReviewedBy": {
1431 1468
          "format": "did",
1432 1469
          "type": "string"
1433 1470
        },
1434 1471
        "muteReportingUntil": {
1435 1472
          "format": "datetime",
1436 1473
          "type": "string"
1437 1474
        },
1438 1475
        "muteUntil": {
1439 1476
          "format": "datetime",
1440 1477
          "type": "string"
1441 1478
        },
1442 1479
        "priorityScore": {
1443 1480
          "description": "Numeric value representing the level of priority. Higher score means higher priority.",
1444 1481
          "maximum": 100,
1445 1482
          "minimum": 0,
1446 1483
          "type": "integer"
1447 1484
        },
1448 1485
        "recordsStats": {
1449 1486
          "description": "Statistics related to the record subjects authored by the subject's account",
1450 1487
          "ref": "#recordsStats",
1451 1488
          "type": "ref"
1452 1489
        },
1453 1490
        "reviewState": {
1454 1491
          "ref": "#subjectReviewState",
1455 1492
          "type": "ref"
1456 1493
        },
1457 1494
        "subject": {
1458 1495
          "refs": [
1459 1496
            "com.atproto.admin.defs#repoRef",
1460 1497
            "com.atproto.repo.strongRef",
1461 -
            "chat.bsky.convo.defs#messageRef"
1498 +
            "chat.bsky.convo.defs#messageRef",
1499 +
            "chat.bsky.convo.defs#convoRef"
1462 1500
          ],
1463 1501
          "type": "union"
1464 1502
        },
1465 1503
        "subjectBlobCids": {
1466 1504
          "items": {
1467 1505
            "format": "cid",
1468 1506
            "type": "string"
1469 1507
          },
1470 1508
          "type": "array"
1471 1509
        },
1472 1510
        "subjectRepoHandle": {
1473 1511
          "type": "string"
1474 1512
        },
1475 1513
        "suspendUntil": {
1476 1514
          "format": "datetime",
1477 1515
          "type": "string"
1478 1516
        },
1479 1517
        "tags": {
1480 1518
          "items": {
1481 1519
            "type": "string"
1482 1520
          },
1483 1521
          "type": "array"
1484 1522
        },
1485 1523
        "takendown": {
1486 1524
          "type": "boolean"
1487 1525
        },
1488 1526
        "updatedAt": {
1489 1527
          "description": "Timestamp referencing when the last update was made to the moderation status of the subject",
1490 1528
          "format": "datetime",
1491 1529
          "type": "string"
1492 1530
        }
1493 1531
      },
1494 1532
      "required": [
1495 1533
        "id",
1496 1534
        "subject",
1497 1535
        "createdAt",
1498 1536
        "updatedAt",
1499 1537
        "reviewState"
1500 1538
      ],
1501 1539
      "type": "object"
1502 1540
    },
1503 1541
    "subjectView": {
1504 1542
      "description": "Detailed view of a subject. For record subjects, the author's repo and profile will be returned.",
1505 1543
      "properties": {
1506 1544
        "profile": {
1507 1545
          "refs": [],
1508 1546
          "type": "union"
1509 1547
        },
1510 1548
        "record": {
1511 1549
          "ref": "#recordViewDetail",
1512 1550
          "type": "ref"
1513 1551
        },
1514 1552
        "repo": {
1515 1553
          "ref": "#repoViewDetail",
1516 1554
          "type": "ref"
1517 1555
        },
1518 1556
        "status": {
1519 1557
          "ref": "#subjectStatusView",
1520 1558
          "type": "ref"
1521 1559
        },
1522 1560
        "subject": {
1523 1561
          "type": "string"
1524 1562
        },
1525 1563
        "type": {
1526 1564
          "ref": "com.atproto.moderation.defs#subjectType",
1527 1565
          "type": "ref"
1528 1566
        }
1529 1567
      },
1530 1568
      "required": [
1531 1569
        "type",
1532 1570
        "subject"
1533 1571
      ],
1534 1572
      "type": "object"
1535 1573
    },
1536 1574
    "timelineEventPlcCreate": {
1537 1575
      "description": "Moderation event timeline event for a PLC create operation",
1538 1576
      "type": "token"
1539 1577
    },
1540 1578
    "timelineEventPlcOperation": {
1541 1579
      "description": "Moderation event timeline event for generic PLC operation",
1542 1580
      "type": "token"
1543 1581
    },
1544 1582
    "timelineEventPlcTombstone": {
1545 1583
      "description": "Moderation event timeline event for a PLC tombstone operation",
1546 1584
      "type": "token"
1547 1585
    },
1548 1586
    "videoDetails": {
1549 1587
      "properties": {
1550 1588
        "height": {
1551 1589
          "type": "integer"
1552 1590
        },
1553 1591
        "length": {
1554 1592
          "type": "integer"
1555 1593
        },
1556 1594
        "width": {
1557 1595
          "type": "integer"
1558 1596
        }
1559 1597
      },
1560 1598
      "required": [
1561 1599
        "width",
1562 1600
        "height",
1563 1601
        "length"
1564 1602
      ],
1565 1603
      "type": "object"
1566 1604
    }
1567 1605
  },
1568 1606
  "id": "tools.ozone.moderation.defs",
1569 1607
  "lexicon": 1
1570 1608
}

Compare Other Versions

Lexicon Garden

@