Skip to content

Preview a cluster upgrade

GET
/clusters/{cluster_id}/upgrade-preview
curl --request GET \
  --url 'http://localhost:8000/clusters/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/upgrade-preview?to=26.5.5' \
  --header 'API-Key: <API-Key>' \
  --header 'API-Version: 2026-06-01.beta'

Returns breaking changes and per-extension jar plans for upgrading this cluster to the requested target version.

Required scope: clusters:read

cluster_id
required
string format: uuid
to
required

Cluster version in semver format. Check the documentation for the latest supported versions.

string
>= 1 characters <= 20 characters /^[0-9]+\.[0-9]+(\.[0-9]+)?$/

Example

26.5.5
API-Version
required
string
Allowed values: 2026-06-01.beta

The request has succeeded.

Media typeapplication/json

Breaking changes and per-extension jar plans for upgrading a cluster to a target version.

object
breaking_changes
required

Breaking changes between the cluster’s current version and the requested target.

Array<object>

A breaking change recorded for a version of a cluster type, taken from the product’s own migration guide.

object
title
required

Title of the change, as published in the migration guide.

string
summary
required

Plain-language summary of what changes.

string
severity
required

How disruptive the change is: breaking, config-change or deprecation.

string
action_required
required

Concrete steps to take before upgrading, or null when none are recorded.

string
nullable
extensions
required

Installed extensions and how their jars participate in the upgrade.

Array<object>

How one installed extension participates in a Keycloak upgrade to a target version.

object
name
required

Extension display name.

string
action
required

Planned action: will_update, unchanged, pinned, custom, no_compatible_build, or pinned_no_compatible_build.

string
message

Customer-facing detail for this row.

string
current_jar_url

Primary JAR URL currently installed, when known.

string
target_jar_url

Primary JAR URL that would be used on the target Keycloak version, when applicable.

string

Example generated

{
  "breaking_changes": [
    {
      "title": "example",
      "summary": "example",
      "severity": "example",
      "action_required": "example"
    }
  ],
  "extensions": [
    {
      "name": "example",
      "action": "example",
      "message": "example",
      "current_jar_url": "example",
      "target_jar_url": "example"
    }
  ]
}

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"
}

The server cannot find the requested resource.

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

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"
}