pet.trezy.getPreferences
Schema Diff
+4 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 2 non-breaking changes.
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "pet.trezy.getPreferences:output.featureOffered" }
- AddedEdge AddedEdge { src: "pet.trezy.getPreferences:output", tgt: "pet.trezy.getPreferences:output.featureOffered", kind: "prop", name: Some("featureOffered") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "pet.trezy.getPreferences:output.featureOffered" }
Additional Notes
- Non-breaking: AddedEdge { src: "pet.trezy.getPreferences:output", tgt: "pet.trezy.getPreferences:output.featureOffered", kind: "prop", name: Some("featureOffered") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"device": {
5
5
"properties": {
6
6
"deviceId": {
7
7
"description": "The record key. Opaque and randomly generated by the browser; it carries nothing about the device or the person.",
8
8
"type": "string"
9
9
},
10
10
"fingerprint": {
11
11
"description": "Returned so the asking device can re-find its own row after its local storage was cleared. It is the player's own data and goes nowhere else.",
12
12
"type": "string"
13
13
},
14
14
"label": {
15
15
"type": "string"
16
16
},
17
17
"lastSeenAt": {
18
18
"format": "datetime",
19
19
"type": "string"
20
20
},
21
21
"typeMode": {
22
22
"knownValues": [
23
23
"pixel",
24
24
"softer",
25
25
"system"
26
26
],
27
27
"type": "string"
28
28
},
29
29
"updatedAt": {
30
30
"format": "datetime",
31
31
"type": "string"
32
32
}
33
33
},
34
34
"required": [
35
35
"deviceId",
36
36
"typeMode"
37
37
],
38
38
"type": "object"
39
39
},
40
40
"main": {
41
41
"description": "Everything the caller's account knows about how to present the game: the account-wide default, and every device that has been given its own text style. Takes no DID — it answers for whoever is authenticated and nobody else. ⚠ IT RETURNS THE WHOLE PICTURE RATHER THAN AN ANSWER, deliberately: which of these applies depends on which device is asking and what its browser still remembers, and that reconciliation lives in one tested place on the client (src/lib/preferences.ts) instead of being half here and half there.",
42
42
"output": {
43
43
"encoding": "application/json",
44
44
"schema": {
45
45
"properties": {
46
46
"devices": {
47
47
"description": "Every device with its own text style. Empty for almost everybody: a row exists only where the player deliberately chose one.",
48
48
"items": {
49
49
"ref": "#device",
50
50
"type": "ref"
51
51
},
52
52
"type": "array"
53
53
},
54
54
"error": {
55
55
"description": "Present instead of the preferences when there are none to send. A stable machine code the client branches on — add codes, never rename them. `unavailable` means the read failed and the answer is UNKNOWN, which a client must not treat as 'no preferences': pushing over state it could not read is how an outage destroys a real setting. `no-space` means this player has never saved anything, which is an ordinary empty answer.",
56
56
"knownValues": [
57
57
"not-authenticated",
58
58
"unavailable"
59
59
],
60
60
"type": "string"
61
61
},
62
+
"featureOffered": {
63
+
"description": "Account-scope only.",
64
+
"type": "boolean"
65
+
},
62
66
"message": {
63
67
"type": "string"
64
68
},
65
69
"typeMode": {
66
70
"description": "The account-wide default. Absent when the player has never set one — which is NOT the same as the default mode, and is what tells a new device to keep its own.",
67
71
"knownValues": [
68
72
"pixel",
69
73
"softer",
70
74
"system"
71
75
],
72
76
"type": "string"
73
77
},
74
78
"typeOffered": {
75
79
"type": "boolean"
76
80
},
77
81
"updatedAt": {
78
82
"format": "datetime",
79
83
"type": "string"
80
84
}
81
85
},
82
86
"required": [],
83
87
"type": "object"
84
88
}
85
89
},
86
90
"type": "query"
87
91
}
88
92
},
89
93
"id": "pet.trezy.getPreferences",
90
94
"lexicon": 1
91
95
}