Skip to content

List extensions

GET
/extensions
curl --request GET \
  --url http://localhost:8000/extensions \
  --header 'API-Key: <API-Key>' \
  --header 'API-Version: 2026-06-01.beta'

Returns all platform extensions and the workspace’s custom extensions.

Required scope: extensions:read

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

The request has succeeded.

Media typeapplication/json
Array<object>
object
id
required
string format: uuid
name
required
string
>= 1 characters <= 200 characters
display_name

Friendly name shown in place of name when set. name never changes once an extension is catalogued; display_name lets the shown label change independently. Absent or null when the extension has none, in which case clients should fall back to name.

string
nullable <= 200 characters
description
required
string
nullable
source
required
string
Allowed values: platform custom
visibility

Set for platform extensions only: private marks an early-access extension your workspace has been granted. Absent for custom extensions.

string
Allowed values: public private
version
required

Active version of the extension. For platform extensions this is the newest release across its supported Keycloak versions; the version a given cluster gets is available_version on its cluster extension. For custom extensions it is the uploader-supplied version.

string
previous_versions
required

Previously published versions, ordered from oldest to newest.

Array<object>
object
version
required
string
created_at
required
string format: date-time
keycloak_versions
required

Supported Keycloak major versions (e.g. ["25", "26"]).

Array<string>
parameter_type
required
string
Allowed values: env cli realm_attributes
parameters
required
Array<object>
object
key
required

Unique parameter identifier within the extension.

string
>= 1 characters <= 100 characters
label
required
string
>= 1 characters <= 200 characters
type
required
string
Allowed values: text dropdown checkbox number password
required
required
boolean
default_value
required
string
nullable
options
required

Available choices. Only applicable when type is dropdown.

Array<object>
object
value
required
string
label
required
string
is_sensitive
required

When true, the parameter value is write-only and omitted from read responses.

boolean
repository_url
required
string format: uri
nullable
icon_url
required
string format: uri
nullable
documentation_url
required
string format: uri
nullable
quick_start_steps
required
string
nullable
usage_notes
required
string
nullable
scan_status
required

Malware scan result. Only set for custom extensions.

string
Allowed values: scanning ready rejected failed
scan_message
required

Human-readable scan result. Present when scan_status is rejected (names the detected signature) or failed (says the scan could not complete).

string
nullable
original_jar_name
required

Original JAR filename provided at upload time. Only set for custom extensions.

string
nullable
file_size_bytes
required

JAR file size in bytes. Only set for custom extensions.

integer
nullable
uploaded_at
required

When the extension was first uploaded. Only set for custom extensions.

string format: date-time
nullable
created_at
required
string format: date-time
updated_at
required
string format: date-time

Example

[
  {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "Social Login Bundle",
    "description": "Adds social login providers for Google, GitHub, and Microsoft.",
    "source": "platform",
    "version": "3.1.0",
    "previous_versions": [],
    "keycloak_versions": [
      "25",
      "26"
    ],
    "parameter_type": "env",
    "parameters": [],
    "repository_url": null,
    "icon_url": null,
    "documentation_url": null,
    "quick_start_steps": null,
    "usage_notes": null,
    "scan_status": null,
    "scan_message": null,
    "original_jar_name": null,
    "file_size_bytes": null,
    "uploaded_at": "2025-01-15T10:00:00Z",
    "created_at": "2025-01-15T10:00:00Z",
    "updated_at": "2025-03-20T14:30:00Z"
  }
]

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

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