town.delve.feed.threadgate

delve.town

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "followerRule": {
      "description": "Allow replies from actors who follow you.",
      "properties": {},
      "type": "object"
    },
    "followingRule": {
      "description": "Allow replies from actors you follow.",
      "properties": {},
      "type": "object"
    },
    "listRule": {
      "description": "Allow replies from actors on a list.",
      "properties": {
        "list": {
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "list"
      ],
      "type": "object"
    },
    "main": {
      "description": "Record defining interaction gating rules for a thread (aka, reply controls). The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same repository.",
      "key": "tid",
      "record": {
        "properties": {
          "allow": {
            "description": "List of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply.",
            "items": {
              "refs": [
                "#mentionRule",
                "#followerRule",
                "#followingRule",
                "#listRule"
              ],
              "type": "union"
            },
            "maxLength": 5,
            "type": "array"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "hiddenReplies": {
            "description": "List of hidden reply URIs.",
            "items": {
              "format": "at-uri",
              "type": "string"
            },
            "maxLength": 300,
            "type": "array"
          },
          "post": {
            "description": "Reference (AT-URI) to the post record.",
            "format": "at-uri",
            "type": "string"
          }
        },
        "required": [
          "post",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "mentionRule": {
      "description": "Allow replies from actors mentioned in your post.",
      "properties": {},
      "type": "object"
    }
  },
  "id": "town.delve.feed.threadgate",
  "lexicon": 1
}

Validate Record

Validate a record against town.delve.feed.threadgate

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:qzqct2rrq4u2gmy5g3mjxske
CID
bafyreie7clj6usm3qo5fam5csmleaty5nh4nfz6p5lqasyt7pbdz556exq
Indexed At
2026-09-11 20:05 UTC
AT-URI
at://did:plc:qzqct2rrq4u2gmy5g3mjxske/com.atproto.lexicon.schema/town.delve.feed.threadgate

Similar Lexicons

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

  • Record defining interaction gating rules for a thread (aka, reply controls). The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same reposi…

  • Record defining interaction gating rules for a thread (aka, reply controls). The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same reposi…

  • Interaction settings for a log or list, analogous to app.bsky.feed.threadgate/postgate. The record key (rkey) must match the rkey of the gated record. Absence of a gate record means everyone can interact.

  • town.delve.feed.postgate recordnot from the namespace authority

    Record defining interaction rules for a post. The record key (rkey) of the postgate record must match the record key of the post, and that record must be in the same repository.

  • The listing owner's moderation of notes on their own listing, bsky-threadgate style: the record key MUST match the listing's record key. hiddenReplies drop from default views (view policy, not deletion — the note surv…

Lexicon Garden

@