social.coves.community.removal

coves.social

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "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"
    }
  },
  "id": "social.coves.community.removal",
  "lexicon": 1
}

Validate Record

Validate a record against social.coves.community.removal

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:web:coves.social
CID
bafyreig6waah53no6lq5aqv7wlbj2hxlnhhhpoumtoq7z5qyx4wpai2dbm
Indexed At
2026-09-07 20:28 UTC
AT-URI
at://did:web:coves.social/com.atproto.lexicon.schema/social.coves.community.removal

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • A community's attestation that it accepts a post. Written only by the community's key holder, automatically once admission checks pass - machine attestation, not human approval. The community is implicit in the reposito…

  • at.secretsky.removal recordnot from the namespace authority

    An owner-authored moderation record for a post in their feed.

  • A moderation event scoped to the community that owns this repo. Acts as an append-only audit log; current state is derived from the action history per subject.

  • A moderator action on one post's Community-level state. Removal is scoped to the Community; only actions that change state are journaled.

  • An audit log entry for a moderation action taken by the community. Enforcement is the space authority declining to issue credentials, and this records that it happened.

Lexicon Garden

@