Skip to main content
A deployment is described by one body: you create a deployment with it, read the deployment back in the same shape, and change it with it. The body carries schemaVersion: 1, so the schema can evolve without new routes: the endpoints stay /api/clusters and /api/clusters/{name}. The Admin UI and every example on this page use it.

The body

A read adds status: state and ready, node and sentinel counts, endpoints, the TLS certificate’s expiry, pendingChanges (accepted but not applied yet), and unmanagedFields (settings made outside this API, such as with the YAML editor). A read leaves out what is not kept on the deployment itself: config.enterprise and config.server (they live in redis.conf) and backup. An inline security.auth.password reads back as the passwordSecretRef of the Secret it was moved into.

Create, read and change

  • GET /api/clusters?schemaVersion=1 lists deployments as { "schemaVersion": 1, "deployments": [...], "total": N }.
  • PATCH takes a JSON Merge Patch: send only what changes. Objects merge, lists are replaced whole, and null removes a field.
  • PUT takes a whole body. Fields it leaves out are removed, with these exceptions:
    • config.enterprise and config.server: only the settings it names change.
    • version, componentDefinition, and lifecycle’s state and deletionPolicy: these keep their current values, so leaving them out doesn’t upgrade, start a stopped deployment, or drop DoNotTerminate.
    A PUT of what a read returns changes nothing. That includes a Sentinel left on an older addon release: to bring it to the data nodes’ definition, PATCH spec.componentDefinition. Don’t send backup or an inline password again: both are set at create time only.
  • If-Match takes the metadata.generation you read. When the deployment changed since, the update is refused with 412 instead of overwriting the other change.
  • ?dryRun=true returns what the update would do without doing it.
An update answers with { "schemaVersion": 1, "deployment": {...}, "plan": {...} }. It answers 202 when part of the change is applied after the write: volume growth, and config.enterprise or config.server settings. Those show in status.pendingChanges until they are applied.

Rules an update follows

  • Volumes only grow, and their storage class can’t change.
  • A deployment can’t move between sharded and not sharded, or gain or lose sentinels. A primary with replicas and no sentinels can become a single node and back.
  • The FalkorDB version can’t go back.
  • config.enterprise and config.server change only while the deployment is running. A setting can’t be removed or emptied, only set to a value: to undo a change, set it to its default. null or an empty value answers 422, so an enterprise setting whose default is empty (the LDAP ones) can’t be emptied again once set.
  • Settings and volume growth are applied after the write, and only while the deployment is running: otherwise they answer 409.
  • While earlier settings or volume growth still wait to be applied, another update that queues some answers 409. Retry once they are applied.
  • While a Reconfiguring operation runs, an update that sets one of its settings to another value answers 409; the same value is taken as already on its way.
  • A request that stops the deployment can’t also change settings or grow volumes: that answers 422.
  • config.server can’t set the directives the FalkorDB addon manages: the listening port and TLS, accounts (requirepass, user, …), modules, the data directory, replication and cluster wiring, announced addresses, logfile, and the switches that open MODULE and DEBUG.
  • GET /api/clusters/{name}/config shows credentials set as enterprise settings only to users who may read the deployment’s credentials (clusters:update). Anyone else sees (redacted).
  • A field set outside this API is not overwritten: the update answers 422 naming it. Add ?overwriteUnmanaged=true to replace it.

Errors

A 400 or 422 lists each problem:

Deprecated requests

These requests still work. Their answers carry a Deprecation header (RFC 9745) and a Link to this section, and the Admin Server logs the callers that still use them. Move to the replacement. Restart, switchover, reconfiguring Sentinel (/ops/configure with componentName: falkordb-sent), and reading or deleting OpsRequests are not deprecated: they have no counterpart in the deployment body.
Reading a deployment without ?schemaVersion=1 still returns the earlier shape and is not deprecated.