app.tempomusic.staff.getSubjectContent
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"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).",
"errors": [
{
"description": "Caller is not an active moderator.",
"name": "Forbidden"
},
{
"description": "Neither subjectUri nor subjectDid was provided, or both were provided.",
"name": "InvalidSubject"
},
{
"description": "No row exists for the subject: never indexed, or already hard-deleted.",
"name": "SubjectNotFound"
}
],
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"cid": {
"format": "cid",
"type": "string"
},
"deletedAt": {
"description": "Set when the row is soft-deleted (user delete or account cascade).",
"format": "datetime",
"type": "string"
},
"did": {
"description": "Author DID for post/reply subjects (null once tombstoned), account DID for account subjects.",
"format": "did",
"type": "string"
},
"indexedAt": {
"type": "integer"
},
"isTombstone": {
"type": "boolean"
},
"moderationStatus": {
"knownValues": [
"live",
"reported",
"tagged",
"legalHold"
],
"maxLength": 100,
"type": "string"
},
"record": {
"description": "The stored record verbatim. Null when tombstonification already destroyed it — render a 'content destroyed by retention' banner.",
"type": "unknown"
},
"subjectType": {
"knownValues": [
"post",
"reply",
"account"
],
"maxLength": 100,
"type": "string"
},
"uri": {
"format": "at-uri",
"type": "string"
}
},
"required": [
"subjectType",
"moderationStatus",
"isTombstone",
"indexedAt"
],
"type": "object"
}
},
"parameters": {
"properties": {
"subjectDid": {
"description": "Actor DID for an account subject (profile record). Mutually exclusive with subjectUri.",
"format": "did",
"type": "string"
},
"subjectUri": {
"description": "AT-URI of a post or reply subject. Probed as a post first, then a reply. Mutually exclusive with subjectDid.",
"format": "at-uri",
"type": "string"
}
},
"type": "params"
},
"type": "query"
}
},
"id": "app.tempomusic.staff.getSubjectContent",
"lexicon": 1
}
Metadata
- DID
-
did:plc:pxsuqmultto34oks44m2lgxm - CID
-
bafyreih2otjtt7ikaeq7poml4ovnejxsihwxkcb5mavdhj6l724q4a65um - Indexed At
- 2026-08-24 09:06 UTC
- AT-URI
-
at://did:plc:pxsuqmultto34oks44m2lgxm/com.atproto.lexicon.schema/app.tempomusic.staff.getSubjectContent
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
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 ha…
-
Get the actor + post + comment + message bundle for a report/appeal subject.
-
app.tempomusic.staff.takedownSubject procedure
Flip `moderation_status` on a subject row to a non-zero takedown class. Read paths immediately refuse to serve the subject (404 on getPost / getReply / actor reads). Re-takedown against an already-taken-down subject is …
-
app.didpic.admin.getPost query
Get a post or comment's moderation state and labels.
-
Get a subject belonging to the authenticated account, including its moderation action history from this moderation service.