pet.trezy.setPreferences
Schema Diff
+8 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 4 non-breaking changes.
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "pet.trezy.setPreferences:input.featureOffered" }
- AddedVertex AddedVertex { vertex_id: "pet.trezy.setPreferences:output.featureOffered" }
- AddedEdge AddedEdge { src: "pet.trezy.setPreferences:input", tgt: "pet.trezy.setPreferences:input.featureOffered", kind: "prop", name: Some("featureOffered") }
- AddedEdge AddedEdge { src: "pet.trezy.setPreferences:output", tgt: "pet.trezy.setPreferences:output.featureOffered", kind: "prop", name: Some("featureOffered") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "pet.trezy.setPreferences:input.featureOffered" }AddedVertex { vertex_id: "pet.trezy.setPreferences:output.featureOffered" }
Additional Notes
- Non-breaking: AddedEdge { src: "pet.trezy.setPreferences:input", tgt: "pet.trezy.setPreferences:input.featureOffered", kind: "prop", name: Some("featureOffered") }
- Non-breaking: AddedEdge { src: "pet.trezy.setPreferences:output", tgt: "pet.trezy.setPreferences:output.featureOffered", kind: "prop", name: Some("featureOffered") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "Save a text style, either for the whole account or for one device. ⚠ `scope` IS REQUIRED AND HAS NO DEFAULT. Guessing it is the one mistake that cannot be undone by guessing again: silently defaulting to `account` changes the typeface on every device somebody owns when they meant to change one, and silently defaulting to `device` leaves them wondering why their laptop never followed. The client always knows which the player asked for, because the player was asked.",
6
6
"input": {
7
7
"encoding": "application/json",
8
8
"schema": {
9
9
"properties": {
10
10
"deviceId": {
11
11
"description": "Required for `device` scope; optional for `account`, where supplying it clears this device's override. Opaque — the client generates it and it must carry nothing about the device or the person.",
12
12
"maxLength": 64,
13
13
"type": "string"
14
14
},
15
+
"featureOffered": {
16
+
"description": "Account-scope only.",
17
+
"type": "boolean"
18
+
},
15
19
"fingerprint": {
16
20
"maxLength": 64,
17
21
"type": "string"
18
22
},
19
23
"label": {
20
24
"maxLength": 60,
21
25
"type": "string"
22
26
},
23
27
"scope": {
24
28
"description": "`account` writes the account-wide default AND deletes this device's override, so the device the player is holding actually follows the choice they just made. `device` writes an override for `deviceId` alone and leaves the account default untouched.",
25
29
"knownValues": [
26
30
"account",
27
31
"device"
28
32
],
29
33
"type": "string"
30
34
},
31
35
"typeMode": {
32
36
"knownValues": [
33
37
"pixel",
34
38
"softer",
35
39
"system"
36
40
],
37
41
"type": "string"
38
42
},
39
43
"typeOffered": {
40
44
"description": "Account-scope only. Refused with `device`, because being told about pixel type is a fact about a person and storing it per-device would re-arm the notice on every new device.",
41
45
"type": "boolean"
42
46
}
43
47
},
44
48
"required": [
45
49
"scope"
46
50
],
47
51
"type": "object"
48
52
}
49
53
},
50
54
"output": {
51
55
"encoding": "application/json",
52
56
"schema": {
53
57
"properties": {
54
58
"error": {
55
59
"description": "A stable machine code the client branches on — add codes, never rename them.",
56
60
"knownValues": [
57
61
"not-authenticated",
58
62
"invalid-scope",
59
63
"invalid-mode",
60
64
"device-required",
61
65
"offered-is-account-scope",
62
66
"nothing-to-do",
63
67
"save-failed"
64
68
],
65
69
"type": "string"
66
70
},
71
+
"featureOffered": {
72
+
"description": "Account-scope only.",
73
+
"type": "boolean"
74
+
},
67
75
"message": {
68
76
"type": "string"
69
77
},
70
78
"typeMode": {
71
79
"knownValues": [
72
80
"pixel",
73
81
"softer",
74
82
"system"
75
83
],
76
84
"type": "string"
77
85
},
78
86
"typeOffered": {
79
87
"type": "boolean"
80
88
},
81
89
"updatedAt": {
82
90
"format": "datetime",
83
91
"type": "string"
84
92
}
85
93
},
86
94
"required": [],
87
95
"type": "object"
88
96
}
89
97
},
90
98
"type": "procedure"
91
99
}
92
100
},
93
101
"id": "pet.trezy.setPreferences",
94
102
"lexicon": 1
95
103
}