pet.trezy.getPreferences

trezy.pet

Schema Diff

+4 -0

From

CID
bafyreigznjup75y...
Indexed At
2026-08-09 01:42 UTC
View this version

To

CID
bafyreidhle4soku...
Indexed At
2026-09-22 18:24 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@