tessera

Replaces the caller's own preferences.

PUT
/api/v1/me/preferences

Why an unknown name is a 400

These end up as attributes on the <html> element. Refusing anything outside the lists is the entire check, and it belongs here, not at render time, when the value is already stored and its writer long gone.

Errors

400 when a name is not one this build knows, 401 when nothing was signed in.

cookietessera_session<token>

Set by POST /auth/login. A browser sends it automatically; it is HttpOnly, so page scripts cannot read or set it.

application/json
  1. body

Body of PUT /me/preferences.

appearance?

The appearance choices, replacing whatever was stored.

Omit a field, or send {}, to have no opinion and follow the instance's default. The accepted names are the ones [PreferencesResponse] lists; anything else is a 400.

Response Body

The preferences as they now stand

application/json
  1. response

One user's preferences.

One field so far. Language, time zone and clock format have been requested, and each will be another field here, not another endpoint.

appearance*

The appearance choices, {} when none have been made.

mode is one of light, dark, system; theme one of default, graphite, sepia; accent one of violet, rose, orange, amber, green, teal, blue. Any of the three may be absent, meaning the user has no opinion and follows the instance.

curl -X PUT 'https://example.com/api/v1/me/preferences' \  -H 'Content-Type: application/json' \  -d '{}'
{  "appearance": {}}