net.anisota.graph.scopedMute

anisota.net

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "An index of the accounts whose reposts or quote posts the viewer has muted through Bluesky's native scoped mute (app.bsky.graph.muteActor with onlyReposts / onlyQuoteposts). Bluesky stores the mute itself, but app.bsky.graph.getMutes returns only fully muted accounts, so a scoped mute is otherwise discoverable only by loading each profile. This record lets Anisota list and undo them, and enforce them client-side on unauthenticated reads where no viewer state comes back. It is a cache, not the source of truth: entries are reconciled against viewerState.mutedOnlyReposts / mutedOnlyQuoteposts and dropped when the server disagrees.",
      "key": "literal:self",
      "record": {
        "properties": {
          "createdAt": {
            "description": "When this index was first written",
            "format": "datetime",
            "type": "string"
          },
          "subjects": {
            "description": "The accounts currently carrying a native scoped mute.",
            "items": {
              "ref": "#scopedMuteEntry",
              "type": "ref"
            },
            "maxLength": 1000,
            "type": "array"
          },
          "updatedAt": {
            "description": "When this index was last reconciled or edited",
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "subjects",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "scopedMuteEntry": {
      "description": "One account's native scoped mute. At least one scope flag is true — an entry with neither is a full mute or no mute at all, and does not belong here.",
      "properties": {
        "createdAt": {
          "description": "When this scoped mute was set from Anisota",
          "format": "datetime",
          "type": "string"
        },
        "onlyQuoteposts": {
          "default": false,
          "description": "Their quote posts are muted",
          "type": "boolean"
        },
        "onlyReposts": {
          "default": false,
          "description": "Their reposts are muted",
          "type": "boolean"
        },
        "subject": {
          "description": "DID of the scope-muted account",
          "format": "did",
          "type": "string"
        }
      },
      "required": [
        "subject"
      ],
      "type": "object"
    }
  },
  "id": "net.anisota.graph.scopedMute",
  "lexicon": 1
}

Validate Record

Validate a record against net.anisota.graph.scopedMute

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:lcieujcfkv4jx7gehsvok3pr
CID
bafyreieuq55wgu7drz332jagptdxuqtfqubyeplncs52tjk3xnw5kjsjbu
Indexed At
2026-08-10 19:59 UTC
AT-URI
at://did:plc:lcieujcfkv4jx7gehsvok3pr/com.atproto.lexicon.schema/net.anisota.graph.scopedMute

Version History (2 versions)

Similar Lexicons

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

  • Klearsky client-specific record that stores a list of DIDs whose reposts should be muted.

  • Creates a mute relationship for the specified account. If a mute already exists for the account, it is updated in place: the stored scope is replaced with the scope in this request. Mutes are private in Bluesky. Require…

  • net.anisota.graph.mute recordnot from the namespace authority

    A record for muting content from a specific account with fine-grained control over content types and duration

  • A mute relationship. The muted account's content is hidden from the muter's feed.

  • town.delve.graph.muteActor procedurenot from the namespace authority

    Creates a mute relationship for the specified account. If a mute already exists for the account, it is updated in place: the stored scope is replaced with the scope in this request. Mutes are private in Bluesky. Require…

Lexicon Garden

@