social.coves.community.removal

coves.social

Documentation

A community's record that a post has been removed from it. Written in the same com.atproto.repo.applyWrites commit that deletes the social.coves.community.acceptance, so the firehose never carries a half-completed moderation action. Removal is URI-scoped and terminal: it applies to the post URI across later author edits, not only to the version it pins. A post rejected at submission time was never accepted and writes no record. Removed is exited only by an explicit moderator restore: an atomic commit deleting the removal record and writing a fresh acceptance. The record key is deterministic: the unpadded lowercase base32 encoding of the SHA-256 digest of the canonical subject AT-URI (fixed 52 characters, always rkey-safe), so each post has exactly one removal rkey per community and re-removal updates the same record.

main record

A community's record that a post has been removed from it. Written in the same com.atproto.repo.applyWrites commit that deletes the social.coves.community.acceptance, so the firehose never carries a half-completed moderation action. Removal is URI-scoped and terminal: it applies to the post URI across later author edits, not only to the version it pins. A post rejected at submission time was never accepted and writes no record. Removed is exited only by an explicit moderator restore: an atomic commit deleting the removal record and writing a fresh acceptance. The record key is deterministic: the unpadded lowercase base32 encoding of the SHA-256 digest of the canonical subject AT-URI (fixed 52 characters, always rkey-safe), so each post has exactly one removal rkey per community and re-removal updates the same record.

Record Key any Any valid record key

Properties

code string Required

Machine-readable reason for the removal. knownValues is an open set: federated peers may send codes this AppView has not seen yet and their records must still validate, so this MUST NOT become an enum.

maxLength: 64 bytes
Known values: rule-violation, spam, off-topic, illegal-content, author-banned, moderator-discretion
createdAt string datetime Required

Timestamp when the post was removed

reason string Optional

Human-readable explanation of the removal, shown to the author and in the moderation log

maxLength: 10000 bytesmaxGraphemes: 1000 graphemes
subject ref com.atproto.repo.strongRef Required

Strong reference to the removed post. The pinned CID is audit metadata recording the version present at removal time; the removal itself applies to the post URI.

View raw schema
{
  "description": "A community's record that a post has been removed from it. Written in the same com.atproto.repo.applyWrites commit that deletes the social.coves.community.acceptance, so the firehose never carries a half-completed moderation action. Removal is URI-scoped and terminal: it applies to the post URI across later author edits, not only to the version it pins. A post rejected at submission time was never accepted and writes no record. Removed is exited only by an explicit moderator restore: an atomic commit deleting the removal record and writing a fresh acceptance. The record key is deterministic: the unpadded lowercase base32 encoding of the SHA-256 digest of the canonical subject AT-URI (fixed 52 characters, always rkey-safe), so each post has exactly one removal rkey per community and re-removal updates the same record.",
  "key": "any",
  "record": {
    "properties": {
      "code": {
        "description": "Machine-readable reason for the removal. knownValues is an open set: federated peers may send codes this AppView has not seen yet and their records must still validate, so this MUST NOT become an enum.",
        "knownValues": [
          "rule-violation",
          "spam",
          "off-topic",
          "illegal-content",
          "author-banned",
          "moderator-discretion"
        ],
        "maxLength": 64,
        "type": "string"
      },
      "createdAt": {
        "description": "Timestamp when the post was removed",
        "format": "datetime",
        "type": "string"
      },
      "reason": {
        "description": "Human-readable explanation of the removal, shown to the author and in the moderation log",
        "maxGraphemes": 1000,
        "maxLength": 10000,
        "type": "string"
      },
      "subject": {
        "description": "Strong reference to the removed post. The pinned CID is audit metadata recording the version present at removal time; the removal itself applies to the post URI.",
        "ref": "com.atproto.repo.strongRef",
        "type": "ref"
      }
    },
    "required": [
      "subject",
      "code",
      "createdAt"
    ],
    "type": "object"
  },
  "type": "record"
}

Lexicon Garden

@