# Accessing Entando APIs
# Overview
Entando includes the Swagger UI in a quickstart environment and is reachable at /entando-de-app/api/swagger-ui.html
:
http://[your-host-name]/entando-de-app/api/swagger-ui.html
# Enable or disable the Swagger UI in a running container
The Swagger UI can be enabled or disabled in a running container by modifying the SPRING_PROFILES_ACTIVE environment variable for the entando-de-app container.
- Edit the deployment. The name may be different outside of a quickstart environment.
sudo kubectl -n entando edit deployment/quickstart-server-deployment
(Optional) Scale the deployment
spec.replicas
to 0 before updating the deployment. This is necessary if you're using an in-memory database, e.g. the default quickstart configuration, and will prevent database errors that can happen on an immediate restart after the profile is changed. Save the deployment to apply the change.Find the entando-de-app env variables section under
spec.template.spec.containers.env[image: entando-de-app]
4a. To enable the swagger UI, add the SPRING_PROFILES_ACTIVE environment variable, if it's missing, or add swagger
to its comma-delimited list.
- name: SPRING_PROFILES_ACTIVE
value: default,swagger
4b. To disable the swagger UI, remove swagger
from the value.
(Optional) Reset the deployment
spec.replicas
back to 1.Save the deployment to apply the change.
# How to find your client secret
You'll need your client credentials to execute the Entando APIs.
Login into your Keycloak instance
Go to
Administration → Clients
Select the desired client (e.g. in a quickstart environment this is
quickstart-server
)Click on the
Credentials
tab to get the secret
# Setup in local environment
You may prefer to run a local standalone Entando application for some tasks. You'll need Java 11, maven, and Keycloak for authentication. See these instructions (opens new window) to setup a standalone Keycloak.
# Configure Keycloak
Configure your Keycloak client in order to support Swagger UI. A quickstart environment has this pre-configured.
Login to your Keycloak instance
Access the Administration console
Click on
Clients
on the left bar and select your client (e.g.quickstart-server
)Update the following values under
Settings
:- Set
Valid Redirect URIs
tohttp://localhost:[your port]/entando-de-app/*
or*
to allow all redirect URIs. - Set
Web Origins
tohttp://localhost:[your port]
or*
to accept all origins.
- Set
# Start the Entando Application
Clone the Entando reference application:
git clone https://github.com/entando/entando-de-app
Start the application with the following options:
- Enable the Swagger profile via
-Dspring.profiles.active=swagger
- Enable the Keycloak profile via
-Pkeycloak
- Configure the application connection to Keycloak itself. For simplicity this uses the same client credentials you'll use to try out the APIs.
- Set
-Dkeycloak.auth.url
to your Keycloak endpoint (including/auth
), e.g.-Dkeycloak.auth.url=http://my-keycloak-server/auth
- Set
-Dkeycloak.client.id
to your client id, e.g.-Dkeycloak.client.id=quickstart-server
- Set
-Dkeycloak.client.secret
to your client secret, e.g.-Dkeycloak.client.secret=my-secret
. See How to find your client secret above.
- Set
- (Optional) Set
-Djetty.port=8085
if the default port 8080 is already in use. - (Optional) To skip the docker steps (or if you don't have docker installed/running), add
-DskipDocker=true
Here's a full example:
mvn clean package jetty:run-war -Pjetty-local -Pderby -Pkeycloak -Dspring.profiles.active=swagger -Djetty.port=8085 -Dorg.slf4j.simpleLogger.log.org.eclipse.jetty.annotations.AnnotationParser=error -Dkeycloak.auth.url=http://my-keycloak-host/auth -Dkeycloak.client.id=quickstart-server -Dkeycloak.client.secret=my-client-secret -DskipDocker=true
- Enable the Swagger profile via
Wait for the application to start.
[INFO] Started ServerConnector@1355c8be{HTTP/1.1, (http/1.1)}{0.0.0.0:8085} [INFO] Started @66257ms [INFO] Started Jetty Server
Navigate to the Swagger UI in a browser at
/entando-de-app/api/swagger-ui.html
http://localhost:[your port]/entando-de-app/api/swagger-ui.html
# APIs Overview
The Entando core exposes REST APIs for every action that can be taken in the App Builder environment. For example, you can use these APIs to create pages, create page templates or to add widgets to pages. The APIs can be used to support automation, testing, or integrations with external systems.
# API structure
All of the APIs share a common top level structure. Each response will
contain a top level entry for errors
, metadata
, and payload
.
The errors
will always contain code and a message string indicating an
error condition in the request. The metadata
section is used for
paging, sorting, filtering and data that is distinct from the body. The
body of each response is included in the payload
section of the
response and varies according to each API.
# Models
All of the model classes returned by the Entando core are annotated so that the model definition is included in the Swagger documentation. At the bottom of the Swagger page all of the model classes returned by the API endpoints can be found.
# Tutorial
Access your application Swagger UI as discussed above
Click on the
Authorize
button in the upper right cornerEnter the client id and client secret in the open window and click
Authorize
If you are redirected to the Entando login page, log in with your credentials (default are
admin
/adminadmin
)You will be redirected to the Swagger UI page, now authenticated
Use the Try it out button on the APIs
Scroll to
widget-controller
Select the blue GET row
Select Try it out
Look at the results in the window. You should see a Server response with Code 200 and full response body.