{
"id": "app.tempomusic.staff.getSubjectModerationHistory",
"defs": {
"main": {
"type": "query",
"errors": [
{
"name": "Forbidden",
"description": "Caller is not an active moderator."
},
{
"name": "InvalidSubject",
"description": "Neither subjectUri nor subjectDid was provided, or both were provided."
},
{
"name": "InvalidCursor"
}
],
"output": {
"schema": {
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"ref": "app.tempomusic.staff.defs#auditEntryView",
"type": "ref"
}
},
"cursor": {
"type": "string",
"maxLength": 1024
}
}
},
"encoding": "application/json"
},
"parameters": {
"type": "params",
"properties": {
"limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1
},
"cursor": {
"type": "string",
"maxLength": 1024
},
"subjectDid": {
"type": "string",
"format": "did",
"description": "Actor DID. Returns every audit row whose subject_did denormalization matches: account-level actions on this DID AND per-record actions on posts/replies authored by this DID. Use this for the 'show me everything that ever happened involving this actor' view. Mutually exclusive with subjectUri."
},
"subjectUri": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of a single post or reply subject. Returns only audit rows whose subject_key matches this URI exactly. Mutually exclusive with subjectDid."
}
}
},
"description": "Audit timeline for a single subject (post URI, reply URI, or account DID). Returns every moderation_audit row referencing the subject, in reverse-chronological order. Used by the moderator UI to answer 'what has ever happened to this content/account'. Requires the caller to be an active moderator."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}