title: Bootstrap validation requests

summary: Boostrap validation requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [POST](#post-bootstrap-validate) | `/v1/bootstrap/validate/{action}` | Perform bootstrap validation |

title: Bootstrap validation {#post-bootstrap-validate}

text:
POST /v1/bootstrap/validate/{action}

Perform bootstrap validation.

Unlike actual bootstrapping, this request blocks and immediately
returns with a response.

title: Request {#post-request}

text:
#### Example HTTP request

    POST /v1/bootstrap/validate/join_cluster

#### Request body

The request must contain a [bootstrap configuration object](), similar to the one used for actual bootstrapping.

title: Response {#post-response}

text:
If an error occurs, the call returns a `bootstrap_status` JSON object that contains the following fields:

| Field | Description |
|-------|-------------|
| state | Current bootstrap state.

`idle`: No bootstrapping started.

`initiated`: Bootstrap request received.

`creating_cluster`: In the process of creating a new cluster.

`joining_cluster`: In the process of joining an existing cluster.

`error`: The last bootstrap action failed.

`completed`: The last bootstrap action completed successfully.|
| start_time | Bootstrap process start time |
| end_time | Bootstrap process end time |
| error_code | If state is `error`, this error code describes the type of error encountered. |
| error_details | An error-specific object that may contain additional information about the error. A common field in use is `message` which provides a more verbose error message.

title: Status codes {#post-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | No error, validation was successful. |
| [406 Not Acceptable](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.7) | Validation failed, bootstrap status is returned as body. |


title: Cluster actions requests

summary: Cluster action requests

page_type: content

title: Overview

role: overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-all-cluster-actions) | `/v1/cluster/actions` | Get the status of all actions  |
| [GET](#get-cluster-action) | `/v1/cluster/actions/{action}` | Get the status of a specific action |
| [POST](#post-cluster-action) | `/v1/cluster/actions/{action}` | Initiate a cluster-wide action |
| [DELETE](#delete-cluster-action) | `/v1/cluster/actions/{action}` | Cancel action or remove action status |

title: Get all cluster actions {#get-all-cluster-actions}

role: content

text:
GET /v1/cluster/actions

Get the status of all currently executing, queued, or completed cluster actions.

#### Required permissions

| Permission name |
|-----------------|
| [view_status_of_cluster_action]() |

title: Request {#get-all-request}

title: Response {#get-all-response}

role: returns

text:
Returns a JSON array of [action objects]().

#### Example JSON body

[code example]

title: Status codes {#get-all-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error, response provides info about an ongoing action. |
| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Action does not exist (i.e. not currently running and no available status of last run). |

title: Get cluster action {#get-cluster-action}

text:
GET /v1/cluster/actions/{action}

Get the status of a currently executing, queued, or completed cluster action.

#### Required permissions

| Permission name |
|-----------------|
| [view_status_of_cluster_action]() |

title: Request {#get-request}

text:
#### Example HTTP request

    GET /v1/cluster/actions/action_name

#### URL parameters

| Field | Type | Description |
|-------|------|-------------|
| action | string | The action to check. |

title: Response {#get-response}

text:
Returns an [action object]().

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}

title: Initiate cluster-wide action {#post-cluster-action}

text:
POST /v1/cluster/actions/{action}

Initiate a cluster-wide action.

The API allows only a single instance of any action type to be
invoked at the same time, and violations of this requirement will
result in a `409 CONFLICT` response.

The caller is expected to query and process the results of the
previously executed instance of the same action, which will be
removed as soon as the new one is submitted.

#### Required permissions

| Permission name |
|-----------------|
| [start_cluster_action]() |

title: Request {#post-request}

text:
#### Example HTTP request

    POST /v1/cluster/actions/action_name

#### URL parameters

| Field | Type | Description |
|-------|------|-------------|
| action | string | The name of the action required. |

Supported cluster actions:

- `change_master`: Promotes a specified node to become the primary node of the cluster, which coordinates cluster-wide operations. Include the `node_uid` of the node you want to promote in the request body.

    [code example]

title: Response {#post-response}

text: The body content may provide additional action details. Currently, it is not used.

title: Status codes {#post-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error, action was initiated. |
| [400 Bad Request](https://www.rfc-editor.org/rfc/rfc9110.html#name-400-bad-request) | Bad action or content provided. |
| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Node does not exist. |
| [406 Not Acceptable](https://www.rfc-editor.org/rfc/rfc9110.html#name-406-not-acceptable) | Node not bootstrapped. |
| [409 Conflict](https://www.rfc-editor.org/rfc/rfc9110.html#name-409-conflict) | A conflicting action is already in progress. |

title: Cancel action {#delete-cluster-action}

text:
DELETE /v1/cluster/actions/{action}

Cancel a queued or executing cluster action, or remove the status of
a previously executed and completed action.

#### Required permissions

| Permission name |
|-----------------|
| [cancel_cluster_action]() |

title: Request {#delete-request}

text:
#### Example HTTP request

    DELETE /v1/cluster/actions/action_name

#### URL parameters

| Field | Type | Description |
|-------|------|-------------|
| action | string | The name of the action to cancel, currently no actions are supported. |

title: Response {#delete-response}

text: Returns a status code.

title: Status codes {#delete-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | Action will be cancelled when possible. |
| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Action unknown or not currently running. |

status: queued

section_id: response-get-all-response

section_id: response-get-response

code:
POST /v1/cluster/actions/change_master
    {
        "node_uid": "2"
    }

section_id: request-post-request


title: Cluster alerts requests

summary: Cluster alert requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-all-alerts) | `/v1/cluster/alerts` | Get all cluster alerts |
| [GET](#get-alert) | `/v1/cluster/alerts/{alert}` | Get a specific cluster alert |

title: Get all cluster alerts {#get-all-alerts}

text:
GET /v1/cluster/alerts

Get all alert states for the cluster object.

#### Required permissions

| Permission name |
|-----------------|
| [view_cluster_alerts]() |

title: Request {#get-all-request}

text:
#### Example HTTP request

	GET /v1/cluster/alerts

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| ignore_settings | boolean | Retrieve updated alert state regardless of the cluster’s alert_settings. When not present, a disabled alert will always be retrieved as disabled with a false state. (optional) |

title: Response {#get-all-response}

text:
Returns a hash of [alert objects]() and their states.

#### Example JSON body

[code example]

title: Status codes {#get-all-status-codes}

title: Get cluster alert {#get-alert}

text:
GET /v1/cluster/alerts/{alert}

Get a cluster alert state.

#### Required permissions

| Permission name |
|-----------------|
| [view_cluster_alerts]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/cluster/alerts/cluster_too_few_nodes_for_replication

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| ignore_settings | boolean | Retrieve updated alert state regardless of the cluster’s alert_settings. When not present, a disabled alert will always be retrieved as disabled with a false state. (optional) |

title: Response {#get-response}

text:
Returns an [alert object]().

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | No error |
| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Specified alert does not exist |

code:
{
    "cluster_too_few_nodes_for_replication": {
        "change_time": "2014-12-22T11:48:00Z",
        "change_value": {
            "state": false
        },
       "enabled": true,
       "state": "off",
       "severity": "WARNING",
    },
    "..."
}


title: Auditing database connections requests

summary: Auditing database connections requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cluster-audit-db-conns) | `/v1/cluster/auditing/db_conns` | Get database connection auditing settings |
| [PUT](#put-cluster-audit-db-conns) | `/v1/cluster/auditing/db_conns` | Update database connection auditing settings |
| [DELETE](#delete-cluster-audit-db-conns) | `/v1/cluster/auditing/db_conns` | Delete database connection auditing settings |

title: Get database auditing settings {#get-cluster-audit-db-conns}

text:
GET /v1/cluster/auditing/db_conns

Gets the configuration settings for [auditing database connections]().

#### Required permissions

| Permission name |
|-----------------|
| [view_cluster_info]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/cluster/auditing/db_conns

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#get-response}

text:
Returns a [database connection auditing configuration object]().

#### Example JSON body

[code example]

title: Error codes {#get-error-codes}

role: errors

text:
When errors are reported, the server may return a JSON object with `error_code` and `message` fields that provide additional information. The following are possible `error_code` values:

| Code | Description |
|------|-------------|
| db_conns_auditing_unsupported_by_capability | Not all nodes support DB Connections Auditing capability  |

title: Status codes {#get-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | Success |
| [406 Not Acceptable](https://www.rfc-editor.org/rfc/rfc9110.html#name-406-not-acceptable) | Feature not supported for all nodes |

title: Update database auditing {#put-cluster-audit-db-conns}

text:
PUT /v1/cluster/auditing/db_conns

Updates the configuration settings for [auditing database connections]().

#### Required permissions

| Permission name |
|-----------------|
| [update_cluster]() |

title: Request {#put-request}

text:
#### Example HTTP request

	PUT /v1/cluster/auditing/db_conns

#### Example JSON body

[code example]

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Request body

Include a [database connection auditing configuration object]() with updated fields in the request body.

title: Response {#put-response}

text:
Returns the updated [database connection auditing configuration object]().

#### Example JSON body

[code example]

title: Error codes {#put-error-codes}

title: Status codes {#put-status-codes}

title: Delete database auditing settings {#delete-cluster-audit-db-conns}

text:
DELETE /v1/cluster/auditing/db_conns

Resets the configuration settings for [auditing database connections]().

#### Required permissions

| Permission name |
|-----------------|
| [update_cluster]() |

title: Request {#delete-request}

text:
#### Example HTTP request

	DELETE /v1/cluster/auditing/db_conns

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#delete-response}

text: Returns a status code that indicates whether the database connection auditing settings reset successfully or failed to reset.

title: Error codes {#delete-error-codes}

text:
When errors are reported, the server may return a JSON object with `error_code` and `message` fields that provide additional information. The following are possible `error_code` values:

| Code | Description |
|------|-------------|
| db_conns_audit_config_not_found | Unable to find the auditing configuration |
| cannot_delete_audit_config_when_policy_enabled | Auditing cluster policy is 'enabled' when trying to delete the auditing configuration |
| cannot_delete_audit_config_when_bdb_enabled | One of the databases has auditing configuration 'enabled' when trying to delete the auditing configuration |

title: Status codes {#delete-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | Success |
| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Configuration not found |
| [406 Not Acceptable](https://www.rfc-editor.org/rfc/rfc9110.html#name-406-not-acceptable) | Feature not supported for all nodes |

audit_protocol: TCP

section_id: request-put-request

section_id: response-put-response


title: Cluster certificates requests

summary: Cluster certificates requests

summary: Rotate cluster certificates requests

title: Rotate cluster certificates requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cluster-certificates) | `/v1/cluster/certificates` | Get cluster certificates |
| [PUT](#put-cluster-certificates) | `/v1/cluster/certificates` | Update cluster certificates |
| [PUT](#put-cluster-update_cert) | `/v1/cluster/update_cert` | Update a cluster certificate (deprecated as of Redis Software version 7.22.2) |
| [DELETE](#delete-cluster-certificate) | `/v1/cluster/certificates/{certificate_name}` | Delete cluster certificate |

title: Get cluster certificates {#get-cluster-certificates}

text:
GET /v1/cluster/certificates

Get the cluster's certificates.

#### Required permissions

| Permission name |
|-----------------|
| [view_cluster_info]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/cluster/certificates

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#get-response}

text:
Returns a JSON object that contains the cluster's certificates and keys.

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}

title: Update cluster certificates {#put-cluster-certificates}

text:
[code example]

Replaces multiple cluster certificates with the provided certificates on all nodes within the cluster. This endpoint validates all provided certificates before actually updating the cluster.

See the [certificates table]() for the list of cluster certificates and their descriptions.

title: Request {#put-certificates-request}

text:
#### Example HTTP request

[code example]

#### Example JSON body

[code example]

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Request body

Include an array of [certificate objects]() in the request body.

title: Response {#put-certificates-response}

text:
Returns a `200 OK` status code if all certificates are successfully replaced across the entire cluster.

If the response returns a failed status code, you should retry updating the certificates in case the cluster is no longer in an optimal state.

title: Status codes {#put-certificates-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error |
| [400 Bad Request](https://www.rfc-editor.org/rfc/rfc9110.html#name-400-bad-request) | Failed, invalid certificate(s) |
| [403 Forbidden](https://www.rfc-editor.org/rfc/rfc9110.html#name-403-forbidden) | Failed, unknown certificate(s) |
| [406 Not Acceptable](https://www.rfc-editor.org/rfc/rfc9110.html#name-406-not-acceptable) | Failed, expired certificate(s) |
| [409 Conflict](https://www.rfc-editor.org/rfc/rfc9110.html#name-409-conflict) | Failed, not all nodes have been updated |

title: Update cluster certificate {#put-cluster-update_cert}

text:
[code example]

This REST API path is deprecated as of Redis Software 7.22.2 and will be removed in a future version. Use [`PUT /v1/cluster/certificates`](#put-cluster-certificates) instead.

Replaces an existing certificate on all nodes within the cluster with a new certificate. The new certificate must pass validation before it can replace the old certificate.

See the [certificates table]() for the list of cluster certificates and their descriptions.

title: Request {#put-request}

text:
#### Example HTTP request

[code example]

#### Example JSON body

[code example]

Replace `[key_content]` with the content of the private key and `[cert_content]` with the content of the certificate.

title: Response {#put-response}

text:
Responds with the `200 OK` status code if the certificate replacement succeeds across the entire cluster.

Otherwise, retry the certificate update in case the failure was due to a temporary issue in the cluster.

title: Status codes {#put-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error |
| [400 Bad Request](https://www.rfc-editor.org/rfc/rfc9110.html#name-400-bad-request) | Failed, invalid certificate. |
| [403 Forbidden](https://www.rfc-editor.org/rfc/rfc9110.html#name-403-forbidden) | Failed, unknown certificate. |
| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Failed, invalid certificate. |
| [406 Not Acceptable](https://www.rfc-editor.org/rfc/rfc9110.html#name-406-not-acceptable) | Failed, expired certificate. |
| [409 Conflict](https://www.rfc-editor.org/rfc/rfc9110.html#name-409-conflict) | Failed, not all nodes have been updated. |

title: Delete cluster certificate {#delete-cluster-certificate}

text:
DELETE /v1/cluster/certificates/{string: certificate_name}

Removes the specified cluster certificate from both CCS and disk
across all nodes. Only optional certificates can be deleted through
this endpoint. See the [certificates table]() for the list of cluster certificates and their descriptions.

title: Request {#delete-request}

text:
#### Example HTTP request

	DELETE /v1/cluster/certificates/<certificate_name>

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#delete-response}

text: Returns a status code that indicates the certificate deletion success or failure.

title: Status codes {#delete-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | Operation successful |
| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Failed, requested deletion of an unknown certificate |
| [403 Forbidden](https://www.rfc-editor.org/rfc/rfc9110.html#name-403-forbidden) | Failed, requested deletion of a required certificate |
| [500 Internal Server Error](https://www.rfc-editor.org/rfc/rfc9110.html#name-500-internal-server-error) | Failed, error while deleting certificate from disk |

code:
{
    "api_cert": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----",
    "api_key": "-----BEGIN RSA PRIVATE KEY-----...-----END RSA PRIVATE KEY-----"
    "// additional certificates..."
}

code: PUT /v1/cluster/certificates

section_id: request-put-certificates-request

proxy

certificate:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

key:
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

code: PUT /v1/cluster/update_cert

code:
{
    "name": "certificate1",
    "key": "-----BEGIN RSA PRIVATE KEY-----\n[key_content]\n-----END RSA PRIVATE KEY-----",
    "certificate": "-----BEGIN CERTIFICATE-----\n[cert_content]\n-----END CERTIFICATE-----",
}


title: Rotate cluster certificates requests

summary: Rotate cluster certificates requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [POST](#post-cluster-certificates-rotate) | `/v1/cluster/certificates/rotate` | Regenerate all internal cluster certificates |

title: Rotate cluster certificates {#post-cluster-certificates-rotate}

text:
POST /v1/cluster/certificates/rotate

Regenerates all _internal_ cluster certificates.

The certificate rotation will be performed on all nodes within the cluster. If
"name" is provided, only rotate the specified certificate on all nodes within the cluster.

title: Request {#post-request}

text:
#### Example HTTP request

	POST /v1/cluster/certificates/rotate

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#post-response}

text: Responds with a `200 OK` status code if the internal certificates successfully rotate across the entire cluster.

title: Status codes {#post-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | No error |
| [400 Bad Request](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) | Failed, not all nodes have been updated. |
| [403 Forbidden](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4) | Unsupported internal certificate rotation. |


title: Change password hashing algorithm requests

summary: REST API requests to change the hashing algorithm for user passwords.

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [PATCH](#patch-change-password-hashing-algorithm) | `/v1/cluster/change_password_hashing_algorithm` | Change the hashing policy for user passwords |

title: Change password hashing algorithm {#patch-change-password-hashing-algorithm}

text:
PATCH /v1/cluster/change_password_hashing_algorithm

Changes the password hashing algorithm for the entire cluster. When you change the hashing algorithm, it rehashes the administrator password and passwords for all users, including default users.

The hashing algorithm options are `SHA-256` or `PBKDF2`. The default hashing algorithm is `SHA-256`.

#### Required permissions

| Permission name |
|-----------------|
| [update_cluster]() |

title: Request {#patch-request}

text:
#### Example HTTP request

	PATCH /v1/cluster/change_password_hashing_algorithm

#### Example JSON body

[code example]

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Request body

Include a JSON object `{ "algorithm": "<option>" }` in the request body. The hashing algorithm options are `SHA-256` or `PBKDF2`.

title: Response {#patch-response}

text: Returns a status code that indicates the success or failure of the update.

title: Status codes {#patch-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | Success |
| [400 Bad Request](https://www.rfc-editor.org/rfc/rfc9110.html#name-400-bad-request) | Supported algorithm must be provided, or this algorithm is already set |

section_id: request-patch-request


title: Check all cluster nodes requests

summary: Requests that run checks on all cluster nodes.

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cluster-check) | `/v1/cluster/check` | Runs checks on all cluster nodes |

title: Check all nodes {#get-cluster-check}

text:
GET /v1/cluster/check

Runs the following checks on all cluster nodes:

| Check name | Description |
|-----------|-------------|
| bootstrap_status | Verifies the local node's bootstrap process completed without errors. |
| services | Verifies all Redis Software services are running. |
| port_range | Verifies the [`ip_local_port_range`](https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html) doesn't conflict with the ports Redis Software might assign to shards. |
| pidfiles | Verifies all active local shards have PID files. |
| capabilities | Verifies all binaries have the proper capability bits. |
| existing_sockets | Verifies sockets exist for all processes that require them. |
| host_settings | Verifies the following:
• Linux `overcommit_memory` setting is 1.
• `transparent_hugepage` is disabled.
• Socket maximum connections setting `somaxconn` is 1024. |
| tcp_connectivity | Verifies this node can connect to all other alive nodes. |

#### Required permissions

| Permission name |
|-----------------|
| [view_all_nodes_checks]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/cluster/check

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#get-response}

text:
Returns a JSON array with results from all nodes.

When errors occur, the server returns a JSON object with `result: false` and an `error` field that provides additional information for each node that had an error. If an error occurs during a check, the `error` field only includes a message for the first check that fails on each node.

Possible `error` messages:

- "bootstrap request to cnm_http failed,resp_code: ...,resp_content: ..."
- "process ... is not running or not responding (...)"
- "could not communicate with 'supervisorctl': ..."
- "connectivity check failed retrieving ports for testing"

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error |

error: process alert_mgr is not running or not responding ([Errno 111] Connection refused)


title: Cluster debug info requests

summary: Documents the Redis Software REST API /cluster/debuginfo requests.

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cluster-debuginfo) | `/v1/cluster/debuginfo` | Get debug info from all nodes and databases |

title: Get cluster debug info {#get-cluster-debuginfo}

text:
GET /v1/cluster/debuginfo

Downloads a tar file that contains debug info from all nodes and databases.

#### Required permissions

| Permission name |
|-----------------|
| [view_debugging_info]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/cluster/debuginfo

title: Response {#get-response}

text:
Downloads the debug info in a tar file called `filename.tar.gz`. Extract the files from the tar file to access the debug info for all nodes.

#### Response headers

| Key | Value | Description |
|-----|-------|-------------|
| Content-Type | application/x-gzip | Media type of request/response body |
| Content-Length | 653350 | Length of the response body in octets |
| Content-Disposition | attachment; filename=debuginfo.tar.gz | Display response in browser or download as attachment |

title: Status codes {#get-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Success. |
| [500 Internal Server Error](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) | Failed to get debug info. |


title: Cluster requests

summary: Cluster settings requests

summary: Cluster action requests

title: Cluster actions requests

summary: Cluster alert requests

title: Cluster alerts requests

summary: Auditing database connections requests

title: Auditing database connections requests

summary: Cluster certificates requests

title: Cluster certificates requests

title: Check all cluster nodes requests

title: Cluster debug info requests

summary: LDAP configuration requests

title: Cluster LDAP requests

summary: Redis module capabilities requests

title: Cluster module capabilities requests

summary: Cluster policy requests

title: Cluster policy requests

summary: Cluster services configuration requests

title: Cluster services configuration requests

summary: Single sign-on (SSO) configuration requests

title: Single sign-on requests

summary: Cluster statistics requests

title: Cluster stats requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cluster) | `/v1/cluster` | Get cluster info |
| [PUT](#put-cluster) | `/v1/cluster` | Update cluster settings |

title: Get cluster info {#get-cluster}

text:
GET /v1/cluster

Get cluster info.

#### Required permissions

| Permission name |
|-----------------|
| [view_cluster_info]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/cluster

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#get-response}

text:
Returns a [cluster object]().

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | No error |

title: Update cluster settings {#put-cluster}

text:
PUT /v1/cluster

Update cluster settings.

If called with the `dry_run` URL query string, the function will
validate the [cluster object](), but will not apply the requested
changes.

#### Required permissions

| Permission name |
|-----------------|
| [update_cluster]() |

title: Request {#put-request}

text:
#### Example HTTP request

	PUT /v1/cluster

#### Example JSON body

[code example]

The above request will enable email alerts and alert reporting for node failures and node removals.

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### URL parameters

| Field | Type | Description |
|-------|------|-------------|
| dry_run | string | Validate but don't apply the new cluster settings |

#### Request body

Include a [cluster object]() with updated fields in the request body.

title: Response {#put-response}

text:
#### Example JSON body

[code example]

title: Error codes {#put-error-codes}

text:
When errors are reported, the server may return a JSON object with `error_code` and `message` field that provide additional information. The following are possible `error_code` values:

| Code | Description |
|------|-------------|
| bad_nginx_conf | • Designated port is already bound.

• nginx configuration is illegal. |
| bad_debuginfo_path | • Debuginfo path doesn't exist.

• Debuginfo path is inaccessible. |
| config_edit_conflict | Cluster config was edited by another source simultaneously. |

title: Status codes {#put-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | No error. |
| [400 Bad Request](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) | Bad content provided. |

code:
{
   "name": "my-rlec-cluster",
   "alert_settings": { "..." },
   "created_time": "2015-04-29T09:09:25Z",
   "email_alerts": false,
   "email_from": "",
   "rack_aware": false,
   "smtp_host": "",
   "smtp_password": "",
   "smtp_port": 25,
   "smtp_tls_mode": "none",
   "smtp_username": ""
}

code:
{
    "name": "mycluster.mydomain.com",
    "email_alerts": true,
    "alert_settings": {
        "node_failed": true,
        "node_memory": {
            "enabled": true,
            "threshold": "80"
        }
    },
    "// additional fields..."
}


title: Cluster LDAP requests

summary: LDAP configuration requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cluster-ldap) | `/v1/cluster/ldap` | Get LDAP configuration |
| [PUT](#put-cluster-ldap) | `/v1/cluster/ldap` | Set/update LDAP configuration |
| [DELETE](#delete-cluster-ldap) | `/v1/cluster/ldap` | Delete LDAP configuration |

title: Get LDAP configuration {#get-cluster-ldap}

text:
GET /v1/cluster/ldap

Get the LDAP configuration.

#### Required permissions

| Permission name |
|-----------------|
| [view_ldap_config]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/cluster/ldap

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#get-response}

text:
Returns an [LDAP object]().

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Success |

title: Update LDAP configuration {#put-cluster-ldap}

text:
PUT /v1/cluster/ldap

Set or update the cluster LDAP configuration.

#### Required permissions

| Permission name |
|-----------------|
| [config_ldap]() |

title: Request {#put-request}

text:
#### Example HTTP request

	POST /v1/cluster/ldap

#### Example JSON body

[code example]

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Request body

Include an [LDAP object]() with updated fields in the request body.

title: Response {#put-response}

text: Returns a status code. If an error occurs, the response body may include an error code and message with more details.

title: Error codes {#put-error-codes}

text:
Possible `error_code` values:

| Code | Description |
|------|-------------|
| illegal_fields_combination | An unacceptable combination of fields was specified for the configuration object (e.g.: two mutually-exclusive fields), or a required field is missing.|

title: Status codes {#put-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Success, LDAP config has been set. |
| [400 Bad Request](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) | Bad or missing configuration parameters. |

title: Delete LDAP configuration {#delete-cluster-ldap}

text:
DELETE /v1/cluster/ldap

Clear the LDAP configuration.

#### Required permissions

| Permission name |
|-----------------|
| [config_ldap]() |

title: Request {#delete-request}

text:
#### Example HTTP request

	DELETE /v1/cluster/ldap

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#delete-response}

text: Returns a status code.

title: Status codes {#delete-status-codes}

dn_group_attr: MemberOf

base: DC=windowsAD,DC=qa,DC=redislabs,DC=com

filter: member=%D

scope: subtree

filter: (&(objectClass=Person)(cn=%u))

user_dn_template: cn=%u, ou=users,dc=example,dc=org

bind_pass: secret

user_dn_template: cn=%u,dc=example,dc=org


title: Cluster module capabilities requests

summary: Redis module capabilities requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cluster-module-capabilities) | `/v1/cluster/module-capabilities` | List possible Redis module capabilities |

title: List Redis module capabilities {#get-cluster-module-capabilities}

text:
GET /v1/cluster/module-capabilities

List possible Redis module capabilities.

#### Required permissions

| Permission name |
|-----------------|
| [view_cluster_modules]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/cluster/module-capabilities

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | \*/\* | Accepted media type |

title: Response {#get-response}

text:
Returns a JSON object that contains a list of capability names and descriptions.

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | No error |

code:
{
  "all_capabilities": [
    {"name": "types", "desc": "module has its own types and not only operate on existing redis types"},
    {"name": "no_multi_key", "desc": "module has no methods that operate on multiple keys"}
    "// additional capabilities..."
  ]
}


title: Cluster policy requests

summary: Cluster policy requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cluster-policy) | `/v1/cluster/policy` | Get cluster policy settings |
| [PUT](#put-cluster-policy) | `/v1/cluster/policy` | Update cluster policy settings |

title: Get cluster policy {#get-cluster-policy}

text:
GET /v1/cluster/policy

Gets the cluster's current policy settings.

#### Required permissions

| Permission name |
|-----------------|
| [view_cluster_info]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/cluster/policy

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#get-response}

text:
Returns a [cluster settings object]().

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}

title: Update cluster policy {#put-cluster-policy}

text:
PUT /v1/cluster/policy

Update cluster policy settings.

#### Required permissions

| Permission name |
|-----------------|
| [update_cluster]() |

title: Request {#put-request}

text:
#### Example HTTP request

	PUT /v1/cluster/policy

#### Example JSON body

[code example]

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Request body

Include a [cluster settings object]() with updated fields in the request body.

title: Response {#put-response}

text: Returns a status code that indicates the success or failure of the cluster settings update.

title: Status codes {#put-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | Success |
| [400 Bad Request](https://www.rfc-editor.org/rfc/rfc9110.html#name-400-bad-request) | Failed to set parameters |

code:
{
    "db_conns_auditing": false,
    "default_non_sharded_proxy_policy": "single",
    "default_provisioned_redis_version": "6.0",
    "default_sharded_proxy_policy": "single",
    "default_shards_placement": "dense",
    "redis_upgrade_policy": "major",
    "// additional fields..."
}

default_shards_placement: sparse

default_sharded_proxy_policy: all-nodes


title: Cluster services configuration requests

summary: Cluster services configuration requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cluster-services_config) | `/v1/cluster/services_configuration` | Get cluster services settings |
| [PUT](#put-cluster-services_config) | `/v1/cluster/services_configuration` | Update cluster services settings |

title: Get cluster services configuration {#get-cluster-services_config}

text:
GET /v1/cluster/services_configuration

Get cluster services settings.

#### Required permissions

| Permission name |
|-----------------|
| [view_cluster_info]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/cluster/services_configuration

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#get-response}

text:
Returns a [services configuration object]().

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}

title: Update cluster services configuration {#put-cluster-services_config}

text:
PUT /v1/cluster/services_configuration

Update the cluster services settings.

#### Required permissions

| Permission name |
|-----------------|
| [update_cluster]() |

title: Request {#put-request}

text:
#### Example HTTP request

	PUT /v1/cluster/services_configuration

#### Example JSON body

[code example]

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Request body

Include a [services configuration object]() with updated fields in the request body.

title: Response {#put-response}

text:
Returns the updated [services configuration object]().

#### Example JSON body

[code example]

title: Status codes {#put-status-codes}

code:
{
     "cm_server": {
         "operating_mode": "disabled"
     },
     "mdns_server": {
         "operating_mode": "enabled"
     },
     "// additional services..."
}

code:
{
     "cm_server": {
         "operating_mode": "disabled"
     },
     "// additional services..."
}


title: Single sign-on requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cluster-sso) | `/v1/cluster/sso` | Get SSO configuration |
| [PUT](#put-cluster-sso) | `/v1/cluster/sso` | Set or update SSO configuration |
| [DELETE](#delete-cluster-sso) | `/v1/cluster/sso` | Clear SSO configuration |
| [GET](#get-cluster-sso-saml-metadata) | `/v1/cluster/sso/saml/metadata/sp` | Get SAML service provider metadata |
| [POST](#post-cluster-sso-saml-metadata) | `/v1/cluster/sso/saml/metadata/idp` | Upload SAML identity provider metadata |

title: Get SSO configuration {#get-cluster-sso}

text:
GET /v1/cluster/sso

Get the single sign-on configuration as JSON.

#### Required permissions

| Permission name | Roles |
|-----------------|-------|
| [view_sso]() | admin<br />user_manager |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/cluster/sso

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#get-response}

text:
Returns an [SSO object]().

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}

title: Update SSO configuration {#put-cluster-sso}

text:
PUT /v1/cluster/sso

Set or update the cluster single sign-on configuration.

#### Required permissions

| Permission name | Roles |
|-----------------|-------|
| [config_sso]() | admin<br />user_manager |

title: Request {#put-request}

text:
#### Example HTTP request

	PUT /v1/cluster/sso

#### Example JSON body

[code example]

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Request body

Include an [SSO object]() with updated fields in the request body.

title: Response {#put-response}

text: Returns a status code. If an error occurs, the response body can include an error code and message with more details.

title: Error codes {#put-error-codes}

text:
Possible `error_code` values:

| Code | Description |
|------|-------------|
| missing_param | A required parameter is missing while SSO is being enabled |
| missing_certificate | SSO certificate is not found while SSO is being enabled |

title: Status codes {#put-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | Success, SSO config has been set |
| [400 Bad Request](https://www.rfc-editor.org/rfc/rfc9110.html#name-400-bad-request) | Bad or missing configuration parameters |
| [406 Not Acceptable](https://www.rfc-editor.org/rfc/rfc9110.html#name-406-not-acceptable) | Missing required certificate |

title: Delete SSO configuration {#delete-cluster-sso}

text:
DELETE /v1/cluster/sso

Clear the single sign-on configuration.

#### Required permissions

| Permission name | Roles |
|-----------------|-------|
| [config_sso]() | admin<br />user_manager |

title: Request {#delete-request}

text:
#### Example HTTP request

	DELETE /v1/cluster/sso

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#delete-response}

text: Returns a status code.

title: Error codes {#delete-error-codes}

text:
Possible `error_code` values:

| Code | Description |
|------|-------------|
| delete_certificate_error | An error occurred during SSO certificate deletion |

title: Status codes {#delete-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | Success |
| [500 Internal Server Error](https://www.rfc-editor.org/rfc/rfc9110.html#name-500-internal-server-error) | Error during deletion |

title: Get SAML service provider metadata {#get-cluster-sso-saml-metadata}

text:
GET /v1/cluster/sso/saml/metadata/sp

Generates and returns the SAML2 service provider metadata XML.

#### Required permissions

| Permission name | Roles |
|-----------------|-------|
| [view_sso]() | admin<br />user_manager |

title: Request {#get-metadata-request}

text:
#### Example HTTP request

	GET /v1/cluster/sso/saml/metadata/sp

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/samlmetadata+xml | Accepted media type |

title: Response {#get-metadata-response}

text:
Returns SAML2 service provider metadata as XML.

#### Example response body

[code example]

title: Error codes {#get-metadata-error-codes}

text:
Possible `error_code` values:

| Code | Description |
|------|-------------|
| missing_certificate | Service certificate is missing |
| saml_metadata_generation_error | An error occurred while generating the XML metadata |

title: Status codes {#get-metadata-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | Success |
| [406 Not Acceptable](https://www.rfc-editor.org/rfc/rfc9110.html#name-406-not-acceptable) | Missing required service certificate |
| [500 Internal Server Error](https://www.rfc-editor.org/rfc/rfc9110.html#name-500-internal-server-error) | Unexpected error when generating metadata |

title: Upload SAML identity provider metadata {#post-cluster-sso-saml-metadata}

text:
POST /v1/cluster/sso/saml/metadata/idp

Uploads and validates the SAML2 identity provider metadata XML.

#### Required permissions

| Permission name | Roles |
|-----------------|-------|
| [config_sso]() | admin<br />user_manager |

title: Request {#post-metadata-request}

text:
#### Example HTTP request

	POST /v1/cluster/sso/saml/metadata/idp

#### Example JSON body

[code example]

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Request body

| Name | Type/Value | Description |
|------|------------|-------------|
| idp_metadata | string | Base64-encoded SAML2 identity provider metadata XML |

title: Response {#post-metadata-response}

text:
Returns an [SSO object]() with the updated configuration.

#### Example JSON body

[code example]

title: Error codes {#post-metadata-error-codes}

text:
Possible `error_code` values:

| Code | Description |
|------|-------------|
| saml_metadata_validation_error | IdP metadata failed configuration validation checks |
| saml_metadata_parsing_error | IdP metadata is not a valid base64-encoded XML |
| missing_certificate | SSO certificate is not found while SSO is being enabled |

title: Status codes {#post-metadata-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | Success |
| [400 Bad Request](https://www.rfc-editor.org/rfc/rfc9110.html#name-400-bad-request) | Bad or missing parameters |
| [406 Not Acceptable](https://www.rfc-editor.org/rfc/rfc9110.html#name-406-not-acceptable) | Missing required service certificate |

metadata: <base64 encoded metadata>

code:
<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor
xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
    ...
</md:EntityDescriptor>

section_id: response-get-metadata-response

section_id: request-post-metadata-request

section_id: response-post-metadata-response


title: Cluster stats requests

summary: Cluster statistics requests

summary: Most recent cluster statistics requests

title: Cluster last stats requests

title: Overview

text:
The v1 statistics REST API endpoints are deprecated as of Redis Software version 7.22. Use the [metrics stream engine for monitoring v2]() instead for real-time monitoring and metrics collection.

| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cluster-stats) | `/v1/cluster/stats` | Get cluster stats |

title: Get cluster stats {#get-cluster-stats}

text:
[code example]

Get cluster statistics.

title: Permissions

role: security

text:
| Permission name | Roles |
|-----------------|-------|
| [view_cluster_stats]() | admin
cluster_member
cluster_viewer
db_member
db_viewer
user_manager |

title: Request {#get-request}

text:
#### Example HTTP request

[code example]

#### Headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| interval | string | Time interval for which we want stats: 1sec/10sec/5min/15min/1hour/12hour/1week (optional) |
| stime | ISO_8601 | Start time from which we want the stats. Should comply with the [ISO_8601](https://en.wikipedia.org/wiki/ISO_8601) format (optional) |
| etime | ISO_8601 | End time after which we don't want the stats. Should comply with the [ISO_8601](https://en.wikipedia.org/wiki/ISO_8601) format (optional) |

title: Response {#get-response}

text:
Returns [statistics]() for the cluster.

#### Example JSON body

[code example]

title: Example requests

role: example

text:
#### cURL

[code example]

#### Python

[code example]

title: Status codes {#get-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | No error |
| [500 Internal Server Error](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) | Internal server error |

code: GET /v1/cluster/stats

section_id: get-cluster-stats-get-cluster-stats

section_id: request-get-request

code:
$ curl -k -u "[username]:[password]" -X GET
        https://[host][:port]/v1/cluster/stats?interval=1hour

section_id: example-requests

code:
import requests

url = "https://[host][:port]/v1/cluster/stats?interval=1hour"
auth = ("[username]", "[password]")

response = requests.request("GET", url, auth=auth)

print(response.text)


title: Cluster last stats requests

summary: Most recent cluster statistics requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cluster-stats-last) | `/v1/cluster/stats/last` | Get most recent cluster stats |

title: Get latest cluster stats {#get-cluster-stats-last}

text:
GET /v1/cluster/stats/last

Get the most recent cluster statistics.

#### Required permissions

| Permission name |
|-----------------|
| [view_cluster_stats]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/cluster/stats/last?interval=1sec&stime=2015-10-14T06:44:00Z

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| interval | string | Time interval for which we want stats: 1sec/10sec/5min/15min/1hour/12hour/1week. Default: 1sec. (optional) |
| stime | ISO_8601 | Start time from which we want the stats. Should comply with the [ISO_8601](https://en.wikipedia.org/wiki/ISO_8601) format (optional) |
| etime | ISO_8601 | End time after which we don't want the stats. Should comply with the [ISO_8601](https://en.wikipedia.org/wiki/ISO_8601) format (optional) |

title: Response {#get-response}

text:
Returns the most recent [statistics]() for the cluster.

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}


title: Cluster Manager settings requests

summary: REST API requests for Cluster Manager UI settings

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-cm-settings) | `/v1/cm_settings` | Get Cluster Manager UI settings |
| [PUT](#put-cm-settings) | `/v1/cm_settings` | Update Cluster Manager UI settings |

title: Get CM settings {#get-cm-settings}

text:
[code example]

Get Cluster Manager UI settings.

title: Permissions

text:
| Permission name | Roles |
|-----------------|-------|
| [view_cluster_info]() | admin
cluster_member
cluster_viewer
db_member
db_viewer
user_manager |

title: Request {#get-request}

text:
#### Example HTTP request

[code example]

#### Headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#get-response}

text:
Returns a [cm_settings object]().

#### Example JSON body

[code example]

#### Status codes {#get-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error |

title: Update CM settings {#put-cm-settings}

text:
[code example]

Update Cluster Manager UI settings.

title: Permissions

text:
| Permission name | Roles |
|-----------------|-------|
| [update_cluster]() | admin |

title: Request {#put-request}

text:
#### Example HTTP request

[code example]

#### Example JSON body

[code example]

#### Headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Body

Include a [cm_settings object]() with updated fields in the request body.

title: Response {#put-response}

text:
Returns a [cm_settings object]() with the updated fields.

#### Example JSON body

[code example]

#### Status codes {#put-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | Success, time zone config has been set. |
| [400 Bad Request](https://www.rfc-editor.org/rfc/rfc9110.html#name-400-bad-request) | Bad or missing configuration parameters. |

code: GET /v1/cm_settings

section_id: get-cm-settings-get-cm-settings

timezone: UTC

code: PUT /v1/cm_settings

section_id: update-cm-settings-put-cm-settings

timezone: US/Pacific


title: CRDB tasks requests

summary: Active-Active database task status requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-all-crdb_tasks) | `/v1/crdb_tasks` | Get all running tasks |
| [GET](#get-crdb_task) | `/v1/crdb_tasks/{task_id}` | Get the status of an executed task |
| [POST](#post-crdb_task-cancel) | `/v1/crdb_tasks/{task_id}/actions/cancel` | Cancel a running or queued task |

title: Get all running tasks {#get-all-crdb_tasks}

text:
[code example]

Get all running tasks.

title: Request {#get-all-request}

title: Response {#get-all-response}

text:
Returns a JSON array of [CRDB task objects]().

#### Status codes {#get-all-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | A list of running tasks. |
| [401 Unauthorized](https://www.rfc-editor.org/rfc/rfc9110.html#name-401-unauthorized) | Unauthorized request. Invalid credentials. |

title: Get task status {#get-crdb_task}

text:
GET /v1/crdb_tasks/{task_id}

Get the status of an executed task.

The status of a completed task is kept for 500 seconds by default.

title: Request {#get-request}

text:
#### Example HTTP request

    GET /v1/crdb_tasks/1

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| X-Result-TTL | integer | Task time to live |

#### URL parameters

| Field | Type | Description |
|-------|------|-------------|
| task_id | string | Task ID |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| verbose | boolean | Return detailed task information (optional) |

title: Response {#get-response}

text: Returns a [CRDB task object]().

title: Status codes {#get-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | Task status. |
| [401 Unauthorized](https://www.rfc-editor.org/rfc/rfc9110.html#name-401-unauthorized) | Unauthorized request. Invalid credentials |
| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Task not found. |

title: Cancel task {#post-crdb_task-cancel}

text:
[code example]

Gracefully cancels a running or queued task.

A task that already reached the commit phase cannot be canceled.

title: Request {#post-cancel-request}

text:
#### Example HTTP request

[code example]

#### URL parameters

| Field | Type | Description |
|-------|------|-------------|
| task_id | string | Task ID |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| force | boolean | Cancel even if the task is in the commit phase. **WARNING**: This can break the CRDB in the cluster configuration store (CCS), so use with caution. (optional) |

title: Response {#post-cancel-response}

text:
Returns a status code.

#### Status codes {#post-cancel-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | The request has been accepted. |
| [401 Unauthorized](https://www.rfc-editor.org/rfc/rfc9110.html#name-401-unauthorized) | Unauthorized request. Invalid credentials. |
| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Task not found. |
| [406 Not Acceptable](https://www.rfc-editor.org/rfc/rfc9110.html#name-406-not-acceptable) | Task cannot be canceled. |
| [409 Conflict](https://www.rfc-editor.org/rfc/rfc9110.html#name-409-conflict) | Failed to cancel task. |

code: GET /v1/crdb_tasks

section_id: request-get-all-request

section_id: cancel-task-post-crdb-task-cancel

code: POST /v1/crdb_tasks/1/actions/cancel

section_id: request-post-cancel-request


title: CRDB flush requests

summary: Flush Active-Active database requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [PUT](#put-crdbs-flush) | `/v1/crdbs/{crdb_guid}/flush` | Flush an Active-Active database |

title: Flush an Active-Active database {#put-crdbs-flush}

text:
[code example]

Flush an Active-Active database.

title: Request {#put-request}

text:
#### Example HTTP request

[code example]

#### Headers

| Key | Value | Description |
|-----|-------|-------------|
| X-Task-ID | string | Specified task ID |
| X-Result-TTL | integer | Time (in seconds) to keep task result |

#### URL parameters

| Field | Type | Description |
|-------|------|-------------|
| crdb_guid | string | Globally unique Active-Active database ID (GUID) |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| async_flush | boolean | Perform asynchronous flush operation (optional) |

title: Response {#put-response}

text:
Returns a [CRDB task object]().

#### Status codes {#put-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Action was successful. |
| [400 Bad Request](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) | The request is invalid or malformed. |
| [401 Unauthorized](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2) | Unauthorized request. Invalid credentials |
| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Configuration or Active-Active database not found. |
| [406 Not Acceptable](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.7) | Configuration cannot be accepted, typically because it was already committed. |

code: PUT /v1/crdbs/{crdb_guid}/flush


title: CRDB health report requests

summary: Active-Active database health report requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-crdbs-health) | `/v1/crdbs/{crdb_guid}/health_report` | Get a health report for an Active-Active database |

title: Get health report {#get-crdbs-health}

text:
GET /v1/crdbs/{crdb_guid}/health_report

Get a health report for an Active-Active database.

title: Request {#get-request}

text:
#### Example HTTP request

    GET /v1/crdbs/{crdb_guid}/health_report

#### URL parameters

| Field | Type | Description |
|-------|------|-------------|
| crdb_guid | string | Globally unique Active-Active database ID (GUID) |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| instance_id | integer | The request retrieves information from the specified Active-Active database instance. If this instance doesn’t exist, the request retrieves information from all instances. (optional) |

title: Response {#get-response}

text: Returns a JSON array of [CRDB health report objects]().

title: Status codes {#get-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Action was successful. |
| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Configuration or Active-Active database not found. |


title: CRDBs requests

summary: Active-Active database requests

summary: Flush Active-Active database requests

title: CRDB flush requests

title: CRDB health report requests

summary: Purge removed Active-Active database requests

title: CRDB purge requests

summary: Update Active-Active configuration requests

title: CRDB updates requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-all-crdbs) | `/v1/crdbs` | Get all Active-Active databases |
| [GET](#get-crdb) | `/v1/crdbs/{crdb_guid}` | Get a specific Active-Active database |
| [PATCH](#patch-crdbs) | `/v1/crdbs/{crdb_guid}` | Update an Active-Active database |
| [POST](#post-crdb) | `/v1/crdbs` | Create a new Active-Active database |
| [DELETE](#delete-crdb) | `/v1/crdbs/{crdb_guid}` | Delete an Active-Active database |

title: Get all Active-Active databases {#get-all-crdbs}

text:
[code example]

Get a list of all Active-Active databases on the cluster.

title: Request {#get-all-request}

title: Response {#get-all-response}

text:
Returns a JSON array of [CRDB objects]().

##### Status codes {#get-all-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | A list of Active-Active database. |
| [401 Unauthorized](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2) | Unauthorized request. Invalid credentials |

title: Get an Active-Active database {#get-crdb}

text:
[code example]

Get a specific Active-Active database.

title: Request {#get-request}

text:
#### Example HTTP request

[code example]

#### Headers

| Key | Value | Description |
|-----|-------|-------------|
| X-Task-ID | string | Specified task ID |
| X-Result-TTL | integer | Time (in seconds) to keep task result |

#### URL parameters

| Field | Type | Description |
|-------|------|-------------|
| crdb_guid | string | Globally unique Active-Active database ID (GUID) |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| instance_id | integer | Instance from which to get the Active-Active database information |

title: Response {#get-response}

text:
Returns a [CRDB object]().

#### Status codes {#get-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Active-Active database information is returned. |
| [401 Unauthorized](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2) | Unauthorized request. Invalid credentials |
| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Database or configuration does not exist. |

title: Update an Active-Active database {#patch-crdbs}

text:
[code example]

Update an Active-Active database's configuration.

In order to add or remove instances, use [<nobr>`POST crdbs/{crdb_guid}/updates`</nobr>]() instead.

title: Request {#patch-request}

text:
#### Example HTTP request

[code example]

#### Headers

| Key | Value | Description |
|-----|-------|-------------|
| X-Task-ID | string | Specified task ID |
| X-Result-TTL | integer | Time (in seconds) to keep task result |

#### URL parameters

| Field | Type | Description |
|-------|------|-------------|
| crdb_guid | string | Globally unique Active-Active database ID (GUID) |

#### Request body

Include a [CRDB object]() with updated fields in the request body.

title: Response {#patch-response}

text:
Returns a [CRDB task object]().

#### Status codes {#patch-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | The request has been accepted. |
| [400 Bad Request](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) | The posted Active-Active database contains invalid parameters. |
| [401 Unauthorized](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2) | Unauthorized request. Invalid credentials |
| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Configuration or Active-Active database not found. |
| [406 Not Acceptable](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.7) | The posted Active-Active database cannot be accepted. |

title: Create an Active-Active database {#post-crdb}

text:
[code example]

Create a new Active-Active database.

title: Request {#post-request}

text:
#### Example HTTP request

[code example]

#### Headers

| Key | Value | Description |
|-----|-------|-------------|
| X-Task-ID | string | Specified task ID |
| X-Result-TTL | integer | Time (in seconds) to keep task result |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| dry_run | boolean | Validate the request without creating the database (optional) |

#### Request body

Include a [CRDB object](), which defines the Active-Active database, in the request body.

##### Example body

[code example]

This JSON body creates an Active-Active database without TLS and with two participating clusters.

title: Response {#post-response}

text:
Returns a [CRDB task object]().

#### Status codes {#post-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | The request has been accepted. |
| [400 Bad Request](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) | The request is invalid or malformed. |
| [401 Unauthorized](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2) | Unauthorized request. Invalid credentials |
| [406 Not Acceptable](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.7) | The posted Active-Active database cannot be accepted. |

title: Delete an Active-Active database {#delete-crdb}

text:
[code example]

Delete an Active-Active database.

title: Request {#delete-request}

title: Response {#delete-response}

text:
Returns a [CRDB task object]().

#### Status codes {#delete-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Action was successful. |
| [401 Unauthorized](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2) | Unauthorized request. Invalid credentials |
| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Configuration or Active-Active database not found. |
| [406 Not Acceptable](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.7) | The Active-Active GUID is invalid or the Active-Active database was already deleted. |

code: GET /v1/crdbs

code: GET /v1/crdbs/{crdb_guid}

section_id: get-an-active-active-database-get-crdb

code: PATCH /v1/crdbs/{crdb_guid}

code: POST /v1/crdbs

sample-crdb

username: <username>

password: <password>

code: DELETE /v1/crdbs/{crdb_guid}

section_id: request-delete-request


title: CRDB purge requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [PUT](#put-crdbs-purge) | `/v1/crdbs/{crdb_guid}/purge` | Purge data from an instance that was forcibly removed from the Active-Active database |

title: Purge data from removed instance {#put-crdbs-purge}

text:
PUT /v1/crdbs/{crdb_guid}/purge

Purge the data from an instance that was removed from the
Active-Active database by force.

When you force the removal of an instance from an Active-Active
database, the removed instance keeps the data and configuration
according to the last successful synchronization.

To delete the data and configuration from the forcefully removed
instance you must use this API (Must be executed locally on the
removed instance).

title: Request {#put-request}

text:
#### Example HTTP request

    PUT /v1/crdbs/1/purge

#### URL parameters

| Field | Type | Description |
|-------|------|-------------|
| crdb_guid | string | Globally unique Active-Active database ID (GUID) |

#### Request body

| Field | Type | Description |
|-------|------|-------------|
| instances | array of integers | Array of unique instance IDs |

title: Response {#put-response}

text: Returns a [CRDB task object]().

title: Status codes {#put-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Action was successful. |
| [400 Bad Request](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) | The request is invalid or malformed. |
| [401 Unauthorized](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2) | Unauthorized request. Invalid credentials |
| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Configuration, instance, or Active-Active database not found. |


title: CRDB updates requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [POST](#post-crdbs-updates) | `/v1/crdbs/{crdb_guid}/updates` | Modify Active-Active confgurarion |

title: Modify Active-Active configuration {#post-crdbs-updates}

text:
POST /v1/crdbs/{crdb_guid}/updates

Modify Active-Active configuration.

This is a very powerful API request and can cause damage if used incorrectly.

In order to add or remove instances, you must use this API. For simple configuration updates, it is recommended to use PATCH on /crdbs/{crdb_guid} instead.

Updating default_db_config affects both existing and new instances that may be added.

When you update db_config, it changes the configuration of the database that you specify. This field overrides corresponding fields (if any) in default_db_config.

title: Request {#post-request}

text:
#### Example HTTP request

    POST /v1/crdbs/1/updates

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| X-Task-ID | string | Specified task ID |
| X-Result-TTL | integer | Time (in seconds) to keep task result |

#### URL parameters

| Field | Type | Description |
|-------|------|-------------|
| crdb_guid | string | Globally unique Active-Active database ID (GUID) |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| dry_run | boolean | Validate the request without applying changes (optional) |

#### Request body

Include a [CRDB modify_request object]() with updated fields in the request body.

title: Response {#post-response}

text: Returns a [CRDB task object]().

title: Status codes {#post-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | The request has been accepted. |
| [400 Bad Request](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) | The posted Active-Active database contains invalid parameters. |
| [401 Unauthorized](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2) | Unauthorized request. Invalid credentials |
| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Configuration, instance or Active-Active database not found. |
| [406 Not Acceptable](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.7) | The posted Active-Active database cannot be accepted. |


title: All nodes database debug info requests

summary: Documents the Redis Software REST API debuginfo/all/bdb requests.

title: Overview

text:
This REST API path is deprecated as of Redis Software version 7.4.2. Use the new path [`/v1/bdbs/debuginfo`]() instead.

| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-all-debuginfo-bdb) | `/v1/debuginfo/all/bdb/{bdb_uid}` | Get debug info for a database from all nodes |

title: Get database debug info for all nodes {#get-all-debuginfo-bdb}

text:
GET /v1/debuginfo/all/bdb/{int: bdb_uid}

Downloads a tar file that contains debug info for the specified database (`bdb_uid`) from all nodes.

#### Required permissions

| Permission name |
|-----------------|
| [view_debugging_info]() |

title: Request {#get-all-request}

text:
#### Example HTTP request

	GET /v1/debuginfo/all/bdb/1

title: Response {#get-all-response}

text:
Downloads the debug info in a tar file called `filename.tar.gz`. Extract the files from the tar file to access the debug info.

#### Response headers

| Key | Value | Description |
|-----|-------|-------------|
| Content-Type | application/x-gzip | Media type of request/response body |
| Content-Length | 653350 | Length of the response body in octets |
| Content-Disposition | attachment; filename=debuginfo.tar.gz | Display response in browser

title: Status codes {#get-all-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Success. |
| [500 Internal Server Error](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) | Failed to get debug info. |


title: All nodes debug info requests

summary: Documents the Redis Software REST API debuginfo/all requests.

title: All nodes database debug info requests

title: Overview

text:
This REST API path is deprecated as of Redis Software version 7.4.2. Use the new path [`/v1/cluster/debuginfo`]() instead.

| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-all-debuginfo) | `/v1/debuginfo/all` | Get debug info for all nodes |

title: Get debug info for all nodes {#get-all-debuginfo}

text:
GET /v1/debuginfo/all

Downloads a tar file that contains debug info from all nodes.

#### Required permissions

| Permission name |
|-----------------|
| [view_debugging_info]() |

title: Request {#get-all-request}

text:
#### Example HTTP request

	GET /v1/debuginfo/all

title: Response {#get-all-response}

text:
Downloads the debug info in a tar file called `filename.tar.gz`. Extract the files from the tar file to access the debug info for all nodes.

#### Response headers

| Key | Value | Description |
|-----|-------|-------------|
| Content-Type | application/x-gzip | Media type of request/response body |
| Content-Length | 653350 | Length of the response body in octets |
| Content-Disposition | attachment; filename=debuginfo.tar.gz | Display response in browser or download as attachment |

title: Status codes {#get-all-status-codes}


title: Debug info requests

summary: Debug info requests

title: All nodes debug info requests

summary: Documents the Redis Software REST API debuginfo/node requests.

title: Current node debug info requests

title: Overview

text:
These REST API paths are deprecated as of Redis Software version 7.4.2. Use the new paths [`/v1/cluster/debuginfo`](), [`/v1/nodes/debuginfo`](), and [`/v1/bdbs/debuginfo`]() instead.

Downloads a support package, which includes logs and information about the cluster, nodes, databases, and shards, as a tar file called `filename.tar.gz`. Extract the files from the tar file to access the debug info.

title: Get debug info for all nodes in the cluster

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET]() | `/v1/debuginfo/all` | Gets debug info for all nodes |
| [GET]() | `/v1/debuginfo/all/bdb/{bdb_uid}` | Gets debug info for a database from all nodes |

title: Get debug info for the current node

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET]() | `/v1/debuginfo/node` | Gets debug info for the current node |
| [GET]() | `/v1/debuginfo/node/bdb/{bdb_uid}` | Gets debug info for a database from the current node |


title: Current node database debug info requests

summary: Documents the Redis Software REST API debuginfo/node/bdb requests.

title: Overview

text:
This REST API path is deprecated as of Redis Software version 7.4.2. Use the new path [`/v1/bdbs/debuginfo`]() instead.

| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-debuginfo-node-bdb) | `/v1/debuginfo/node/bdb/{bdb_uid}` | Get debug info for the current node regarding a specific database |

title: Get database debug info for current node {#get-debuginfo-node-bdb}

text:
GET /v1/debuginfo/node/bdb/{int: bdb_uid}

Downloads a tar file that contains debug info for the specified database (`bdb_uid`) from the current node.

#### Required permissions

| Permission name |
|-----------------|
| [view_debugging_info]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/debuginfo/node/bdb/1

title: Response {#get-response}

title: Status codes {#get-status-codes}


title: Current node debug info requests

title: Overview

text:
This REST API path is deprecated as of Redis Software version 7.4.2. Use the new path [`/v1/nodes/debuginfo`]() instead.

| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-debuginfo-node) | `/v1/debuginfo/node` | Get debug info for the current node |

title: Get debug info for current node {#get-debuginfo-node}

text:
GET /v1/debuginfo/node

Downloads a tar file that contains debug info for the current node.

#### Required permissions

| Permission name |
|-----------------|
| [view_debugging_info]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/debuginfo/node

title: Response {#get-response}

text:
Downloads the debug info in a tar file called `filename.tar.gz`. Extract the files from the tar file to access the debug info.

#### Response headers

| Key | Value | Description |
|-----|-------|-------------|
| Content-Type | application/x-gzip | Media type of request/response body |
| Content-Length | 653350 | Length of the response body in octets |
| Content-Disposition | attachment; filename=debuginfo.tar.gz | Display response in browser or download as attachment |

title: Status codes {#get-status-codes}


title: Diagnostics requests

summary: REST API requests for the diagnostic logging service.

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-diagnostics) | `/v1/diagnostics` | Get diagnostic logging service configuration |
| [PUT](#put-diagnostics) | `/v1/diagnostics` | Update diagnostic logging service configuration |

title: Get diagnostic logging service configuration {#get-diagnostics}

text:
[code example]

Gets the diagnostic logging service configuration as JSON.

#### Required permissions

| Permission name | Roles |
|-----------------|-------|
| [view_cluster_info]() | admin
cluster_member
cluster_viewer
db_member
db_viewer
user_manager |

title: Request {#get-request}

text:
#### Example HTTP request

[code example]

#### Headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#get-response}

text:
Returns a JSON object that represents the diagnostic logging service configuration. Each target includes a `cron_expression` that defines the log collection time interval. `slowlog_target` also includes `max_entries`, which specifies the maximum number of entries recorded in the slow log.

#### Example response body

[code example]

#### Status codes {#get-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error |

title: Update diagnostic logging service configuration {#put-diagnostics}

text:
[code example]

Updates the diagnostic logging service configuration.

#### Required permissions

| Permission name | Roles |
|-----------------|-------|
| [update_cluster]() | admin |

title: Request {#put-request}

text:
Provide a JSON object in the request body to update a diagnostic logging service target's configuration. Each target can include a `cron_expression` that defines the log collection time interval for that target. For `slowlog_target`, you can also change `max_entries`, which specifies the maximum number of entries recorded in the slow log.

#### Example HTTP request

[code example]

#### Example JSON body

[code example]

#### Headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

title: Response {#put-response}

text:
Returns a JSON object that represents the updated diagnostic logging service configuration. Each target includes a `cron_expression` that defines the log collection time interval. `slowlog_target` also includes `max_entries`, which specifies the maximum number of entries recorded in the slow log.

#### Example response body

[code example]

#### Status codes {#put-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error. |
| [400 Bad Request](https://www.rfc-editor.org/rfc/rfc9110.html#name-400-bad-request) | Bad content provided. |
| [409 Conflict](https://www.rfc-editor.org/rfc/rfc9110.html#name-409-conflict) | Attempting to configure the diagnostic logging service target while it is busy with another configuration change. In this context, this is a temporary condition, and the request should be re-attempted later. |

code: GET /v1/diagnostics

section_id: response-get-response

code: PUT /v1/diagnostics

section_id: request-put-request


title: Endpoints stats requests

summary: Endpoint statistics requests

title: Overview

text:
The v1 statistics REST API endpoints are deprecated as of Redis Software version 7.22. Use the [metrics stream engine for monitoring v2]() instead for real-time monitoring and metrics collection.

| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-endpoints-stats) | `/v1/endpoints/stats` | Get stats for all endpoints |

title: Get all endpoints stats {#get-endpoints-stats}

text:
GET /v1/endpoints/stats

Get statistics for all endpoint-proxy links.

This method will return both endpoints and listeners stats for backwards
compatability.

#### Required permissions

| Permission name |
|-----------------|
| [view_endpoint_stats]() |

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/endpoints/stats?interval=1hour&stime=2014-08-28T10:00:00Z

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| interval | string | Time interval for which we want stats: 1sec/10sec/5min/15min/1hour/12hour/1week (optional) |
| stime | ISO_8601 | Start time from which we want the stats. Should comply with the [ISO_8601](https://en.wikipedia.org/wiki/ISO_8601) format (optional) |
| etime | ISO_8601 | End time after which we don't want the stats. Should comply with the [ISO_8601](https://en.wikipedia.org/wiki/ISO_8601) format (optional) |

title: Response {#get-response}

text:
The `uid` format in the response is: `"BDB_UID:ENDPOINT_UID:PROXY_UID"`

For example: `{"uid": "1:2:3"}` means `BDB_UID=1`, `ENDPOINT_UID=2`, and `PROXY_UID=3`

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | No error |


title: Redis Software REST API requests

summary: Documents the requests supported by the Redis Software REST API calls.

summary: Actions requests

title: Actions requests

summary: Database requests

title: Database requests

summary: Bootstrap requests

title: Bootstrap requests

summary: Cluster settings requests

title: Cluster requests

title: Cluster Manager settings requests

title: CRDB tasks requests

summary: Active-Active database requests

title: CRDBs requests

summary: Debug info requests

title: Debug info requests

title: Diagnostics requests

summary: Endpoint statistics requests

title: Endpoints stats requests

summary: REST API requests for the job scheduler

title: Job scheduler requests

summary: API object JSON schema requests

title: JSON schema requests

summary: LDAP mappings requests

title: LDAP mappings requests

summary: License requests

title: License requests

summary: Cluster event logs requests

title: Logs requests

summary: REST API request to get the migration status of a database in the cluster when using Replica Of.

title: Migrations requests

summary: Redis modules requests

title: Modules requests

summary: REST API requests to check a node's connection to the cluster's primary node.

title: Node master healthcheck requests

summary: Node requests

title: Nodes requests

summary: OCSP requests

title: OCSP requests

summary: Proxy requests

title: Proxy requests

summary: Redis access control list (ACL) requests

summary: Roles requests

title: Roles requests

summary: REST API requests to list or modify Redis Software services.

title: Services requests

summary: REST API requests for database shards

title: Shard requests

summary: DNS suffix requests

title: Suffix requests

summary: DNS suffixes requests

title: Suffixes requests

summary: REST API request to get the database usage report from the cluster.

title: Usage report requests

summary: User requests

title: Users requests

title: Content

text:
A REST API request requires the following components:
- [HTTP method](https://restfulapi.net/http-methods/) (`GET`, `PUT`, `PATCH`, `POST`, `DELETE`)
- Base URL
- Endpoint

Some requests may also require:
- URL parameters
- [Query parameters](https://en.wikipedia.org/wiki/Query_string)
- [JSON](http://www.json.org) request body
- [Permissions]()


title: Job scheduler requests

summary: REST API requests for the job scheduler

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-job-scheduler) | `/v1/job_scheduler` | Get job scheduler settings |
| [PUT](#put-job-scheduler) | `/v1/job_scheduler` | Update job scheduler settings |

title: Get job scheduler settings {#get-job-scheduler}

text:
[code example]

Get job scheduler information.

title: Permissions

text:
| Permission name | Roles |
|-----------------|-------|
| [view_cluster_info]() | admin
cluster_member
cluster_viewer
db_member
db_viewer
user_manager |

title: Request {#get-request}

title: Response {#get-response}

text:
Returns a [job_scheduler object]().

#### Example JSON body

[code example]

#### Status codes {#get-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error. |

title: Update job scheduler settings {#put-job-scheduler}

text:
[code example]

Update job scheduler settings.

title: Permissions

text:
| Permission name | Roles |
|-----------------|-------|
| [update_cluster]() | admin |

title: Request {#put-request}

text:
#### Example HTTP request

[code example]

#### Example JSON body

[code example]

#### Headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Body

Include a [job_scheduler object]() with updated fields in the request body.

title: Response {#put-response}

text:
Returns a [job_scheduler object]() with the updated fields.

#### Example JSON body

[code example]

#### Status codes {#put-status-codes}

| Code | Description |
|------|-------------|
| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error. |
| [400 Bad Request](https://www.rfc-editor.org/rfc/rfc9110.html#name-400-bad-request) | Bad content provided. |
| [409 Conflict](https://www.rfc-editor.org/rfc/rfc9110.html#name-409-conflict) | Attempting to configure the job_scheduler while it is busy with another configuration change. In this context, this is a temporary condition and the request should be re-attempted later. |

code: GET /v1/job_scheduler

code: PUT /v1/job_scheduler

section_id: response-put-response


title: JSON schema requests

summary: API object JSON schema requests

title: Overview

text:
| Method | Path | Description |
|--------|------|-------------|
| [GET](#get-jsonschema) | `/v1/jsonschema` | Get JSON schema of API objects |

title: Get object JSON schema {#get-jsonschema}

text:
GET /v1/jsonschema

Get the JSON schema of various [Redis Software REST API objects]().

title: Request {#get-request}

text:
#### Example HTTP request

	GET /v1/jsonschema?object=bdb

#### Request headers

| Key | Value | Description |
|-----|-------|-------------|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |

#### Query parameters

| Field | Type | Description |
|-------|------|-------------|
| object | string | Optional. The API object name: 'cluster', 'node', 'bdb' etc. |

title: Response {#get-response}

text:
Returns the JSON schema of the specified API object.

#### Example JSON body

[code example]

title: Status codes {#get-status-codes}

text:
| Code | Description |
|------|-------------|
| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Success. |
| [406 Not Acceptable](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.7) | Invalid object. |

code:
{
     "type": "object",
     "description": "An API object that represents a managed database in the cluster.",
     "properties": {
          "...."
     },
     "...."
}