Skip to content

Update the workspace's theme settings

PUT
/theme-settings
curl --request PUT \
  --url http://localhost:8000/theme-settings \
  --header 'API-Key: <API-Key>' \
  --header 'API-Version: 2026-06-01.beta' \
  --header 'Content-Type: application/json' \
  --data '{ "exact_theme_names": true }'

Changes the workspace’s theme naming policy. This changes what every realm on every cluster in the workspace serves, so it additionally requires the API key to have been minted for a workspace owner or admin; a key minted for any other role, including a cluster admin, gets 403 even with the themes:write scope.

Turning exact_theme_names on moves the workspace’s existing themes to their exact names in the background; this does not block the response. A theme that cannot be moved right away (for example because its cluster is busy updating) completes the move on its next content replace instead.

Turning it off changes nothing immediately: each theme keeps its current served folder until its next content replace, from which point the folder changes on every replace again.

Required scope: themes:write

API-Version
required
string
Allowed values: 2026-06-01.beta
Media typeapplication/json

The workspace’s theme naming policy.

object
exact_theme_names
required

When true, every theme in the workspace is served from a folder named exactly like the theme, and that name never changes across content replaces. When false (the default), the served folder changes on each replace, unless the theme was created by a platform migration.

boolean

Example generated

{
  "exact_theme_names": true
}

The request has succeeded.

Media typeapplication/json

The workspace’s theme naming policy.

object
exact_theme_names
required

When true, every theme in the workspace is served from a folder named exactly like the theme, and that name never changes across content replaces. When false (the default), the served folder changes on each replace, unless the theme was created by a platform migration.

boolean

Example generated

{
  "exact_theme_names": true
}

Access is unauthorized.

Media typeapplication/problem+json

RFC 9457 Problem Details object.

object
type
required
string format: uri
title
required
string
status
required
integer
detail
required
string
instance
string format: uri

Example generated

{
  "type": "https://example.com",
  "title": "example",
  "status": 1,
  "detail": "example",
  "instance": "https://example.com"
}

Access is forbidden.

Media typeapplication/problem+json

RFC 9457 Problem Details object.

object
type
required
string format: uri
title
required
string
status
required
integer
detail
required
string
instance
string format: uri

Example generated

{
  "type": "https://example.com",
  "title": "example",
  "status": 1,
  "detail": "example",
  "instance": "https://example.com"
}

Client error

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
detail
required
string
instance
string format: uri
errors
required
Array<object>
>= 1 items
object
field
required
string
detail
required
string
code
string
value

Example generated

{
  "type": "https://example.com",
  "title": "example",
  "status": 1,
  "detail": "example",
  "instance": "https://example.com",
  "errors": [
    {
      "field": "example",
      "detail": "example",
      "code": "example",
      "value": "example"
    }
  ]
}

Client error

Media typeapplication/problem+json

RFC 9457 Problem Details object.

object
type
required
string format: uri
title
required
string
status
required
integer
detail
required
string
instance
string format: uri

Example generated

{
  "type": "https://example.com",
  "title": "example",
  "status": 1,
  "detail": "example",
  "instance": "https://example.com"
}
Retry-After
integer
RateLimit-Limit
integer
RateLimit-Remaining
integer
RateLimit-Reset
integer
X-RateLimit-Limit-Second
integer
X-RateLimit-Remaining-Second
integer
X-RateLimit-Limit-Minute
integer
X-RateLimit-Remaining-Minute
integer
X-RateLimit-Limit-Hour
integer
X-RateLimit-Remaining-Hour
integer
X-RateLimit-Limit-Day
integer
X-RateLimit-Remaining-Day
integer

Server error

Media typeapplication/problem+json

RFC 9457 Problem Details object.

object
type
required
string format: uri
title
required
string
status
required
integer
detail
required
string
instance
string format: uri

Example generated

{
  "type": "https://example.com",
  "title": "example",
  "status": 1,
  "detail": "example",
  "instance": "https://example.com"
}

Server error

Media typeapplication/problem+json

RFC 9457 Problem Details object.

object
type
required
string format: uri
title
required
string
status
required
integer
detail
required
string
instance
string format: uri

Example generated

{
  "type": "https://example.com",
  "title": "example",
  "status": 1,
  "detail": "example",
  "instance": "https://example.com"
}