pet.trezy.setPreferences

trezy.pet

Schema Diff

+8 -0

From

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

To

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

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
}

Compare Other Versions

Lexicon Garden

@