{
"id": "app.tempomusic.staff.getSubjectContent",
"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": "SubjectNotFound",
"description": "No row exists for the subject: never indexed, or already hard-deleted."
}
],
"output": {
"schema": {
"type": "object",
"required": [
"subjectType",
"moderationStatus",
"isTombstone",
"indexedAt"
],
"properties": {
"cid": {
"type": "string",
"format": "cid"
},
"did": {
"type": "string",
"format": "did",
"description": "Author DID for post/reply subjects (null once tombstoned), account DID for account subjects."
},
"uri": {
"type": "string",
"format": "at-uri"
},
"record": {
"type": "unknown",
"description": "The stored record verbatim. Null when tombstonification already destroyed it — render a 'content destroyed by retention' banner."
},
"deletedAt": {
"type": "string",
"format": "datetime",
"description": "Set when the row is soft-deleted (user delete or account cascade)."
},
"indexedAt": {
"type": "integer"
},
"isTombstone": {
"type": "boolean"
},
"subjectType": {
"type": "string",
"maxLength": 100,
"knownValues": [
"post",
"reply",
"account"
]
},
"moderationStatus": {
"type": "string",
"maxLength": 100,
"knownValues": [
"live",
"reported",
"tagged",
"legalHold"
]
}
}
},
"encoding": "application/json"
},
"parameters": {
"type": "params",
"properties": {
"subjectDid": {
"type": "string",
"format": "did",
"description": "Actor DID for an account subject (profile record). Mutually exclusive with subjectUri."
},
"subjectUri": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of a post or reply subject. Probed as a post first, then a reply. Mutually exclusive with subjectDid."
}
}
},
"description": "Moderator-grade fetch of a report subject's stored record and lifecycle state, INCLUDING rows the public read surface hides: taken-down content, soft-deleted rows inside the 30-day evidence window, and tombstoned rows (record is then null — 'purged' — and the console shows a banner instead of content). ADR-009 future-work item 'expose retained content through the moderation surface'. Requires the caller to be an active moderator. When media attachments ship, CSAM-quarantined blobs are NEVER rendered through this endpoint (metadata only — plan invariant)."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}