pub.chive.admin.listViolations
Schema Diff
+2 -6
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 0 non-breaking changes.
Breaking Changes (2)
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "pub.chive.admin.listViolations:output", src: "pub.chive.admin.listViolations:output", tgt: "pub.chive.admin.listViolations:output.total", kind: "prop", name: Some("total") }
- RemovedVertex RemovedVertex { vertex_id: "pub.chive.admin.listViolations:output.total" }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "pub.chive.admin.listViolations:output.total" }
Additional Notes
- Breaking: RequiredEdgeRemoved { vertex_id: "pub.chive.admin.listViolations:output", src: "pub.chive.admin.listViolations:output", tgt: "pub.chive.admin.listViolations:output.total", kind: "prop", name: Some("total") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "List policy violations",
6
6
"errors": [
7
7
{
8
8
"name": "AuthenticationRequired"
9
9
},
10
10
{
11
11
"name": "AdminRequired"
12
12
}
13
13
],
14
14
"output": {
15
15
"encoding": "application/json",
16
16
"schema": {
17
+
"description": "Governance violations. There is no `total`: the service returns only the rows, output validation requires every declared required field, and a `total` that nothing produces made this endpoint fail with a 500 rather than describe it. Nothing consumes a total either — the admin page renders the rows.",
17
18
"properties": {
18
-
"total": {
19
-
"description": "Total violations",
20
-
"type": "integer"
21
-
},
22
19
"violations": {
23
20
"description": "Violation records",
24
21
"items": {
25
22
"ref": "#violation",
26
23
"type": "ref"
27
24
},
28
25
"type": "array"
29
26
}
30
27
},
31
28
"required": [
32
-
"violations",
33
-
"total"
29
+
"violations"
34
30
],
35
31
"type": "object"
36
32
}
37
33
},
38
34
"parameters": {
39
35
"properties": {
40
36
"did": {
41
37
"description": "Filter by user DID",
42
38
"format": "did",
43
39
"type": "string"
44
40
},
45
41
"limit": {
46
42
"default": 50,
47
43
"description": "Maximum number of violations",
48
44
"maximum": 100,
49
45
"minimum": 1,
50
46
"type": "integer"
51
47
}
52
48
},
53
49
"type": "params"
54
50
},
55
51
"type": "query"
56
52
},
57
53
"violation": {
58
54
"description": "Policy violation record",
59
55
"properties": {
60
56
"context": {
61
57
"description": "Additional context",
62
58
"type": "string"
63
59
},
64
60
"createdAt": {
65
61
"description": "When the violation was recorded",
66
62
"format": "datetime",
67
63
"type": "string"
68
64
},
69
65
"description": {
70
66
"description": "Violation description",
71
67
"type": "string"
72
68
},
73
69
"did": {
74
70
"description": "User DID",
75
71
"format": "did",
76
72
"type": "string"
77
73
},
78
74
"handle": {
79
75
"description": "User handle",
80
76
"type": "string"
81
77
},
82
78
"id": {
83
79
"description": "Violation ID",
84
80
"type": "string"
85
81
},
86
82
"resolvedAt": {
87
83
"description": "When the violation was resolved",
88
84
"format": "datetime",
89
85
"type": "string"
90
86
},
91
87
"severity": {
92
88
"description": "Severity level",
93
89
"knownValues": [
94
90
"low",
95
91
"medium",
96
92
"high",
97
93
"critical"
98
94
],
99
95
"type": "string"
100
96
},
101
97
"type": {
102
98
"description": "Violation type",
103
99
"type": "string"
104
100
}
105
101
},
106
102
"required": [
107
103
"id",
108
104
"did",
109
105
"type",
110
106
"severity",
111
107
"createdAt"
112
108
],
113
109
"type": "object"
114
110
}
115
111
},
116
112
"id": "pub.chive.admin.listViolations",
117
113
"lexicon": 1,
118
114
"revision": 1
119
115
}