net.anisota.graph.listMute
Schema Diff
+2 -2
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 1 non-breaking change.
Breaking Changes (1)
- ConstraintAdded ConstraintAdded { vertex_id: "net.anisota.graph.listMute:body.targetFeeds:items", sort: "maxLength", value: "512" }
Non-Breaking Changes (1)
- ConstraintRemoved ConstraintRemoved { vertex_id: "net.anisota.graph.listMute:body.targetFeeds:items", sort: "format" }
Migration Guidance
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "net.anisota.graph.listMute:body.targetFeeds:items", sort: "maxLength", value: "512" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "net.anisota.graph.listMute:body.targetFeeds:items", sort: "format" }
1
1
{
2
2
"id": "net.anisota.graph.listMute",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"subject",
11
11
"createdAt"
12
12
],
13
13
"properties": {
14
14
"reason": {
15
15
"type": "string",
16
16
"maxLength": 300,
17
17
"description": "Optional reason for muting this list"
18
18
},
19
19
"subject": {
20
20
"type": "string",
21
21
"format": "at-uri",
22
22
"description": "AT-URI of the list to mute (app.bsky.graph.list record)"
23
23
},
24
24
"createdAt": {
25
25
"type": "string",
26
26
"format": "datetime",
27
27
"description": "When the mute was created"
28
28
},
29
29
"expiresAt": {
30
30
"type": "string",
31
31
"format": "datetime",
32
32
"description": "When this mute expires. If not set, mute is permanent"
33
33
},
34
34
"targetFeeds": {
35
35
"type": "array",
36
36
"items": {
37
37
"type": "string",
38
-
"format": "at-uri"
38
+
"maxLength": 512
39
39
},
40
40
"maxLength": 50,
41
-
"description": "Specific feeds where this mute should apply. If empty, applies to all feeds"
41
+
"description": "Specific feeds where this mute should apply: feed generator / list at-uris, or the literal sentinel 'following' for the home timeline (which has no at-uri). Empty or absent applies everywhere. Matches net.anisota.graph.wordlist#targetFeeds."
42
42
},
43
43
"contentTypes": {
44
44
"ref": "#contentTypes",
45
45
"type": "ref",
46
46
"description": "Types of content to mute from accounts on this list"
47
47
}
48
48
}
49
49
},
50
50
"description": "A record for muting content from all accounts on a list with fine-grained control over content types, duration, and feed targeting"
51
51
},
52
52
"contentTypes": {
53
53
"type": "object",
54
54
"properties": {
55
55
"posts": {
56
56
"type": "boolean",
57
57
"default": true,
58
58
"description": "Mute regular posts from accounts on this list"
59
59
},
60
60
"quotes": {
61
61
"type": "boolean",
62
62
"default": true,
63
63
"description": "Mute quote posts from accounts on this list"
64
64
},
65
65
"replies": {
66
66
"type": "boolean",
67
67
"default": true,
68
68
"description": "Mute replies from accounts on this list"
69
69
},
70
70
"reposts": {
71
71
"type": "boolean",
72
72
"default": true,
73
73
"description": "Mute reposts from accounts on this list"
74
74
}
75
75
},
76
76
"description": "Configuration for which types of content to mute"
77
77
}
78
78
},
79
79
"$type": "com.atproto.lexicon.schema",
80
80
"lexicon": 1
81
81
}