tools.ozone.moderation.defs
Schema Diff
+26 -3
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 15 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 (15)
- 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#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#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#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#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": {
476
492
"comment": {
477
493
"type": "string"
478
494
},
479
495
"isReporterMuted": {
480
496
"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
497
"type": "boolean"
482
498
},
483
499
"reportType": {
484
500
"ref": "com.atproto.moderation.defs#reasonType",
485
501
"type": "ref"
486
502
}
487
503
},
488
504
"required": [
489
505
"reportType"
490
506
],
491
507
"type": "object"
492
508
},
493
509
"modEventResolveAppeal": {
494
510
"description": "Resolve appeal on a subject",
495
511
"properties": {
496
512
"comment": {
497
513
"description": "Describe resolution.",
498
514
"type": "string"
499
515
}
500
516
},
501
517
"type": "object"
502
518
},
503
519
"modEventReverseTakedown": {
504
520
"description": "Revert take down action on a subject",
505
521
"properties": {
506
522
"comment": {
507
523
"description": "Describe reasoning behind the reversal.",
508
524
"type": "string"
509
525
},
510
526
"policies": {
511
527
"description": "Names/Keywords of the policy infraction for which takedown is being reversed.",
512
528
"items": {
513
529
"type": "string"
514
530
},
515
531
"maxLength": 5,
516
532
"type": "array"
517
533
},
518
534
"severityLevel": {
519
535
"description": "Severity level of the violation. Usually set from the last policy infraction's severity.",
520
536
"type": "string"
521
537
},
522
538
"strikeCount": {
523
539
"description": "Number of strikes to subtract from the user's strike count. Usually set from the last policy infraction's severity.",
524
540
"type": "integer"
525
541
}
526
542
},
527
543
"type": "object"
528
544
},
529
545
"modEventTag": {
530
546
"description": "Add/Remove a tag on a subject",
531
547
"properties": {
532
548
"add": {
533
549
"description": "Tags to be added to the subject. If already exists, won't be duplicated.",
534
550
"items": {
535
551
"type": "string"
536
552
},
537
553
"type": "array"
538
554
},
539
555
"comment": {
540
556
"description": "Additional comment about added/removed tags.",
541
557
"type": "string"
542
558
},
559
+
"durationInHours": {
560
+
"description": "Indicates how long the tags being added should remain before automatically being removed. Only applies to tags being added.",
561
+
"type": "integer"
562
+
},
543
563
"remove": {
544
564
"description": "Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated.",
545
565
"items": {
546
566
"type": "string"
547
567
},
548
568
"type": "array"
549
569
}
550
570
},
551
571
"required": [
552
572
"add",
553
573
"remove"
554
574
],
555
575
"type": "object"
556
576
},
557
577
"modEventTakedown": {
558
578
"description": "Take down a subject permanently or temporarily",
559
579
"properties": {
560
580
"acknowledgeAccountSubjects": {
561
581
"description": "If true, all other reports on content authored by this account will be resolved (acknowledged).",
562
582
"type": "boolean"
563
583
},
564
584
"comment": {
565
585
"type": "string"
566
586
},
567
587
"durationInHours": {
568
588
"description": "Indicates how long the takedown should be in effect before automatically expiring.",
569
589
"type": "integer"
570
590
},
571
591
"policies": {
572
592
"description": "Names/Keywords of the policies that drove the decision.",
573
593
"items": {
574
594
"type": "string"
575
595
},
576
596
"maxLength": 5,
577
597
"type": "array"
578
598
},
579
599
"severityLevel": {
580
600
"description": "Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.).",
581
601
"type": "string"
582
602
},
583
603
"strikeCount": {
584
604
"description": "Number of strikes to assign to the user for this violation.",
585
605
"type": "integer"
586
606
},
587
607
"strikeExpiresAt": {
588
608
"description": "When the strike should expire. If not provided, the strike never expires.",
589
609
"format": "datetime",
590
610
"type": "string"
591
611
},
592
612
"targetServices": {
593
613
"description": "List of services where the takedown should be applied. If empty or not provided, takedown is applied on all configured services.",
594
614
"items": {
595
615
"knownValues": [
596
616
"appview",
597
617
"pds"
598
618
],
599
619
"type": "string"
600
620
},
601
621
"type": "array"
602
622
}
603
623
},
604
624
"type": "object"
605
625
},
606
626
"modEventUnmute": {
607
627
"description": "Unmute action on a subject",
608
628
"properties": {
609
629
"comment": {
610
630
"description": "Describe reasoning behind the reversal.",
611
631
"type": "string"
612
632
}
613
633
},
614
634
"type": "object"
615
635
},
616
636
"modEventUnmuteReporter": {
617
637
"description": "Unmute incoming reports from an account",
618
638
"properties": {
619
639
"comment": {
620
640
"description": "Describe reasoning behind the reversal.",
621
641
"type": "string"
622
642
}
623
643
},
624
644
"type": "object"
625
645
},
626
646
"modEventView": {
627
647
"properties": {
628
648
"createdAt": {
629
649
"format": "datetime",
630
650
"type": "string"
631
651
},
632
652
"createdBy": {
633
653
"format": "did",
634
654
"type": "string"
635
655
},
636
656
"creatorHandle": {
637
657
"type": "string"
638
658
},
639
659
"event": {
640
660
"refs": [
641
661
"#modEventTakedown",
642
662
"#modEventReverseTakedown",
643
663
"#modEventComment",
644
664
"#modEventReport",
645
665
"#modEventLabel",
646
666
"#modEventAcknowledge",
647
667
"#modEventEscalate",
648
668
"#modEventMute",
649
669
"#modEventUnmute",
650
670
"#modEventMuteReporter",
651
671
"#modEventUnmuteReporter",
652
672
"#modEventEmail",
653
673
"#modEventResolveAppeal",
654
674
"#modEventDivert",
655
675
"#modEventTag",
656
676
"#accountEvent",
657
677
"#identityEvent",
658
678
"#recordEvent",
659
679
"#modEventPriorityScore",
660
680
"#ageAssuranceEvent",
661
681
"#ageAssuranceOverrideEvent",
662
682
"#ageAssurancePurgeEvent",
663
683
"#revokeAccountCredentialsEvent",
664
684
"#scheduleTakedownEvent",
665
685
"#cancelScheduledTakedownEvent"
666
686
],
667
687
"type": "union"
668
688
},
669
689
"id": {
670
690
"type": "integer"
671
691
},
672
692
"modTool": {
673
693
"ref": "#modTool",
674
694
"type": "ref"
675
695
},
676
696
"subject": {
677
697
"refs": [
678
698
"com.atproto.admin.defs#repoRef",
679
699
"com.atproto.repo.strongRef",
680
-
"chat.bsky.convo.defs#messageRef"
700
+
"chat.bsky.convo.defs#messageRef",
701
+
"chat.bsky.convo.defs#convoRef"
681
702
],
682
703
"type": "union"
683
704
},
684
705
"subjectBlobCids": {
685
706
"items": {
686
707
"type": "string"
687
708
},
688
709
"type": "array"
689
710
},
690
711
"subjectHandle": {
691
712
"type": "string"
692
713
}
693
714
},
694
715
"required": [
695
716
"id",
696
717
"event",
697
718
"subject",
698
719
"subjectBlobCids",
699
720
"createdBy",
700
721
"createdAt"
701
722
],
702
723
"type": "object"
703
724
},
704
725
"modEventViewDetail": {
705
726
"properties": {
706
727
"createdAt": {
707
728
"format": "datetime",
708
729
"type": "string"
709
730
},
710
731
"createdBy": {
711
732
"format": "did",
712
733
"type": "string"
713
734
},
714
735
"event": {
715
736
"refs": [
716
737
"#modEventTakedown",
717
738
"#modEventReverseTakedown",
718
739
"#modEventComment",
719
740
"#modEventReport",
720
741
"#modEventLabel",
721
742
"#modEventAcknowledge",
722
743
"#modEventEscalate",
723
744
"#modEventMute",
724
745
"#modEventUnmute",
725
746
"#modEventMuteReporter",
726
747
"#modEventUnmuteReporter",
727
748
"#modEventEmail",
728
749
"#modEventResolveAppeal",
729
750
"#modEventDivert",
730
751
"#modEventTag",
731
752
"#accountEvent",
732
753
"#identityEvent",
733
754
"#recordEvent",
734
755
"#modEventPriorityScore",
735
756
"#ageAssuranceEvent",
736
757
"#ageAssuranceOverrideEvent",
737
758
"#ageAssurancePurgeEvent",
738
759
"#revokeAccountCredentialsEvent",
739
760
"#scheduleTakedownEvent",
740
761
"#cancelScheduledTakedownEvent"
741
762
],
742
763
"type": "union"
743
764
},
744
765
"id": {
745
766
"type": "integer"
746
767
},
747
768
"modTool": {
748
769
"ref": "#modTool",
749
770
"type": "ref"
750
771
},
751
772
"subject": {
752
773
"refs": [
753
774
"#repoView",
754
775
"#repoViewNotFound",
755
776
"#recordView",
756
-
"#recordViewNotFound"
777
+
"#recordViewNotFound",
778
+
"#convoView"
757
779
],
758
780
"type": "union"
759
781
},
760
782
"subjectBlobs": {
761
783
"items": {
762
784
"ref": "#blobView",
763
785
"type": "ref"
764
786
},
765
787
"type": "array"
766
788
}
767
789
},
768
790
"required": [
769
791
"id",
770
792
"event",
771
793
"subject",
772
794
"subjectBlobs",
773
795
"createdBy",
774
796
"createdAt"
775
797
],
776
798
"type": "object"
777
799
},
778
800
"modTool": {
779
801
"description": "Moderation tool information for tracing the source of the action",
780
802
"properties": {
781
803
"meta": {
782
804
"description": "Additional arbitrary metadata about the source",
783
805
"type": "unknown"
784
806
},
785
807
"name": {
786
808
"description": "Name/identifier of the source (e.g., 'automod', 'ozone/workspace')",
787
809
"type": "string"
788
810
}
789
811
},
790
812
"required": [
791
813
"name"
792
814
],
793
815
"type": "object"
794
816
},
795
817
"moderation": {
796
818
"properties": {
797
819
"subjectStatus": {
798
820
"ref": "#subjectStatusView",
799
821
"type": "ref"
800
822
}
801
823
},
802
824
"type": "object"
803
825
},
804
826
"moderationDetail": {
805
827
"properties": {
806
828
"subjectStatus": {
807
829
"ref": "#subjectStatusView",
808
830
"type": "ref"
809
831
}
810
832
},
811
833
"type": "object"
812
834
},
813
835
"recordEvent": {
814
836
"description": "Logs lifecycle event on a record subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.",
815
837
"properties": {
816
838
"cid": {
817
839
"format": "cid",
818
840
"type": "string"
819
841
},
820
842
"comment": {
821
843
"type": "string"
822
844
},
823
845
"op": {
824
846
"knownValues": [
825
847
"create",
826
848
"update",
827
849
"delete"
828
850
],
829
851
"type": "string"
830
852
},
831
853
"timestamp": {
832
854
"format": "datetime",
833
855
"type": "string"
834
856
}
835
857
},
836
858
"required": [
837
859
"timestamp",
838
860
"op"
839
861
],
840
862
"type": "object"
841
863
},
842
864
"recordHosting": {
843
865
"properties": {
844
866
"createdAt": {
845
867
"format": "datetime",
846
868
"type": "string"
847
869
},
848
870
"deletedAt": {
849
871
"format": "datetime",
850
872
"type": "string"
851
873
},
852
874
"status": {
853
875
"knownValues": [
854
876
"deleted",
855
877
"unknown"
856
878
],
857
879
"type": "string"
858
880
},
859
881
"updatedAt": {
860
882
"format": "datetime",
861
883
"type": "string"
862
884
}
863
885
},
864
886
"required": [
865
887
"status"
866
888
],
867
889
"type": "object"
868
890
},
869
891
"recordView": {
870
892
"properties": {
871
893
"blobCids": {
872
894
"items": {
873
895
"format": "cid",
874
896
"type": "string"
875
897
},
876
898
"type": "array"
877
899
},
878
900
"cid": {
879
901
"format": "cid",
880
902
"type": "string"
881
903
},
882
904
"indexedAt": {
883
905
"format": "datetime",
884
906
"type": "string"
885
907
},
886
908
"moderation": {
887
909
"ref": "#moderation",
888
910
"type": "ref"
889
911
},
890
912
"repo": {
891
913
"ref": "#repoView",
892
914
"type": "ref"
893
915
},
894
916
"uri": {
895
917
"format": "at-uri",
896
918
"type": "string"
897
919
},
898
920
"value": {
899
921
"type": "unknown"
900
922
}
901
923
},
902
924
"required": [
903
925
"uri",
904
926
"cid",
905
927
"value",
906
928
"blobCids",
907
929
"indexedAt",
908
930
"moderation",
909
931
"repo"
910
932
],
911
933
"type": "object"
912
934
},
913
935
"recordViewDetail": {
914
936
"properties": {
915
937
"blobs": {
916
938
"items": {
917
939
"ref": "#blobView",
918
940
"type": "ref"
919
941
},
920
942
"type": "array"
921
943
},
922
944
"cid": {
923
945
"format": "cid",
924
946
"type": "string"
925
947
},
926
948
"indexedAt": {
927
949
"format": "datetime",
928
950
"type": "string"
929
951
},
930
952
"labels": {
931
953
"items": {
932
954
"ref": "com.atproto.label.defs#label",
933
955
"type": "ref"
934
956
},
935
957
"type": "array"
936
958
},
937
959
"moderation": {
938
960
"ref": "#moderationDetail",
939
961
"type": "ref"
940
962
},
941
963
"repo": {
942
964
"ref": "#repoView",
943
965
"type": "ref"
944
966
},
945
967
"uri": {
946
968
"format": "at-uri",
947
969
"type": "string"
948
970
},
949
971
"value": {
950
972
"type": "unknown"
951
973
}
952
974
},
953
975
"required": [
954
976
"uri",
955
977
"cid",
956
978
"value",
957
979
"blobs",
958
980
"indexedAt",
959
981
"moderation",
960
982
"repo"
961
983
],
962
984
"type": "object"
963
985
},
964
986
"recordViewNotFound": {
965
987
"properties": {
966
988
"uri": {
967
989
"format": "at-uri",
968
990
"type": "string"
969
991
}
970
992
},
971
993
"required": [
972
994
"uri"
973
995
],
974
996
"type": "object"
975
997
},
976
998
"recordsStats": {
977
999
"description": "Statistics about a set of record subject items",
978
1000
"properties": {
979
1001
"appealedCount": {
980
1002
"description": "Number of items that were appealed at least once",
981
1003
"type": "integer"
982
1004
},
983
1005
"escalatedCount": {
984
1006
"description": "Number of items that were escalated at least once",
985
1007
"type": "integer"
986
1008
},
987
1009
"pendingCount": {
988
1010
"description": "Number of item currently in \"reviewOpen\" or \"reviewEscalated\" state",
989
1011
"type": "integer"
990
1012
},
991
1013
"processedCount": {
992
1014
"description": "Number of item currently in \"reviewNone\" or \"reviewClosed\" state",
993
1015
"type": "integer"
994
1016
},
995
1017
"reportedCount": {
996
1018
"description": "Number of items that were reported at least once",
997
1019
"type": "integer"
998
1020
},
999
1021
"subjectCount": {
1000
1022
"description": "Total number of item in the set",
1001
1023
"type": "integer"
1002
1024
},
1003
1025
"takendownCount": {
1004
1026
"description": "Number of item currently taken down",
1005
1027
"type": "integer"
1006
1028
},
1007
1029
"totalReports": {
1008
1030
"description": "Cumulative sum of the number of reports on the items in the set",
1009
1031
"type": "integer"
1010
1032
}
1011
1033
},
1012
1034
"type": "object"
1013
1035
},
1014
1036
"repoView": {
1015
1037
"properties": {
1016
1038
"deactivatedAt": {
1017
1039
"format": "datetime",
1018
1040
"type": "string"
1019
1041
},
1020
1042
"did": {
1021
1043
"format": "did",
1022
1044
"type": "string"
1023
1045
},
1024
1046
"email": {
1025
1047
"type": "string"
1026
1048
},
1027
1049
"handle": {
1028
1050
"format": "handle",
1029
1051
"type": "string"
1030
1052
},
1031
1053
"indexedAt": {
1032
1054
"format": "datetime",
1033
1055
"type": "string"
1034
1056
},
1035
1057
"inviteNote": {
1036
1058
"type": "string"
1037
1059
},
1038
1060
"invitedBy": {
1039
1061
"ref": "com.atproto.server.defs#inviteCode",
1040
1062
"type": "ref"
1041
1063
},
1042
1064
"invitesDisabled": {
1043
1065
"type": "boolean"
1044
1066
},
1045
1067
"moderation": {
1046
1068
"ref": "#moderation",
1047
1069
"type": "ref"
1048
1070
},
1049
1071
"relatedRecords": {
1050
1072
"items": {
1051
1073
"type": "unknown"
1052
1074
},
1053
1075
"type": "array"
1054
1076
},
1055
1077
"threatSignatures": {
1056
1078
"items": {
1057
1079
"ref": "com.atproto.admin.defs#threatSignature",
1058
1080
"type": "ref"
1059
1081
},
1060
1082
"type": "array"
1061
1083
}
1062
1084
},
1063
1085
"required": [
1064
1086
"did",
1065
1087
"handle",
1066
1088
"relatedRecords",
1067
1089
"indexedAt",
1068
1090
"moderation"
1069
1091
],
1070
1092
"type": "object"
1071
1093
},
1072
1094
"repoViewDetail": {
1073
1095
"properties": {
1074
1096
"deactivatedAt": {
1075
1097
"format": "datetime",
1076
1098
"type": "string"
1077
1099
},
1078
1100
"did": {
1079
1101
"format": "did",
1080
1102
"type": "string"
1081
1103
},
1082
1104
"email": {
1083
1105
"type": "string"
1084
1106
},
1085
1107
"emailConfirmedAt": {
1086
1108
"format": "datetime",
1087
1109
"type": "string"
1088
1110
},
1089
1111
"handle": {
1090
1112
"format": "handle",
1091
1113
"type": "string"
1092
1114
},
1093
1115
"indexedAt": {
1094
1116
"format": "datetime",
1095
1117
"type": "string"
1096
1118
},
1097
1119
"inviteNote": {
1098
1120
"type": "string"
1099
1121
},
1100
1122
"invitedBy": {
1101
1123
"ref": "com.atproto.server.defs#inviteCode",
1102
1124
"type": "ref"
1103
1125
},
1104
1126
"invites": {
1105
1127
"items": {
1106
1128
"ref": "com.atproto.server.defs#inviteCode",
1107
1129
"type": "ref"
1108
1130
},
1109
1131
"type": "array"
1110
1132
},
1111
1133
"invitesDisabled": {
1112
1134
"type": "boolean"
1113
1135
},
1114
1136
"labels": {
1115
1137
"items": {
1116
1138
"ref": "com.atproto.label.defs#label",
1117
1139
"type": "ref"
1118
1140
},
1119
1141
"type": "array"
1120
1142
},
1121
1143
"moderation": {
1122
1144
"ref": "#moderationDetail",
1123
1145
"type": "ref"
1124
1146
},
1125
1147
"relatedRecords": {
1126
1148
"items": {
1127
1149
"type": "unknown"
1128
1150
},
1129
1151
"type": "array"
1130
1152
},
1131
1153
"threatSignatures": {
1132
1154
"items": {
1133
1155
"ref": "com.atproto.admin.defs#threatSignature",
1134
1156
"type": "ref"
1135
1157
},
1136
1158
"type": "array"
1137
1159
}
1138
1160
},
1139
1161
"required": [
1140
1162
"did",
1141
1163
"handle",
1142
1164
"relatedRecords",
1143
1165
"indexedAt",
1144
1166
"moderation"
1145
1167
],
1146
1168
"type": "object"
1147
1169
},
1148
1170
"repoViewNotFound": {
1149
1171
"properties": {
1150
1172
"did": {
1151
1173
"format": "did",
1152
1174
"type": "string"
1153
1175
}
1154
1176
},
1155
1177
"required": [
1156
1178
"did"
1157
1179
],
1158
1180
"type": "object"
1159
1181
},
1160
1182
"reporterStats": {
1161
1183
"properties": {
1162
1184
"accountReportCount": {
1163
1185
"description": "The total number of reports made by the user on accounts.",
1164
1186
"type": "integer"
1165
1187
},
1166
1188
"did": {
1167
1189
"format": "did",
1168
1190
"type": "string"
1169
1191
},
1170
1192
"labeledAccountCount": {
1171
1193
"description": "The total number of accounts labeled as a result of the user's reports.",
1172
1194
"type": "integer"
1173
1195
},
1174
1196
"labeledRecordCount": {
1175
1197
"description": "The total number of records labeled as a result of the user's reports.",
1176
1198
"type": "integer"
1177
1199
},
1178
1200
"recordReportCount": {
1179
1201
"description": "The total number of reports made by the user on records.",
1180
1202
"type": "integer"
1181
1203
},
1182
1204
"reportedAccountCount": {
1183
1205
"description": "The total number of accounts reported by the user.",
1184
1206
"type": "integer"
1185
1207
},
1186
1208
"reportedRecordCount": {
1187
1209
"description": "The total number of records reported by the user.",
1188
1210
"type": "integer"
1189
1211
},
1190
1212
"takendownAccountCount": {
1191
1213
"description": "The total number of accounts taken down as a result of the user's reports.",
1192
1214
"type": "integer"
1193
1215
},
1194
1216
"takendownRecordCount": {
1195
1217
"description": "The total number of records taken down as a result of the user's reports.",
1196
1218
"type": "integer"
1197
1219
}
1198
1220
},
1199
1221
"required": [
1200
1222
"did",
1201
1223
"accountReportCount",
1202
1224
"recordReportCount",
1203
1225
"reportedAccountCount",
1204
1226
"reportedRecordCount",
1205
1227
"takendownAccountCount",
1206
1228
"takendownRecordCount",
1207
1229
"labeledAccountCount",
1208
1230
"labeledRecordCount"
1209
1231
],
1210
1232
"type": "object"
1211
1233
},
1212
1234
"reviewClosed": {
1213
1235
"description": "Moderator review status of a subject: Closed. Indicates that the subject was already reviewed and resolved by a moderator",
1214
1236
"type": "token"
1215
1237
},
1216
1238
"reviewEscalated": {
1217
1239
"description": "Moderator review status of a subject: Escalated. Indicates that the subject was escalated for review by a moderator",
1218
1240
"type": "token"
1219
1241
},
1220
1242
"reviewNone": {
1221
1243
"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
1244
"type": "token"
1223
1245
},
1224
1246
"reviewOpen": {
1225
1247
"description": "Moderator review status of a subject: Open. Indicates that the subject needs to be reviewed by a moderator",
1226
1248
"type": "token"
1227
1249
},
1228
1250
"revokeAccountCredentialsEvent": {
1229
1251
"description": "Account credentials revocation by moderators. Only works on DID subjects.",
1230
1252
"properties": {
1231
1253
"comment": {
1232
1254
"description": "Comment describing the reason for the revocation.",
1233
1255
"minLength": 1,
1234
1256
"type": "string"
1235
1257
}
1236
1258
},
1237
1259
"required": [
1238
1260
"comment"
1239
1261
],
1240
1262
"type": "object"
1241
1263
},
1242
1264
"scheduleTakedownEvent": {
1243
1265
"description": "Logs a scheduled takedown action for an account.",
1244
1266
"properties": {
1245
1267
"comment": {
1246
1268
"type": "string"
1247
1269
},
1248
1270
"executeAfter": {
1249
1271
"format": "datetime",
1250
1272
"type": "string"
1251
1273
},
1252
1274
"executeAt": {
1253
1275
"format": "datetime",
1254
1276
"type": "string"
1255
1277
},
1256
1278
"executeUntil": {
1257
1279
"format": "datetime",
1258
1280
"type": "string"
1259
1281
}
1260
1282
},
1261
1283
"type": "object"
1262
1284
},
1263
1285
"scheduledActionView": {
1264
1286
"description": "View of a scheduled moderation action",
1265
1287
"properties": {
1266
1288
"action": {
1267
1289
"description": "Type of action to be executed",
1268
1290
"knownValues": [
1269
1291
"takedown"
1270
1292
],
1271
1293
"type": "string"
1272
1294
},
1273
1295
"createdAt": {
1274
1296
"description": "When the scheduled action was created",
1275
1297
"format": "datetime",
1276
1298
"type": "string"
1277
1299
},
1278
1300
"createdBy": {
1279
1301
"description": "DID of the user who created this scheduled action",
1280
1302
"format": "did",
1281
1303
"type": "string"
1282
1304
},
1283
1305
"did": {
1284
1306
"description": "Subject DID for the action",
1285
1307
"format": "did",
1286
1308
"type": "string"
1287
1309
},
1288
1310
"eventData": {
1289
1311
"description": "Serialized event object that will be propagated to the event when performed",
1290
1312
"type": "unknown"
1291
1313
},
1292
1314
"executeAfter": {
1293
1315
"description": "Earliest time to execute the action (for randomized scheduling)",
1294
1316
"format": "datetime",
1295
1317
"type": "string"
1296
1318
},
1297
1319
"executeAt": {
1298
1320
"description": "Exact time to execute the action",
1299
1321
"format": "datetime",
1300
1322
"type": "string"
1301
1323
},
1302
1324
"executeUntil": {
1303
1325
"description": "Latest time to execute the action (for randomized scheduling)",
1304
1326
"format": "datetime",
1305
1327
"type": "string"
1306
1328
},
1307
1329
"executionEventId": {
1308
1330
"description": "ID of the moderation event created when action was successfully executed",
1309
1331
"type": "integer"
1310
1332
},
1311
1333
"id": {
1312
1334
"description": "Auto-incrementing row ID",
1313
1335
"type": "integer"
1314
1336
},
1315
1337
"lastExecutedAt": {
1316
1338
"description": "When the action was last attempted to be executed",
1317
1339
"format": "datetime",
1318
1340
"type": "string"
1319
1341
},
1320
1342
"lastFailureReason": {
1321
1343
"description": "Reason for the last execution failure",
1322
1344
"type": "string"
1323
1345
},
1324
1346
"randomizeExecution": {
1325
1347
"description": "Whether execution time should be randomized within the specified range",
1326
1348
"type": "boolean"
1327
1349
},
1328
1350
"status": {
1329
1351
"description": "Current status of the scheduled action",
1330
1352
"knownValues": [
1331
1353
"pending",
1332
1354
"executed",
1333
1355
"cancelled",
1334
1356
"failed"
1335
1357
],
1336
1358
"type": "string"
1337
1359
},
1338
1360
"updatedAt": {
1339
1361
"description": "When the scheduled action was last updated",
1340
1362
"format": "datetime",
1341
1363
"type": "string"
1342
1364
}
1343
1365
},
1344
1366
"required": [
1345
1367
"id",
1346
1368
"action",
1347
1369
"did",
1348
1370
"createdBy",
1349
1371
"createdAt",
1350
1372
"status"
1351
1373
],
1352
1374
"type": "object"
1353
1375
},
1354
1376
"subjectReviewState": {
1355
1377
"knownValues": [
1356
1378
"tools.ozone.moderation.defs#reviewOpen",
1357
1379
"tools.ozone.moderation.defs#reviewEscalated",
1358
1380
"tools.ozone.moderation.defs#reviewClosed",
1359
1381
"tools.ozone.moderation.defs#reviewNone"
1360
1382
],
1361
1383
"type": "string"
1362
1384
},
1363
1385
"subjectStatusView": {
1364
1386
"properties": {
1365
1387
"accountStats": {
1366
1388
"description": "Statistics related to the account subject",
1367
1389
"ref": "#accountStats",
1368
1390
"type": "ref"
1369
1391
},
1370
1392
"accountStrike": {
1371
1393
"description": "Strike information for the account (account-level only)",
1372
1394
"ref": "#accountStrike",
1373
1395
"type": "ref"
1374
1396
},
1375
1397
"ageAssuranceState": {
1376
1398
"description": "Current age assurance state of the subject.",
1377
1399
"knownValues": [
1378
1400
"pending",
1379
1401
"assured",
1380
1402
"unknown",
1381
1403
"reset",
1382
1404
"blocked"
1383
1405
],
1384
1406
"type": "string"
1385
1407
},
1386
1408
"ageAssuranceUpdatedBy": {
1387
1409
"description": "Whether or not the last successful update to age assurance was made by the user or admin.",
1388
1410
"knownValues": [
1389
1411
"admin",
1390
1412
"user"
1391
1413
],
1392
1414
"type": "string"
1393
1415
},
1394
1416
"appealed": {
1395
1417
"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
1418
"type": "boolean"
1397
1419
},
1398
1420
"comment": {
1399
1421
"description": "Sticky comment on the subject.",
1400
1422
"type": "string"
1401
1423
},
1402
1424
"createdAt": {
1403
1425
"description": "Timestamp referencing the first moderation status impacting event was emitted on the subject",
1404
1426
"format": "datetime",
1405
1427
"type": "string"
1406
1428
},
1407
1429
"hosting": {
1408
1430
"refs": [
1409
1431
"#accountHosting",
1410
1432
"#recordHosting"
1411
1433
],
1412
1434
"type": "union"
1413
1435
},
1414
1436
"id": {
1415
1437
"type": "integer"
1416
1438
},
1417
1439
"lastAppealedAt": {
1418
1440
"description": "Timestamp referencing when the author of the subject appealed a moderation action",
1419
1441
"format": "datetime",
1420
1442
"type": "string"
1421
1443
},
1422
1444
"lastReportedAt": {
1423
1445
"format": "datetime",
1424
1446
"type": "string"
1425
1447
},
1426
1448
"lastReviewedAt": {
1427
1449
"format": "datetime",
1428
1450
"type": "string"
1429
1451
},
1430
1452
"lastReviewedBy": {
1431
1453
"format": "did",
1432
1454
"type": "string"
1433
1455
},
1434
1456
"muteReportingUntil": {
1435
1457
"format": "datetime",
1436
1458
"type": "string"
1437
1459
},
1438
1460
"muteUntil": {
1439
1461
"format": "datetime",
1440
1462
"type": "string"
1441
1463
},
1442
1464
"priorityScore": {
1443
1465
"description": "Numeric value representing the level of priority. Higher score means higher priority.",
1444
1466
"maximum": 100,
1445
1467
"minimum": 0,
1446
1468
"type": "integer"
1447
1469
},
1448
1470
"recordsStats": {
1449
1471
"description": "Statistics related to the record subjects authored by the subject's account",
1450
1472
"ref": "#recordsStats",
1451
1473
"type": "ref"
1452
1474
},
1453
1475
"reviewState": {
1454
1476
"ref": "#subjectReviewState",
1455
1477
"type": "ref"
1456
1478
},
1457
1479
"subject": {
1458
1480
"refs": [
1459
1481
"com.atproto.admin.defs#repoRef",
1460
1482
"com.atproto.repo.strongRef",
1461
-
"chat.bsky.convo.defs#messageRef"
1483
+
"chat.bsky.convo.defs#messageRef",
1484
+
"chat.bsky.convo.defs#convoRef"
1462
1485
],
1463
1486
"type": "union"
1464
1487
},
1465
1488
"subjectBlobCids": {
1466
1489
"items": {
1467
1490
"format": "cid",
1468
1491
"type": "string"
1469
1492
},
1470
1493
"type": "array"
1471
1494
},
1472
1495
"subjectRepoHandle": {
1473
1496
"type": "string"
1474
1497
},
1475
1498
"suspendUntil": {
1476
1499
"format": "datetime",
1477
1500
"type": "string"
1478
1501
},
1479
1502
"tags": {
1480
1503
"items": {
1481
1504
"type": "string"
1482
1505
},
1483
1506
"type": "array"
1484
1507
},
1485
1508
"takendown": {
1486
1509
"type": "boolean"
1487
1510
},
1488
1511
"updatedAt": {
1489
1512
"description": "Timestamp referencing when the last update was made to the moderation status of the subject",
1490
1513
"format": "datetime",
1491
1514
"type": "string"
1492
1515
}
1493
1516
},
1494
1517
"required": [
1495
1518
"id",
1496
1519
"subject",
1497
1520
"createdAt",
1498
1521
"updatedAt",
1499
1522
"reviewState"
1500
1523
],
1501
1524
"type": "object"
1502
1525
},
1503
1526
"subjectView": {
1504
1527
"description": "Detailed view of a subject. For record subjects, the author's repo and profile will be returned.",
1505
1528
"properties": {
1506
1529
"profile": {
1507
1530
"refs": [],
1508
1531
"type": "union"
1509
1532
},
1510
1533
"record": {
1511
1534
"ref": "#recordViewDetail",
1512
1535
"type": "ref"
1513
1536
},
1514
1537
"repo": {
1515
1538
"ref": "#repoViewDetail",
1516
1539
"type": "ref"
1517
1540
},
1518
1541
"status": {
1519
1542
"ref": "#subjectStatusView",
1520
1543
"type": "ref"
1521
1544
},
1522
1545
"subject": {
1523
1546
"type": "string"
1524
1547
},
1525
1548
"type": {
1526
1549
"ref": "com.atproto.moderation.defs#subjectType",
1527
1550
"type": "ref"
1528
1551
}
1529
1552
},
1530
1553
"required": [
1531
1554
"type",
1532
1555
"subject"
1533
1556
],
1534
1557
"type": "object"
1535
1558
},
1536
1559
"timelineEventPlcCreate": {
1537
1560
"description": "Moderation event timeline event for a PLC create operation",
1538
1561
"type": "token"
1539
1562
},
1540
1563
"timelineEventPlcOperation": {
1541
1564
"description": "Moderation event timeline event for generic PLC operation",
1542
1565
"type": "token"
1543
1566
},
1544
1567
"timelineEventPlcTombstone": {
1545
1568
"description": "Moderation event timeline event for a PLC tombstone operation",
1546
1569
"type": "token"
1547
1570
},
1548
1571
"videoDetails": {
1549
1572
"properties": {
1550
1573
"height": {
1551
1574
"type": "integer"
1552
1575
},
1553
1576
"length": {
1554
1577
"type": "integer"
1555
1578
},
1556
1579
"width": {
1557
1580
"type": "integer"
1558
1581
}
1559
1582
},
1560
1583
"required": [
1561
1584
"width",
1562
1585
"height",
1563
1586
"length"
1564
1587
],
1565
1588
"type": "object"
1566
1589
}
1567
1590
},
1568
1591
"id": "tools.ozone.moderation.defs",
1569
1592
"lexicon": 1
1570
1593
}