mirror of
https://github.com/keycloak/keycloak.git
synced 2026-05-26 13:50:48 +00:00
d4cd08824d
* Closes: https://github.com/keycloak/keycloak/issues/47171 * Adds information about autocomplete to the v2 help **More about OpenAPI document fetching:** When Admin CLI is used with a different Keycloak server version, we need to update help and autocomplete according to OpenAPI document, which describes what endpoints and schemas can be used. This can only be done when the Keycloak server has enabled (currently experimental) OpenAPI feature and users specify OpenAPI path. The management path and port can be changed by user, therefore we ask them to specify OpenAPI URL entirely. This feature is only provided for the current session (when user is logged in into some server). We cannot easily provide help and autocomplete based on inline arguments like `--server` because it is bit chicken-egg problem (injected options are available after you provided command to PicoCLI, so we would need to do a lot manually). Here is how it works: ```bash mvavrik@fedora:~/sources/keycloak$ kcadm.sh --v2 config credentials --server http://localhost:8080 --realm master --user admin --password admin Logging into http://localhost:8080 as user admin of realm master OpenAPI descriptor cached for http://localhost:8080 (version 999.0.0-SNAPSHOT) ``` or for non-default management port: ```bash mvavrik@fedora:~/sources/keycloak$ kcadm.sh --v2 config credentials --server http://localhost:8080 --realm master --user admin --password admin Logging into http://localhost:8080 as user admin of realm master mvavrik@fedora:~/sources/keycloak$ kcadm.sh --v2 config openapi http://localhost:9004/openapi OpenAPI descriptor cached for http://localhost:8080 (version 999.0.0-SNAPSHOT) ``` or alternatively: ```bash mvavrik@fedora:~/sources/keycloak$ kcadm.sh --v2 config credentials --server http://localhost:8080 --realm master --user admin --password admin --openapi-url http://localhost:9004/openapi Logging into http://localhost:8080 as user admin of realm master OpenAPI descriptor cached for http://localhost:8080 (version 999.0.0-SNAPSHOT) ``` After that, command structure reflects the OpenAPI document, including help and autocomplete. If you switch server using `config credentials`, command changes as well. If the server you are communicating does not provide OpenAPI endpoint, we silently fallback to the default OpenAPI document (bundled with the command). However, the `kcadm.sh --v2 config openapi` fails if the OpenAPI endpoint wasn't available. Signed-off-by: Michal Vavřík <michal.vavrik@aol.com>