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.
literal:self
Fixed literal value
Properties
appView
string
Optional
The AppView these mutes were last verified against (e.g. 'bluesky', 'blacksky', 'custom'). Native mutes are held per-AppView, so an index written while reading one AppView says nothing about another; without this, verifying the index against a different AppView reads 'that AppView does not hold this mute' as 'the reader lifted this mute' and deletes it.
createdAt
string
datetime
Required
When this index was first written
subjects
array
of
ref
#scopedMuteEntry
Required
The accounts currently carrying a native scoped mute.
maxLength: 1000 itemsupdatedAt
string
datetime
Optional
When this index was last reconciled or edited
View raw schema
{
"key": "literal:self",
"type": "record",
"record": {
"type": "object",
"required": [
"subjects",
"createdAt"
],
"properties": {
"appView": {
"type": "string",
"description": "The AppView these mutes were last verified against (e.g. 'bluesky', 'blacksky', 'custom'). Native mutes are held per-AppView, so an index written while reading one AppView says nothing about another; without this, verifying the index against a different AppView reads 'that AppView does not hold this mute' as 'the reader lifted this mute' and deletes it."
},
"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."
}