pet.trezy.getPreferences
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.
Details · query
| Kind | query |
|---|---|
| Authority | trezy.pet |
| Indexed |
Checks
Validunlimited-stringdefs.device.properties.deviceIdNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.device.properties.fingerprintNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.device.properties.labelNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.device.properties.typeModeNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.output.schema.properties.errorNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.output.schema.properties.messageNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.output.schema.properties.typeModeNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"device": {
"properties": {
"deviceId": {
"description": "The record key. Opaque and randomly generated by the browser; it carries nothing about the device or the person.",
"type": "string"
},
"fingerprint": {
"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.",
"type": "string"
},
"label": {
"type": "string"
},
"lastSeenAt": {
"format": "datetime",
"type": "string"
},
"typeMode": {
"knownValues": [
"pixel",
"softer",
"system"
],
"type": "string"
},
"updatedAt": {
"format": "datetime",
"type": "string"
}
},
"required": [
"deviceId",
"typeMode"
],
"type": "object"
},
"main": {
"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.",
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"devices": {
"description": "Every device with its own text style. Empty for almost everybody: a row exists only where the player deliberately chose one.",
"items": {
"ref": "#device",
"type": "ref"
},
"type": "array"
},
"error": {
"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.",
"knownValues": [
"not-authenticated",
"unavailable"
],
"type": "string"
},
"featureOffered": {
"description": "Account-scope only.",
"type": "boolean"
},
"message": {
"type": "string"
},
"typeMode": {
"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.",
"knownValues": [
"pixel",
"softer",
"system"
],
"type": "string"
},
"typeOffered": {
"type": "boolean"
},
"updatedAt": {
"format": "datetime",
"type": "string"
}
},
"required": [],
"type": "object"
}
},
"type": "query"
}
},
"id": "pet.trezy.getPreferences",
"lexicon": 1
}