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