Adds a single new theme to the draft (max 2 total) — a create-only operation; the tenant's existing draft themes are left untouched. Rejected once the draft already holds 2 themes. Use PATCH /api/themes/ to edit an existing draft theme, and POST /api/themes/publish/ to publish it. Admin only.
Theme ID to apply to the current user after saving. Must be an id already in the applied (live) list — it can never be the theme this same call just created, since a brand-new draft theme has no applied-side id until it is separately published via POST /api/themes/publish/. Use this only to switch the caller to a different, already-live theme.
Theme display name.
Whether this is the tenant default theme.
When true, tenant branding (logo, favicon) is shown while this theme is active.
Whether this is a dark-mode theme.
Which logo variant to display when this theme is active. 'default' follows the theme's isDark flag, 'Dark' always uses the dark logo, 'Light' always uses the light logo.
CSS variable map (variable name → color value).
Added successfully — returns the newly created theme
Unique theme ID, generated on creation.
Theme display name.
Whether this is the tenant default theme.
When true, tenant branding (logo, favicon) is shown while this theme is active.
Whether this is a dark-mode theme.
Which logo variant to display when this theme is active. 'default' follows the theme's isDark flag, 'Dark' always uses the dark logo, 'Light' always uses the light logo.
CSS variable map (variable name → color value).
Whether this theme's content currently matches what's applied.
Validation error, or the draft already holds the maximum of 2 themes
Forbidden