Public API #
The Kuzzle PaaS backend is a Kuzzle application. It exposes custom Kuzzle controllers to manage organizations, projects, environments, applications, releases and deployments.
Every action is called as controller:action, with any Kuzzle SDK:
await kuzzle.query({
controller: 'org-environment',
action: 'list',
organizationId: 'paas-org-my-company',
projectId: 'my-project'
});or with Kourou, passing each argument with -a and the request body with --body:
kourou org-environment:list -a organizationId=paas-org-my-company -a projectId=my-projectThis is how the Kuzzle PaaS console itself calls the API, and the supported way to integrate with it.
Each action also declares an HTTP route, listed on every page of this section for reference. Kuzzle serves the routes of custom controllers under the /_/ prefix (for example GET /_/organizations/:organizationId), where several of them collide with Kuzzle's generic document routes (/:index/:collection/...) and never reach the Kuzzle PaaS controller. Do not build an integration on these HTTP routes: call controller:action through an SDK or Kourou instead.
Authentication #
Most actions require an authenticated Kuzzle user. Authenticate with the SDK (see Authentication); the SDK then sends the JWT with every request.
Main resources #
- Organizations
- Projects
- Environments
- Applications
- Releases
- Deployments
- Monitoring and alerts
- Data models
- Browser logs
- Legacy deploy bridge (deprecated)
Resource hierarchy #
Organization
+-- Project
+-- Environment
| +-- Application
+-- Release
+-- Deployment (a release applied to one environment)An organization is the top-level tenant. A project belongs to one organization. An environment belongs to one project. An application belongs to one environment. Releases and deployments belong to a project; a deployment targets one environment of that project.
Common conventions #
organizationIdis the organization tenant index, for examplepaas-org-my-company.projectIdis the project (soft tenant) identifier inside the organization, for examplemy-project.environmentIdis the environment name, for examplestagingorproduction.applicationIdis the application_id, for exampleapiorwebapp.releaseIdanddeploymentIdare the document ids returned when the release or deployment is created.- Scalar parameters (names, ids, flags) are top-level request arguments. Structured payloads (an application definition, an image to deploy, a webhook) are passed in the request
body. - Boolean flags such as
initKeycloakRealmorexistingRepoare read as the string'true'; any other value meansfalse. - Long-running operations may return an acknowledgement (for example
"deleted") or a document in an intermediate status before the platform has finished provisioning, building or rolling out.
Public controller summary #
| Controller | Purpose |
|---|---|
organization | Manage organizations, their members and roles, invitations, machine identities, the projects they own and their GitHub connection. |
org-environment | Create, refresh, enable, disable and delete environments; map their release branch and tier; manage their GitHub Environment, credentials, monitoring, alerts and Keycloak realm. |
org-application | Create, update, deploy, enable, disable and delete applications, and read their deployable image versions and runtime status. |
org-release | Cut a release of a project from an environment's release branch, and follow it. |
org-deployment | Deploy a release to an environment, follow the build and rollout, and roll it back. |
org-apikey | Issue and revoke scoped API keys for a project's registry access. |
registry | Resolve a caller's registry access from an API key (used by the private package registry). |
sso | Generate a Keycloak logout URL. |
browser-logs | Receive the logs sent by the Kuzzle PaaS web console. |
legacy-deploy | Deprecated. Compatibility bridge for projects still deploying with paas-action@<=1.2.2. |