Data models #
This page documents the main public payloads exchanged with the Kuzzle PaaS API.
Organization #
{
"id": "paas-org-my-company",
"name": "My Company",
"slug": "my_company",
"description": "Acme Inc."
}Fields:
id: organization tenant index. It is omitted when creating an organization.name: organization display name (free, non-unique).slug: organization slug used as the tenant name (generated from the display name).description: optional organization description.
Project #
A project is a multi-tenancy soft tenant of its organization. It is identified by a short projectId and its external resources are addressed by a resource key derived from the organization slug and the project id.
{
"name": "my-project",
"description": "Customer production project",
"resourceKey": "my-company-my-project"
}Membership #
Returned by organization:listMembers.
{
"userId": "kuid-john-doe",
"roles": ["member"],
"softTenants": ["my-project"]
}Fields:
userId: the member's Kuzzle user id.roles: organization roles, amongowner,admin,member.softTenants: the project ids the member is attached to.
Environment #
{
"name": "production",
"description": "Production environment",
"projectId": "my-project",
"applications": [],
"size": "M",
"status": "Deployed",
"tier": "prod",
"keycloak": {
"enabled": true,
"realmName": "my-company-my-project-production"
}
}Fields:
name: environment identifier.description: human-readable description.projectId: parent project identifier.applications: applications deployed in this environment.size: one ofS,S_SLA,M,L.status: one ofDeploying,Deployed,Upgrading,Disabled,Errored.tier: optional deployment tier, one ofuat,staging,prod.keycloak: optional Keycloak realm metadata.
Application #
{
"_id": "api",
"name": "kuzzleES8",
"metadata": {
"finalizers": ["resources-finalizer.argocd.argoproj.io"],
"namespace": "delivery",
"name": "api-production-my-company-my-project"
},
"spec": {
"destination": {
"namespace": "my-company-my-project",
"server": "https://kubernetes.default.svc"
},
"source": {
"chart": "paas-kuzzle-es8",
"repoURL": "https://kuzzleio.github.io/helm-charts/",
"targetRevision": "1.5.0",
"helm": {
"releaseName": "api-production-my-company-my-project",
"values": {}
}
},
"syncPolicy": {
"automated": {
"allowEmpty": true,
"prune": true
}
},
"project": "my-company-my-project"
},
"settings": {
"projectId": "my-project",
"environmentId": "production",
"customDomain": "api.example.com",
"customPort": 7512,
"linkedWebAppId": "webapp",
"protocols": [
{
"name": "http",
"port": 7512
}
]
},
"status": "Healthy"
}Fields:
_id: application identifier inside the environment.name: application type. Public values arekuzzle,kuzzleES8,webapp,custom.metadata: ArgoCD application metadata.spec: ArgoCD application specification.settings: Kuzzle PaaS application settings.status: application health status (Healthy,Progressing,Degraded,Suspended).
Application settings #
{
"projectId": "my-project",
"environmentId": "production",
"customDomain": "api.example.com",
"customCertificates": ["tls-secret-name"],
"customPort": 7512,
"linkedWebAppId": "webapp",
"keycloak": {
"clientId": "api",
"secret": "<client-secret>",
"realm": "my-company-my-project-production"
},
"protocols": [
{
"name": "http",
"port": 7512
}
]
}Image #
Used by org-application:deploy.
{
"name": "harbor.paas.kuzzle.io/my-company-my-project/api",
"tag": "1.2.3"
}Kuzzle document wrapper #
Some configuration endpoints return Kuzzle documents:
{
"_id": "slack",
"_source": {
"webhookUrl": "https://hooks.slack.com/services/..."
},
"_kuzzle_info": {
"author": "-1",
"createdAt": 1781870400000,
"updatedAt": 1781870400000,
"updater": "-1"
}
}