Replaces the caller's own 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.
tessera_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- 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.
The preferences as they now stand
application/json- 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": {}}