Update the per-install appearance configuration
PATCH /admin/system/appearance
Persists the brand / display / body / mono font slot IDs.
Empty string in any field means “use the slot default”.
Requires the system.appearance.write capability (auto-granted
to admins).
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”Per-install brand and typography choices. Each field holds a
font catalogue ID (e.g. limelight, inter-variable,
system-sans); the frontend resolves the ID to an
@font-face declaration at boot. Empty string means the slot
uses the frontend’s default.
object
Logo / hero font slot. Recommended for display faces (Limelight, Bebas Neue, Playfair Display); body text never uses this slot.
H1–H3 heading slot. Falls back to the body font when empty.
Body / UI text slot. Falls back to the system sans-serif stack when empty.
Code / tabular numerics slot. Falls back to the system monospace stack when empty.
Display name of this install. Read-only here — it is owned
and edited via the Site config (/admin/system/site); it is
surfaced on this public boot path so the wordmark, login
card, and document titles can render the configured name
before the user has signed in. Defaults to “Artist Alley”
when the operator hasn’t set one.
Example
Artist AlleyTrue when this install runs in demo mode (env
AA_DEMO_MODE=1). Surfaced on the public boot path so the
login card can advertise the shared demo credentials and a
read-only banner can render once signed in. Absent/false in
a normal install — zero footprint when off.
Responses
Section titled “ Responses ”Updated appearance config
Per-install brand and typography choices. Each field holds a
font catalogue ID (e.g. limelight, inter-variable,
system-sans); the frontend resolves the ID to an
@font-face declaration at boot. Empty string means the slot
uses the frontend’s default.
object
Logo / hero font slot. Recommended for display faces (Limelight, Bebas Neue, Playfair Display); body text never uses this slot.
H1–H3 heading slot. Falls back to the body font when empty.
Body / UI text slot. Falls back to the system sans-serif stack when empty.
Code / tabular numerics slot. Falls back to the system monospace stack when empty.
Display name of this install. Read-only here — it is owned
and edited via the Site config (/admin/system/site); it is
surfaced on this public boot path so the wordmark, login
card, and document titles can render the configured name
before the user has signed in. Defaults to “Artist Alley”
when the operator hasn’t set one.
Example
Artist AlleyTrue when this install runs in demo mode (env
AA_DEMO_MODE=1). Surfaced on the public boot path so the
login card can advertise the shared demo credentials and a
read-only banner can render once signed in. Absent/false in
a normal install — zero footprint when off.
Malformed request
object
Human-readable error summary
Example
the request could not be completedAuthentication required, missing, or invalid
object
Human-readable error summary
Example
the request could not be completedExample
{ "error": "authentication required: sign in and retry with a valid session or API token"}Authenticated but missing required capabilities
object
Human-readable error summary
Example
the request could not be completed