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=1lists deployments as{ "schemaVersion": 1, "deployments": [...], "total": N }. -
PATCHtakes a JSON Merge Patch: send only what changes. Objects merge, lists are replaced whole, andnullremoves a field. -
PUTtakes a whole body. Fields it leaves out are removed, with these exceptions:config.enterpriseandconfig.server: only the settings it names change.version,componentDefinition, andlifecycle’sstateanddeletionPolicy: these keep their current values, so leaving them out doesn’t upgrade, start a stopped deployment, or dropDoNotTerminate.
PUTof what a read returns changes nothing. That includes a Sentinel left on an older addon release: to bring it to the data nodes’ definition,PATCHspec.componentDefinition. Don’t sendbackupor an inline password again: both are set at create time only. -
If-Matchtakes themetadata.generationyou read. When the deployment changed since, the update is refused with412instead of overwriting the other change. -
?dryRun=truereturns what the update would do without doing it.
{ "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.enterpriseandconfig.serverchange 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.nullor an empty value answers422, 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.servercan’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 openMODULEandDEBUG.GET /api/clusters/{name}/configshows 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
422naming it. Add?overwriteUnmanaged=trueto replace it.
Errors
A400 or 422 lists each problem:
Deprecated requests
These requests still work. Their answers carry aDeprecation 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.