net.anisota.graph.scopedMute

anisota.net

{
  "id": "net.anisota.graph.scopedMute",
  "defs": {
    "main": {
      "key": "literal:self",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "subjects",
          "createdAt"
        ],
        "properties": {
          "subjects": {
            "type": "array",
            "items": {
              "ref": "#scopedMuteEntry",
              "type": "ref"
            },
            "maxLength": 1000,
            "description": "The accounts currently carrying a native scoped mute."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "When this index was first written"
          },
          "updatedAt": {
            "type": "string",
            "format": "datetime",
            "description": "When this index was last reconciled or edited"
          }
        }
      },
      "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."
    },
    "scopedMuteEntry": {
      "type": "object",
      "required": [
        "subject"
      ],
      "properties": {
        "subject": {
          "type": "string",
          "format": "did",
          "description": "DID of the scope-muted account"
        },
        "createdAt": {
          "type": "string",
          "format": "datetime",
          "description": "When this scoped mute was set from Anisota"
        },
        "onlyReposts": {
          "type": "boolean",
          "default": false,
          "description": "Their reposts are muted"
        },
        "onlyQuoteposts": {
          "type": "boolean",
          "default": false,
          "description": "Their quote posts are muted"
        }
      },
      "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."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "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)

Lexicon Garden

@