# app.tempomusic.staff.getSubjectContent

> Published by [lexicons.tempomusic.fan](https://lexicon.garden/identity/did:plc:pxsuqmultto34oks44m2lgxm)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:pxsuqmultto34oks44m2lgxm/app.tempomusic.staff.getSubjectContent)
- [Documentation](https://lexicon.garden/lexicon/did:plc:pxsuqmultto34oks44m2lgxm/app.tempomusic.staff.getSubjectContent/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:pxsuqmultto34oks44m2lgxm/app.tempomusic.staff.getSubjectContent/examples)

## Definitions

### `app.tempomusic.staff.getSubjectContent`

**Type**: `query`

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).

#### Parameters

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `subjectDid` | `string` (did) | No | Actor DID for an account subject (profile record). Mutually exclusive with subjectUri. |
| `subjectUri` | `string` (at-uri) | No | AT-URI of a post or reply subject. Probed as a post first, then a reply. Mutually exclusive with subjectDid. |

#### Output

**Encoding**: `application/json`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cid` | `string` (cid) | No |  |
| `did` | `string` (did) | No | Author DID for post/reply subjects (null once tombstoned), account DID for account subjects. |
| `uri` | `string` (at-uri) | No |  |
| `record` | `unknown` | No | The stored record verbatim. Null when tombstonification already destroyed it — render a 'content destroyed by retention' banner. |
| `deletedAt` | `string` (datetime) | No | Set when the row is soft-deleted (user delete or account cascade). |
| `indexedAt` | `integer` | Yes |  |
| `isTombstone` | `boolean` | Yes |  |
| `subjectType` | `string` | Yes |  |
| `moderationStatus` | `string` | Yes |  |

#### Errors

- **Forbidden**: Caller is not an active moderator.
- **InvalidSubject**: Neither subjectUri nor subjectDid was provided, or both were provided.
- **SubjectNotFound**: No row exists for the subject: never indexed, or already hard-deleted.

## Raw Schema

```json
{
  "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
}
```
