<a id="af-rest-api"></a>

# REST APIs for Confluent Manager for Apache Flink

You can use the Confluent REST API to manage these resources for Confluent Manager for Apache Flink® (CMF):

- Environments
- Applications

In addition to the REST API, you can manage the above resources by using these Confluent tools:

- [Confluent CLI](https://docs.confluent.io/confluent-cli/current/command-reference/flink/index.html)
- [Confluent for Kubernetes](https://docs.confluent.io/operator/current/co-flink-overview.html)

## Prerequisites

The REST API requires networked access to CMF.

As part of the installation process, a Kubernetes service is created that exposes CMF
behind an outward-facing endpoint. By default, the service exposes CMF on port 8080.

If you have configured authentication and/or authorization, each API request must
be authenticated and you need permissions on the respective resource.

For more information, see:

- [Installation with Helm](../installation/helm.md#install-cmf-helm)
- [Access Control](../configure/access-control.md#cmf-access-control)

## Endpoints (v1)

All endpoints are served under `/cmf/api/v1`.

<a id="cmf-resource-names"></a>

## Identifiers

All resources are identified by name. Each name must be unique within its scope
and follow these rules:

- Contains only lowercase letters, digits, and hyphens (`-`).
- Starts with a lowercase letter and ends with a letter or digit.
- Is at most 45 characters long. Savepoints and detached savepoints allow names
  up to 156 characters.

Some resource types apply more rules. For example, artifact names can end
with a single file extension such as `.jar` (see [Artifact names and versions](../configure/artifacts.md#cmf-artifacts-names)).

## Timestamps

All timestamps in fields named `metadata.creationTimestamp` and `metadata.updateTimestamp`
and the `created_time` and `updated_time` fields in the Environment
are RFC 3339 formatted strings, compatible with Java’s [Instant](https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html) type.

The timestamp is in UTC, and does not contain any timezone information.name

This is an example: `2025-03-31T11:34:01.503Z`.

## Example usage with curl

The following example shows how to create a Flink Application in an environment called “test” using curl:

Contents of the file `flink-application.yaml`:

```yaml
apiVersion: cmf.confluent.io/v1
kind: FlinkApplication
metadata:
  name: curl-example
spec:
  image: confluentinc/cp-flink:1.19.1-cp2
  flinkVersion: v1_19
  flinkConfiguration:
    taskmanager.numberOfTaskSlots: "4"
  serviceAccount: flink
  jobManager:
    resource:
      memory: 1024m
      cpu: 1
  taskManager:
    resource:
      memory: 1024m
      cpu: 1
  job:
    jarURI: local:///opt/flink/examples/streaming/StateMachineExample.jar
    state: running
    parallelism: 2
    upgradeMode: stateless
```

Submission using `curl`, assuming CMF is running on `localhost:8080`:

```bash
curl -H "Content-type: application/yaml" --data-binary "@flink-application.yaml" localhost:8080/cmf/api/v1/environments/test/applications
```

<a id="cmf-api-query-params"></a>

## Query parameters

You can refine list endpoint responses by filtering results, controlling
sort order, selecting specific fields, and searching across resource attributes.

<a id="cmf-api-query-filter"></a>

### Filtering

Use the `filter` query parameter with one or more comma-separated expressions.

```text
?filter=<expression>[,<expression>...]
```

| Expression type   | Syntax                                                                                                              | Supported resources       |
|-------------------|---------------------------------------------------------------------------------------------------------------------|---------------------------|
| Name              | `name=foo*bar` (wildcards allowed)                                                                                  | All                       |
| Label equality    | `labels.key = value` or `labels.key != value`                                                                       | All                       |
| Label set-based   | `labels.key in (v1, v2)` or `labels.key notin (v1, v2)`                                                             | All                       |
| Label existence   | `labels.key` (exists) or `!labels.key` (does not exist)                                                             | All                       |
| State             | `state=RUNNING` or `state in (RUNNING, FAILED)` or `state notin (RUNNING, FAILED)`                                  | Applications              |
| Phase             | `phase=PENDING` or `phase in (PENDING, RUNNING)` or `phase notin (PENDING, RUNNING)`                                | Statements, Compute Pools |
| Type              | `type=CMF_STATUS` or `type in (CMF_STATUS, JOB_STATUS)` or `type notin (CMF_STATUS, JOB_STATUS)`                    | Events                    |
| Cluster status    | `clusterStatus=CONNECTED` or `clusterStatus in (CONNECTED, DISCONNECTED)` or `clusterStatus notin (DECOMMISSIONED)` | Environments              |
| Source            | `source=MANUAL` or `source in (MANUAL, SCHEDULE)` or `source notin (UPGRADE)`                                       | Savepoints                |

The `clusterStatus` expression matches the effective state of the backing
Kubernetes cluster: `CONNECTED`, `DISCONNECTED`, or `DECOMMISSIONED`. The
`source` expression identifies how a savepoint was created: `MANUAL`
(triggered through the API, CLI, or UI), `UPGRADE` (created during an
application upgrade), or `SCHEDULE` (created by a periodic savepoint schedule).
An unrecognized `source` value returns a `400 Bad Request`, unlike `state`,
which returns no matches for an unknown value.

#### Examples

```text
# Name wildcard + label filter
?filter=name=prod*,labels.environment in (production, qa),!labels.development

# Application state filter
?filter=name=prod*,state in (RUNNING, FAILED)

# Statement phase filter
?filter=name=my-stmt*,phase in (PENDING, RUNNING)

# Event type filter
?filter=type=CMF_STATUS

# Environment cluster-status filter
?filter=clusterStatus in (CONNECTED, DISCONNECTED)

# Savepoint source filter
?filter=source=SCHEDULE
```

<a id="cmf-api-query-sort"></a>

### Sorting

Use the `sort` query parameter in the format `property,(asc|desc)`.
Endpoints sort in ascending order by default. Repeat the parameter for
multiple sort criteria.

```text
?sort=<property>,(asc|desc)[&sort=<property>,(asc|desc)...]
```

Supported sort properties:

| Property                                           | Notes                                                                                                                                                         |
|----------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `name` / `metadata.name`                           | Alphabetical sort by resource name.                                                                                                                           |
| `creationTimestamp` / `metadata.creationTimestamp` | Sort by resource creation time.                                                                                                                               |
| `updateTimestamp` / `metadata.updateTimestamp`     | Sort by the most recent spec update time. The displayed `metadata.updateTimestamp`<br/>might differ because it reflects the latest of spec or status changes. |

#### Examples

```text
# Newest first
?sort=creationTimestamp,desc

# By name ascending, then by creation time descending
?sort=name,asc&sort=creationTimestamp,desc
```

<a id="cmf-api-query-fields"></a>

### Field projection

Use the `fields` query parameter to request only specific fields in the
response, reducing payload size. Specify field paths as a comma-separated
list using dot notation for nested fields. `apiVersion` and `kind` are
always included regardless of what is requested.

```text
?fields=<field>[,<field>...]
```

#### Example

```text
?fields=metadata.name,metadata.creationTimestamp,status.phase
```

<a id="cmf-api-query-search"></a>

### Search

Use `search` and `searchScope` together to perform a text search across
specific resource fields. Both parameters must be provided together.
Supplying only one results in a `400 Bad Request`.

```text
?search=<term>&searchScope=<field>[,<field>...]
```

When multiple fields are specified in `searchScope`, OR logic is applied.

Supported `searchScope` fields by resource:

| Resource       | Supported fields                      |
|----------------|---------------------------------------|
| Environments   | `name`, `kubernetesNamespace`         |
| Statements     | `name`, `statement`                   |
| Events         | `message`, `flinkApplicationInstance` |
| Secrets        | `name`, `environments`                |
| Kafka Catalogs | `name`                                |

#### Examples

```text
# Search environments by name or namespace
?search=prod&searchScope=name,kubernetesNamespace

# Search statements containing a keyword
?search=SELECT&searchScope=name,statement
```

<a id="cmf-api-ref"></a>

## API reference

This section contains the REST API reference for Confluent Manager for Apache Flink® and the API spec.

### View the API spec

If you want to see the entire API spec, you can download the file:
[`apispec-v1.yml`](includes/apispec-v1.yml)



### Reference details



#### Environments

### POST /cmf/api/v1/environments

**Create or update an Environment**

**basic-environment - Basic Environment:**

```http
POST /cmf/api/v1/environments HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "name": "production",
    "kubernetesNamespace": "flink-production",
    "flinkApplicationDefaults": {
        "spec": {
            "flinkConfiguration": {
                "taskmanager.numberOfTaskSlots": "4",
                "rest.profiling.enabled": "true"
            },
            "jobManager": {
                "resource": {
                    "memory": "1024m",
                    "cpu": 1
                }
            },
            "taskManager": {
                "resource": {
                    "memory": "1024m",
                    "cpu": 1
                }
            }
        }
    },
    "computePoolDefaults": {
        "clusterSpec": {
            "flinkVersion": "v1_19",
            "image": "confluentinc/cp-flink-sql:1.19-cp8",
            "flinkConfiguration": {
                "taskmanager.numberOfTaskSlots": "4"
            }
        }
    },
    "statementDefaults": {
        "detached": {
            "flinkConfiguration": {
                "state.backend.type": "hashmap"
            }
        },
        "interactive": {
            "flinkConfiguration": {
                "state.backend.type": "hashmap"
            }
        }
    }
}
```

**basic-environment-yaml - Basic Environment (YAML):**

```http
POST /cmf/api/v1/environments HTTP/1.1
Host: example.com
Content-Type: application/yaml

{
    "name": "staging",
    "kubernetesNamespace": "flink-staging",
    "flinkApplicationDefaults": {
        "spec": {
            "flinkConfiguration": {
                "taskmanager.numberOfTaskSlots": "2",
                "rest.profiling.enabled": "true"
            },
            "jobManager": {
                "resource": {
                    "memory": "1024m",
                    "cpu": 1
                }
            },
            "taskManager": {
                "resource": {
                    "memory": "1024m",
                    "cpu": 1
                }
            }
        }
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    The Environment was successfully created or updated.

    **created-environment - Created Environment:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "name": "production",
        "kubernetesNamespace": "flink-production",
        "created_time": "2024-01-15T10:30:00Z",
        "updated_time": "2024-01-15T10:30:00Z",
        "flinkApplicationDefaults": {
            "spec": {
                "flinkConfiguration": {
                    "taskmanager.numberOfTaskSlots": "4",
                    "rest.profiling.enabled": "true"
                },
                "jobManager": {
                    "resource": {
                        "memory": "1024m",
                        "cpu": 1
                    }
                },
                "taskManager": {
                    "resource": {
                        "memory": "1024m",
                        "cpu": 1
                    }
                }
            }
        },
        "computePoolDefaults": {
            "clusterSpec": {
                "flinkVersion": "v1_19",
                "image": "confluentinc/cp-flink-sql:1.19-cp8",
                "flinkConfiguration": {
                    "taskmanager.numberOfTaskSlots": "4"
                }
            }
        },
        "statementDefaults": {
            "detached": {
                "flinkConfiguration": {
                    "state.backend.type": "hashmap"
                }
            },
            "interactive": {
                "flinkConfiguration": {
                    "state.backend.type": "hashmap"
                }
            }
        },
        "secrets": {}
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request. Validation failed. On update, kubernetesNamespace and kubernetesClusterName cannot be changed (immutable after creation).

    **validation-error - Validation Error:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "name: size must be between 4 and 2147483647"
            },
            {
                "message": "Environment's kubernetesNamespace 'fl' does not exist."
            },
            {
                "message": "Environment's kubernetesClusterName 'nonexistent' does not exist."
            }
        ]
    }
    ```

    **immutable-field - Immutable field change rejected:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "Environment's kubernetesClusterName cannot be changed from default-k8s-cluster to azure-k8s-cluster because the field is immutable."
            }
        ]
    }
    ```
  * [503 Service Unavailable](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.4) – 

    Service unavailable. On creation, the referenced kubernetesClusterName must be in an operational state. Returned when the cluster is DISCONNECTED or DECOMMISSIONED.

    **cluster-disconnected - Cluster is disconnected:**
    ```http
    HTTP/1.1 503 Service Unavailable
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "Kubernetes cluster 'azure-k8s-cluster' is currently DISCONNECTED. Check cluster connectivity and retry. If the cluster has been permanently removed, decommission it and redeploy your resources on another cluster."
            }
        ]
    }
    ```

    **cluster-decommissioned - Cluster is decommissioned:**
    ```http
    HTTP/1.1 503 Service Unavailable
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "Kubernetes cluster 'azure-k8s-cluster' is DECOMMISSIONED and cannot accept workloads. Recommission the cluster to restore operations, or create a new environment on an active cluster."
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments

**Retrieve a paginated list of all environments.**

* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **include-resource-information** (*boolean*) – Whether to include resource summary in the response.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **search** (*string*) – Search term to match against fields specified in searchScope.
    Must be provided together with searchScope.
  * **searchScope** (*string*) – Comma-separated list of fields to search in. Must be provided together with search. Unsupported field names result in a 400 Bad Request.
  * **fields** (*string*) – Comma-separated field paths to include in the response. Supports dot notation for nested fields. apiVersion and kind are always included. Example: ?fields=metadata.name,metadata.creationTimestamp,status.phase

**Example request:**

```http
GET /cmf/api/v1/environments HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    List of environments found. If no environments are found, an empty list is returned. Note the information about secret is not included in the list call yet. In order to get the information about secret, make a getSecret call.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "name": "string",
                "created_time": "2026-10-21T11:23:37.739598",
                "updated_time": "2026-10-21T11:23:37.739598",
                "flinkApplicationDefaults": {},
                "kubernetesNamespace": "string",
                "kubernetesClusterName": "string",
                "computePoolDefaults": {},
                "statementDefaults": {
                    "detached": {
                        "flinkConfiguration": {},
                        "savepointSchedule": {
                            "cronExpression": "string",
                            "timezone": "string",
                            "paused": true,
                            "catchUpOnRestart": true,
                            "jitterSeconds": 1,
                            "blackoutWindows": [
                                {
                                    "cronExpression": "string",
                                    "durationMinutes": 1,
                                    "timezone": "string"
                                }
                            ],
                            "freshnessThresholdHours": 1,
                            "formatType": "CANONICAL",
                            "retention": {
                                "keepLast": 1,
                                "keepWithin": "string",
                                "keepHourly": 1,
                                "keepDaily": 1,
                                "keepWeekly": 1,
                                "keepMonthly": 1,
                                "keepYearly": 1
                            }
                        }
                    },
                    "interactive": {
                        "flinkConfiguration": {},
                        "savepointSchedule": {
                            "cronExpression": "string",
                            "timezone": "string",
                            "paused": true,
                            "catchUpOnRestart": true,
                            "jitterSeconds": 1,
                            "blackoutWindows": [
                                {
                                    "cronExpression": "string",
                                    "durationMinutes": 1,
                                    "timezone": "string"
                                }
                            ],
                            "freshnessThresholdHours": 1,
                            "formatType": "CANONICAL",
                            "retention": {
                                "keepLast": 1,
                                "keepWithin": "string",
                                "keepHourly": 1,
                                "keepDaily": 1,
                                "keepWeekly": 1,
                                "keepMonthly": 1,
                                "keepYearly": 1
                            }
                        }
                    }
                },
                "metadata": {
                    "name": "string",
                    "creationTimestamp": "string",
                    "updateTimestamp": "string",
                    "labels": {},
                    "annotations": {}
                }
            }
        ]
    }
    ```
  * [304 Not Modified](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5) – Not modified.
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
* **Response Headers:**
  * **ETag** – An ID for this version of the response.

### GET /cmf/api/v1/environments/{envName}

**Get/Describe an environment with the given name.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment to be retrieved.
* **Query Parameters:**
  * **include-resource-information** (*boolean*) – Whether to include resource summary in the response.

**Example request:**

```http
GET /cmf/api/v1/environments/{envName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Environment found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "name": "string",
        "created_time": "2026-10-21T11:23:37.739598",
        "updated_time": "2026-10-21T11:23:37.739598",
        "flinkApplicationDefaults": {},
        "kubernetesNamespace": "string",
        "kubernetesClusterName": "string",
        "computePoolDefaults": {},
        "statementDefaults": {
            "detached": {
                "flinkConfiguration": {},
                "savepointSchedule": {
                    "cronExpression": "string",
                    "timezone": "string",
                    "paused": true,
                    "catchUpOnRestart": true,
                    "jitterSeconds": 1,
                    "blackoutWindows": [
                        {
                            "cronExpression": "string",
                            "durationMinutes": 1,
                            "timezone": "string"
                        }
                    ],
                    "freshnessThresholdHours": 1,
                    "formatType": "CANONICAL",
                    "retention": {
                        "keepLast": 1,
                        "keepWithin": "string",
                        "keepHourly": 1,
                        "keepDaily": 1,
                        "keepWeekly": 1,
                        "keepMonthly": 1,
                        "keepYearly": 1
                    }
                }
            },
            "interactive": {
                "flinkConfiguration": {},
                "savepointSchedule": {
                    "cronExpression": "string",
                    "timezone": "string",
                    "paused": true,
                    "catchUpOnRestart": true,
                    "jitterSeconds": 1,
                    "blackoutWindows": [
                        {
                            "cronExpression": "string",
                            "durationMinutes": 1,
                            "timezone": "string"
                        }
                    ],
                    "freshnessThresholdHours": 1,
                    "formatType": "CANONICAL",
                    "retention": {
                        "keepLast": 1,
                        "keepWithin": "string",
                        "keepHourly": 1,
                        "keepDaily": 1,
                        "keepWeekly": 1,
                        "keepMonthly": 1,
                        "keepYearly": 1
                    }
                }
            }
        },
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "labels": {},
            "annotations": {}
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/environments/{envName}

* **Parameters:**
  * **envName** (*string*) – Name of the Environment to be deleted.
* **Query Parameters:**
  * **force** (*boolean*) – If set to true, the platform deletes the environment from CMF metadata only, without requiring Kubernetes cluster connectivity. Kubernetes resources, such as service account or secret, might be orphaned.
* **Status Codes:**
  * [204 No Content](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5) – Environment found and deleted.
  * [304 Not Modified](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5) – Not modified.
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/environments/{envName}/secret-mappings/{name}

**Deletes the Environment Secret Mapping for the given Environment and Secret.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment in which the mapping has to be deleted.
  * **name** (*string*) – Name of the environment secret mapping to be deleted in the given environment.
* **Status Codes:**
  * [204 No Content](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5) – The Environment Secret Mapping was successfully deleted.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Secret not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/secret-mappings/{name}

**Retrieve the Environment Secret Mapping for the given name in the given environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **name** (*string*) – Name of the environment secret mapping to be retrieved.

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/secret-mappings/{name} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Environment Secret Mapping found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "uid": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "secretName": "string"
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Secret not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### PUT /cmf/api/v1/environments/{envName}/secret-mappings/{name}

**Updates the Environment Secret Mapping for the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **name** (*string*) – Name of the environment secret mapping to be updated

**Example request:**

```http
PUT /cmf/api/v1/environments/{envName}/secret-mappings/{name} HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "uid": "string",
        "creationTimestamp": "string",
        "updateTimestamp": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "secretName": "string"
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    The Environment Secret Mapping was successfully updated.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "uid": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "secretName": "string"
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Secret not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### POST /cmf/api/v1/environments/{envName}/secret-mappings

**Creates the Environment Secret Mapping for the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment

**Example request:**

```http
POST /cmf/api/v1/environments/{envName}/secret-mappings HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "uid": "string",
        "creationTimestamp": "string",
        "updateTimestamp": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "secretName": "string"
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    The Environment Secret Mapping was successfully created.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "uid": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "secretName": "string"
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    Environment Secret Mapping already exists.

    **Example response:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/secret-mappings

**Retrieve a paginated list of all Environment Secret Mappings.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/secret-mappings HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Environment Secret Mappings found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "uid": "string",
                    "creationTimestamp": "string",
                    "updateTimestamp": "string",
                    "labels": {},
                    "annotations": {}
                },
                "spec": {
                    "secretName": "string"
                }
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/catalog

**Retrieves the environment’s default Flink SQL catalog and its databases.**

Every environment has its own default Flink SQL catalog, used to register custom connectors and UDFs for Flink SQL statements. This endpoint is read-only; the catalog cannot be created, updated, or deleted through the API, only directly via SQL Statements.

* **Parameters:**
  * **envName** (*string*) – Name of the Environment

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/catalog HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    The environment catalog was found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "name": "string",
        "databases": [
            {
                "name": "string",
                "creationTimestamp": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment not found, or its default catalog is not enabled.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

#### FlinkApplications

### POST /cmf/api/v1/environments/{envName}/applications

**Creates a new Flink Application or updates an existing one in the given Environment.**

When artifact management is enabled, a raw spec.job.jarURI (for example s3://, gs://
or abfs://) that resolves into the configured artifact storage location is rejected with
HTTP 400. Reference managed artifacts through the cmf://{environment}/{name}[?version=N]
scheme so the artifact Use authorization check is applied; raw URIs that point elsewhere
are unaffected.

* **Parameters:**
  * **envName** (*string*) – Name of the Environment

**basic-application - Basic Flink Application:**

```http
POST /cmf/api/v1/environments/{envName}/applications HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "cmf.confluent.io/v1",
    "kind": "FlinkApplication",
    "metadata": {
        "name": "state-machine",
        "labels": {
            "app": "state-machine",
            "environment": "production"
        },
        "annotations": {
            "description": "Real-time fraud detection application"
        }
    },
    "spec": {
        "image": "confluentinc/cp-flink:1.19.3-cp2",
        "flinkVersion": "v1_19",
        "flinkConfiguration": {
            "taskmanager.numberOfTaskSlots": "2",
            "metrics.reporter.prom.factory.class": "org.apache.flink.metrics.prometheus.PrometheusReporterFactory",
            "metrics.reporter.prom.port": "9249-9250"
        },
        "serviceAccount": "flink",
        "jobManager": {
            "resource": {
                "memory": "1024m",
                "cpu": 1
            }
        },
        "taskManager": {
            "resource": {
                "memory": "1024m",
                "cpu": 1
            }
        },
        "job": {
            "jarURI": "local:///opt/flink/examples/streaming/StateMachineExample.jar",
            "state": "running",
            "parallelism": 2,
            "upgradeMode": "stateless"
        }
    }
}
```

**yaml-application - Flink Application (YAML):**

```http
POST /cmf/api/v1/environments/{envName}/applications HTTP/1.1
Host: example.com
Content-Type: application/yaml

{
    "apiVersion": "cmf.confluent.io/v1",
    "kind": "FlinkApplication",
    "metadata": {
        "name": "news-aggregator",
        "labels": {
            "app": "news-aggregator",
            "environment": "staging"
        }
    },
    "spec": {
        "image": "confluentinc/cp-flink:1.19.3-cp2",
        "flinkVersion": "v1_19",
        "flinkConfiguration": {
            "taskmanager.numberOfTaskSlots": "4",
            "metrics.reporter.prom.factory.class": "org.apache.flink.metrics.prometheus.PrometheusReporterFactory",
            "metrics.reporter.prom.port": "9249-9250"
        },
        "serviceAccount": "flink",
        "jobManager": {
            "resource": {
                "memory": "1024m",
                "cpu": 1
            }
        },
        "taskManager": {
            "resource": {
                "memory": "1024m",
                "cpu": 1
            }
        },
        "job": {
            "jarURI": "local:///opt/flink/examples/streaming/WordCount.jar",
            "state": "running",
            "parallelism": 4,
            "upgradeMode": "stateless"
        }
    }
}
```

* **Status Codes:**
  * [201 Created](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2) – 

    The Application was successfully created or updated.

    **Example response:**
    ```http
    HTTP/1.1 201 Created
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {},
        "spec": {},
        "status": {}
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/applications

**Retrieve a paginated list of all applications in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Supported properties: name, metadata.name, creationTimestamp, metadata.creationTimestamp,
    updateTimestamp, metadata.updateTimestamp.
    Note: updateTimestamp sorts by the most recent spec update time. The displayed
    metadata.updateTimestamp may differ as it reflects the latest of spec or status changes.
  * **include-resource-information** (*boolean*) – Whether to include resource summary in the response.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **fields** (*string*) – Comma-separated field paths to include in the response. Supports dot notation for nested fields. apiVersion and kind are always included. Example: ?fields=metadata.name,metadata.creationTimestamp,status.phase

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/applications HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Application found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {},
                "spec": {},
                "status": {}
            }
        ]
    }
    ```
  * [304 Not Modified](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5) – Not modified.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
* **Response Headers:**
  * **ETag** – An ID for this version of the response.

### GET /cmf/api/v1/environments/{envName}/applications/{appName}

**Retrieve an Application of the given name in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **appName** (*string*) – Name of the Application
* **Query Parameters:**
  * **include-resource-information** (*boolean*) – Whether to include resource summary in the response.

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/applications/{appName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Application found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {},
        "spec": {},
        "status": {}
    }
    ```
  * [304 Not Modified](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5) – Not modified.
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Application not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
* **Response Headers:**
  * **ETag** – An ID for this version of the response.

### DELETE /cmf/api/v1/environments/{envName}/applications/{appName}

**Deletes an Application of the given name in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **appName** (*string*) – Name of the Application
* **Query Parameters:**
  * **force** (*boolean*) – If set to true, the platform deletes the application from CMF metadata only, without requiring Kubernetes cluster connectivity.
* **Status Codes:**
  * [204 No Content](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5) – Application found and deleted.
  * [304 Not Modified](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5) – Not modified.
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1alpha1/environments/{envName}/applications/{appName}/events

**Get a paginated list of events of the given Application**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **appName** (*string*) – Name of the Application
* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **search** (*string*) – Search term to match against fields specified in searchScope.
    Must be provided together with searchScope.
  * **searchScope** (*string*) – Comma-separated list of fields to search in. Must be provided together with search. Unsupported field names result in a 400 Bad Request.
  * **fields** (*string*) – Comma-separated field paths to include in the response. Supports dot notation for nested fields. apiVersion and kind are always included. Example: ?fields=metadata.name,metadata.creationTimestamp,status.phase

**Example request:**

```http
GET /cmf/api/v1alpha1/environments/{envName}/applications/{appName}/events HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Events found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "uid": "string",
                    "creationTimestamp": "string",
                    "updateTimestamp": "2026-10-21T11:23:37.739598",
                    "flinkApplicationInstance": "string",
                    "labels": {},
                    "annotations": {}
                },
                "status": {
                    "message": "string",
                    "type": "string",
                    "count": 1,
                    "data": {
                        "newStatus": "string"
                    }
                }
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Application not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### POST /cmf/api/v1/environments/{envName}/applications/{appName}/start

**Starts an earlier submitted Flink Application**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **appName** (*string*) – Name of the Application
* **Query Parameters:**
  * **startFromSavepointUid** (*string*) – UID of the Savepoint from which the application should be started. This savepoint could belong to the application or can be a detached savepoint.
* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Application started

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {},
        "spec": {},
        "status": {}
    }
    ```
  * [304 Not Modified](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5) – Not modified.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment, Application or Savepoint not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### POST /cmf/api/v1/environments/{envName}/applications/{appName}/suspend

**Suspends an earlier started Flink Application**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **appName** (*string*) – Name of the Application
* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Application suspended

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {},
        "spec": {},
        "status": {}
    }
    ```
  * [304 Not Modified](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5) – Not modified.
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/applications/{appName}/instances

**Get a paginated list of instances of the given Application**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **appName** (*string*) – Name of the Application
* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/applications/{appName}/instances HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Instances found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "uid": "string",
                    "creationTimestamp": "string",
                    "updateTimestamp": "string",
                    "labels": {},
                    "annotations": {}
                },
                "status": {
                    "spec": {},
                    "jobStatus": {
                        "jobId": "string",
                        "state": "string"
                    }
                }
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Application not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/applications/{appName}/instances/{instName}

**Retrieve an Instance of an Application**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **appName** (*string*) – Name of the Application
  * **instName** (*string*) – Name of the ApplicationInstance

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/applications/{appName}/instances/{instName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    ApplicationInstance found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "uid": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "labels": {},
            "annotations": {}
        },
        "status": {
            "spec": {},
            "jobStatus": {
                "jobId": "string",
                "state": "string"
            }
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    FlinkApplicationInstance or environment or application not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

#### Artifacts

### POST /cmf/api/v1/environments/{envName}/artifacts

**Upload a new Artifact to an Environment.**

Creates a new Artifact (version 1) with the supplied metadata and file content.
The request is multipart/form-data with two parts:

> - artifact: JSON or YAML payload carrying the Artifact’s kind, apiVersion, and
>   metadata. Server-managed fields (status.\*, metadata.uid,
>   metadata.creationTimestamp, metadata.updateTimestamp) are ignored if present.
> - file: binary content. Size is capped by cmf.artifacts.max-upload-size.

Returns 409 Conflict if an Artifact with the same metadata.name already exists in
the Environment. To upload a new version of an existing Artifact, use PUT instead.

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
* **Status Codes:**
  * [201 Created](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2) – 

    The Artifact was created. Returns the resource with populated status.

    **Example response:**
    ```http
    HTTP/1.1 201 Created
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "uid": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {},
        "status": {
            "version": 1,
            "creationTimestamp": "string",
            "path": "string",
            "size": 1,
            "checksum": "string",
            "phase": "UPLOADING",
            "message": "string"
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    An Artifact with the given name already exists in this Environment.

    **Example response:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [413 Request Entity Too Large](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.14) – 

    Uploaded file exceeds cmf.artifacts.max-upload-size.

    **Example response:**
    ```http
    HTTP/1.1 413 Request Entity Too Large
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/artifacts

**Retrieve a paginated list of all Artifacts in the given Environment.**

Returns the latest version of each Artifact in the environment. The filter
parameter supports name filtering (name=foo\*bar) and the label expressions
(equality, set-based, existence) described on the parameter.

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **fields** (*string*) – Comma-separated field paths to include in the response. Supports dot notation for nested fields. apiVersion and kind are always included. Example: ?fields=metadata.name,metadata.creationTimestamp,status.phase

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/artifacts HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Artifacts found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "uid": "string",
                    "creationTimestamp": "string",
                    "updateTimestamp": "string",
                    "labels": {},
                    "annotations": {}
                },
                "spec": {},
                "status": {
                    "version": 1,
                    "creationTimestamp": "string",
                    "path": "string",
                    "size": 1,
                    "checksum": "string",
                    "phase": "UPLOADING",
                    "message": "string"
                }
            }
        ]
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/artifacts/{artifactName}

**Retrieve an Artifact of the given name in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **artifactName** (*string*) – Name of the Artifact
* **Query Parameters:**
  * **version** (*string*) – Specific version number to retrieve, or latest. Defaults to latest.

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/artifacts/{artifactName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Artifact found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "uid": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {},
        "status": {
            "version": 1,
            "creationTimestamp": "string",
            "path": "string",
            "size": 1,
            "checksum": "string",
            "phase": "UPLOADING",
            "message": "string"
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Artifact (or requested version) not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### PUT /cmf/api/v1/environments/{envName}/artifacts/{artifactName}

**Update an Artifact’s labels and annotations, and/or upload a new version.**

multipart/form-data request. The artifact part (required) carries updated
metadata.labels and/or metadata.annotations. The file part is optional:

> - With file: a new version is created from the uploaded content; the returned
>   resource reflects the new latest version.
> - Without file: only metadata.labels and metadata.annotations are updated;
>   no new version is created.

Server-managed fields (metadata.uid, metadata.creationTimestamp,
metadata.updateTimestamp, status.\*) are ignored if present in the request body.
metadata.name in the request body must equal {artifactName} from the path.

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **artifactName** (*string*) – Name of the Artifact
* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Update succeeded without creating a new version. Either no file part was sent
    (metadata-only update), or the uploaded content was byte-identical to the latest
    version (deduplicated). Returns the resource with the current latest version’s status.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "uid": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {},
        "status": {
            "version": 1,
            "creationTimestamp": "string",
            "path": "string",
            "size": 1,
            "checksum": "string",
            "phase": "UPLOADING",
            "message": "string"
        }
    }
    ```
  * [201 Created](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2) – 

    A new version was created: the request included a file part whose content differed
    from the latest version. Returns the resource with the newly-created version’s status.
    (Identical content is deduplicated and returns 200 instead.)

    **Example response:**
    ```http
    HTTP/1.1 201 Created
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "uid": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {},
        "status": {
            "version": 1,
            "creationTimestamp": "string",
            "path": "string",
            "size": 1,
            "checksum": "string",
            "phase": "UPLOADING",
            "message": "string"
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Artifact not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [413 Request Entity Too Large](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.14) – 

    Uploaded file exceeds cmf.artifacts.max-upload-size.

    **Example response:**
    ```http
    HTTP/1.1 413 Request Entity Too Large
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/environments/{envName}/artifacts/{artifactName}

**Deletes the Artifact of the given name in the given Environment.**

If version=N, deletes only that version (the Artifact is fully removed when its last
version is deleted). If version is omitted or set to all, every version and the parent
record are deleted.

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **artifactName** (*string*) – Name of the Artifact
* **Query Parameters:**
  * **version** (*string*) – Specific version number to delete, or all. Defaults to all.
* **Status Codes:**
  * [204 No Content](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5) – Artifact (or specified version) deleted.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Artifact (or requested version) not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/artifacts/{artifactName}/versions

**Retrieve a paginated list of all versions of an Artifact, ordered newest-first.**

Returns one Artifact resource per version, each populated with the version-specific
status (path, size, checksum, phase). The filter parameter supports the same name
and label expressions as the Artifact list endpoint, evaluated against the Artifact’s
metadata – which every version shares. A matching filter therefore returns all
versions and a non-matching one returns an empty page.

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **artifactName** (*string*) – Name of the Artifact
* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **fields** (*string*) – Comma-separated field paths to include in the response. Supports dot notation for nested fields. apiVersion and kind are always included. Example: ?fields=metadata.name,metadata.creationTimestamp,status.phase

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/artifacts/{artifactName}/versions HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Versions retrieved.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "uid": "string",
                    "creationTimestamp": "string",
                    "updateTimestamp": "string",
                    "labels": {},
                    "annotations": {}
                },
                "spec": {},
                "status": {
                    "version": 1,
                    "creationTimestamp": "string",
                    "path": "string",
                    "size": 1,
                    "checksum": "string",
                    "phase": "UPLOADING",
                    "message": "string"
                }
            }
        ]
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Artifact not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/artifacts/{artifactName}/content

**Download the binary content of an Artifact.**

Returns the binary content of the requested version. The response includes a
Content-Disposition: attachment; filename=”<name>-v<version>[.<ext>]” header,
where the downloaded version number is inserted ahead of the Artifact name’s file
extension (for example my-udf.jar version 3 downloads as my-udf-v3.jar, and the
extension-less name my-udf downloads as my-udf-v3).

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **artifactName** (*string*) – Name of the Artifact
* **Query Parameters:**
  * **version** (*string*) – Specific version number to download, or latest. Defaults to latest.

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/artifacts/{artifactName}/content HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – Binary content of the Artifact version.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment, Artifact, or requested version not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
* **Response Headers:**
  * **Content-Disposition** – attachment; filename=”<name>-v<version>[.<ext>]”

#### Secrets

### POST /cmf/api/v1/secrets

**Create a Secret.**

Create a Secret. These secrets can then be used to specify sensitive information in the Flink SQL statements. Right now these secrets are only used for Kafka and Schema Registry credentials.

**Example request:**

```http
POST /cmf/api/v1/secrets HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "data": {}
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    The Secret was successfully created. Note that for security reasons, you can never view the contents of the secret itself once created.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "data": {}
        },
        "status": {
            "version": "string",
            "environments": [
                "string"
            ]
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    The Secret already exists.

    **Example response:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/secrets

**Retrieve a paginated list of all secrets. Note that the actual secret data is masked for security reasons.**

* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **search** (*string*) – Search term to match against fields specified in searchScope.
    Must be provided together with searchScope.
  * **searchScope** (*string*) – Comma-separated list of fields to search in. Must be provided together with search. Unsupported field names result in a 400 Bad Request.
  * **fields** (*string*) – Comma-separated field paths to include in the response. Supports dot notation for nested fields. apiVersion and kind are always included. Example: ?fields=metadata.name,metadata.creationTimestamp,status.phase

**Example request:**

```http
GET /cmf/api/v1/secrets HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    List of secrets found. If no secrets are found, an empty list is returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "creationTimestamp": "string",
                    "updateTimestamp": "string",
                    "uid": "string",
                    "labels": {},
                    "annotations": {}
                },
                "spec": {
                    "data": {}
                },
                "status": {
                    "version": "string",
                    "environments": [
                        "string"
                    ]
                }
            }
        ]
    }
    ```
  * [304 Not Modified](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5) – The list of secrets has not changed.
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
* **Response Headers:**
  * **ETag** – An ID for this version of the response.

### GET /cmf/api/v1/secrets/{secretName}

**Retrieve the Secret of the given name. Note that the secret data is not returned for security reasons.**

* **Parameters:**
  * **secretName** (*string*) – Name of the Secret

**Example request:**

```http
GET /cmf/api/v1/secrets/{secretName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Secret found and returned, with security data masked.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "data": {}
        },
        "status": {
            "version": "string",
            "environments": [
                "string"
            ]
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Secret not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### PUT /cmf/api/v1/secrets/{secretName}

**Update the secret.**

* **Parameters:**
  * **secretName** (*string*) – Name of the Secret

**Example request:**

```http
PUT /cmf/api/v1/secrets/{secretName} HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "data": {}
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Returns the updated Secret

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "data": {}
        },
        "status": {
            "version": "string",
            "environments": [
                "string"
            ]
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Secret with the given name not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/secrets/{secretName}

**Delete the secret with the given name.**

* **Parameters:**
  * **secretName** (*string*) – Name of the Secret
* **Status Codes:**
  * [204 No Content](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5) – Secret was successfully deleted.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Secret not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

#### SQL

### POST /cmf/api/v1/environments/{envName}/statements

**Creates a new Flink SQL Statement in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment

**basic-statement - Basic SQL Statement:**

```http
POST /cmf/api/v1/environments/{envName}/statements HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "cmf.confluent.io/v1",
    "kind": "Statement",
    "metadata": {
        "name": "test-stmt",
        "labels": {
            "app": "data-processing",
            "environment": "production"
        },
        "annotations": {
            "description": "Test SQL statement for data processing"
        }
    },
    "spec": {
        "statement": "INSERT INTO blackhole SELECT click_id FROM clicks;",
        "computePoolName": "test-pool",
        "parallelism": 2,
        "stopped": false,
        "flinkConfiguration": {
            "state.backend.type": "hashmap",
            "execution.checkpointing.interval": "2000"
        }
    }
}
```

**yaml-statement - Statement (YAML):**

```http
POST /cmf/api/v1/environments/{envName}/statements HTTP/1.1
Host: example.com
Content-Type: application/yaml

{
    "apiVersion": "cmf.confluent.io/v1",
    "kind": "Statement",
    "metadata": {
        "name": "data-streaming",
        "labels": {
            "app": "streaming",
            "environment": "staging"
        }
    },
    "spec": {
        "statement": "INSERT INTO blackhole SELECT click_id FROM clicks;",
        "computePoolName": "streaming-pool",
        "parallelism": 2,
        "stopped": false,
        "flinkConfiguration": {
            "state.backend.type": "hashmap",
            "execution.checkpointing.interval": "2000"
        }
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    The Statement was successfully created.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "statement": "string",
            "properties": {},
            "flinkConfiguration": {},
            "computePoolName": "string",
            "parallelism": 1,
            "stopped": true,
            "startFromSavepoint": {
                "savepointName": "string",
                "uid": "string",
                "initialSavepointPath": "string",
                "allowNonRestoredState": true,
                "savepointRedeployNonce": 1
            },
            "savepointSchedule": {
                "cronExpression": "string",
                "timezone": "string",
                "paused": true,
                "catchUpOnRestart": true,
                "jitterSeconds": 1,
                "blackoutWindows": [
                    {
                        "cronExpression": "string",
                        "durationMinutes": 1,
                        "timezone": "string"
                    }
                ],
                "freshnessThresholdHours": 1,
                "formatType": "CANONICAL",
                "retention": {
                    "keepLast": 1,
                    "keepWithin": "string",
                    "keepHourly": 1,
                    "keepDaily": 1,
                    "keepWeekly": 1,
                    "keepMonthly": 1,
                    "keepYearly": 1
                }
            }
        },
        "status": {
            "phase": "string",
            "detail": "string",
            "traits": {
                "sqlKind": "string",
                "isBounded": true,
                "isAppendOnly": true,
                "upsertColumns": [
                    1
                ],
                "schema": {
                    "columns": [
                        {
                            "name": "string",
                            "type": {
                                "type": "string",
                                "nullable": true,
                                "length": 1,
                                "precision": 1,
                                "scale": 1,
                                "keyType": {},
                                "valueType": {},
                                "elementType": {},
                                "fields": [
                                    {
                                        "name": "string",
                                        "fieldType": {},
                                        "description": "string"
                                    }
                                ],
                                "resolution": "string",
                                "fractionalPrecision": 1
                            }
                        }
                    ]
                },
                "udfJarUris": [
                    "string"
                ],
                "connectorJarUris": [
                    "string"
                ]
            },
            "resourceSummary": {
                "jobManager": {
                    "cpu": 1.0,
                    "memory": 1,
                    "count": 1
                },
                "taskManager": {
                    "cpu": 1.0,
                    "memory": 1,
                    "count": 1
                }
            },
            "warning": "string",
            "savepointSchedule": {
                "state": "ACTIVE",
                "lastTriggerTime": "2026-10-21T11:23:37.739598",
                "nextTriggerTime": "2026-10-21T11:23:37.739598",
                "lastCompletedTime": "2026-10-21T11:23:37.739598",
                "lastErrorMessage": "string"
            }
        },
        "result": {
            "apiVersion": "string",
            "kind": "string",
            "metadata": {
                "creationTimestamp": "string",
                "annotations": {}
            },
            "results": {
                "data": [
                    {}
                ]
            }
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    Statement already exists.

    **Example response:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/statements

**Retrieve a paginated list of Statements in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **compute-pool** (*string*) – Name of the ComputePool to filter on
  * **phase** (*string*) – Phase to filter on
  * **include-resource-information** (*boolean*) – Whether to include resource summary in the response.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **search** (*string*) – Search term to match against fields specified in searchScope.
    Must be provided together with searchScope.
  * **searchScope** (*string*) – Comma-separated list of fields to search in. Must be provided together with search. Unsupported field names result in a 400 Bad Request.
  * **fields** (*string*) – Comma-separated field paths to include in the response. Supports dot notation for nested fields. apiVersion and kind are always included. Example: ?fields=metadata.name,metadata.creationTimestamp,status.phase
  * **name** (*string*) – Substring filter using statement name, for example, ?name=abc. This field is deprecated. Use filter parameter instead.

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/statements HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Statements found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "creationTimestamp": "string",
                    "updateTimestamp": "string",
                    "uid": "string",
                    "labels": {},
                    "annotations": {}
                },
                "spec": {
                    "statement": "string",
                    "properties": {},
                    "flinkConfiguration": {},
                    "computePoolName": "string",
                    "parallelism": 1,
                    "stopped": true,
                    "startFromSavepoint": {
                        "savepointName": "string",
                        "uid": "string",
                        "initialSavepointPath": "string",
                        "allowNonRestoredState": true,
                        "savepointRedeployNonce": 1
                    },
                    "savepointSchedule": {
                        "cronExpression": "string",
                        "timezone": "string",
                        "paused": true,
                        "catchUpOnRestart": true,
                        "jitterSeconds": 1,
                        "blackoutWindows": [
                            {
                                "cronExpression": "string",
                                "durationMinutes": 1,
                                "timezone": "string"
                            }
                        ],
                        "freshnessThresholdHours": 1,
                        "formatType": "CANONICAL",
                        "retention": {
                            "keepLast": 1,
                            "keepWithin": "string",
                            "keepHourly": 1,
                            "keepDaily": 1,
                            "keepWeekly": 1,
                            "keepMonthly": 1,
                            "keepYearly": 1
                        }
                    }
                },
                "status": {
                    "phase": "string",
                    "detail": "string",
                    "traits": {
                        "sqlKind": "string",
                        "isBounded": true,
                        "isAppendOnly": true,
                        "upsertColumns": [
                            1
                        ],
                        "schema": {
                            "columns": [
                                {
                                    "name": "string",
                                    "type": {
                                        "type": "string",
                                        "nullable": true,
                                        "length": 1,
                                        "precision": 1,
                                        "scale": 1,
                                        "keyType": {},
                                        "valueType": {},
                                        "elementType": {},
                                        "fields": [
                                            {
                                                "name": "string",
                                                "fieldType": {},
                                                "description": "string"
                                            }
                                        ],
                                        "resolution": "string",
                                        "fractionalPrecision": 1
                                    }
                                }
                            ]
                        },
                        "udfJarUris": [
                            "string"
                        ],
                        "connectorJarUris": [
                            "string"
                        ]
                    },
                    "resourceSummary": {
                        "jobManager": {
                            "cpu": 1.0,
                            "memory": 1,
                            "count": 1
                        },
                        "taskManager": {
                            "cpu": 1.0,
                            "memory": 1,
                            "count": 1
                        }
                    },
                    "warning": "string",
                    "savepointSchedule": {
                        "state": "ACTIVE",
                        "lastTriggerTime": "2026-10-21T11:23:37.739598",
                        "nextTriggerTime": "2026-10-21T11:23:37.739598",
                        "lastCompletedTime": "2026-10-21T11:23:37.739598",
                        "lastErrorMessage": "string"
                    }
                },
                "result": {
                    "apiVersion": "string",
                    "kind": "string",
                    "metadata": {
                        "creationTimestamp": "string",
                        "annotations": {}
                    },
                    "results": {
                        "data": [
                            {}
                        ]
                    }
                }
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/statements/{stmtName}

**Retrieve the Statement of the given name in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **stmtName** (*string*) – Name of the Statement
* **Query Parameters:**
  * **include-resource-information** (*boolean*) – Whether to include resource summary in the response.

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/statements/{stmtName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Statement found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "statement": "string",
            "properties": {},
            "flinkConfiguration": {},
            "computePoolName": "string",
            "parallelism": 1,
            "stopped": true,
            "startFromSavepoint": {
                "savepointName": "string",
                "uid": "string",
                "initialSavepointPath": "string",
                "allowNonRestoredState": true,
                "savepointRedeployNonce": 1
            },
            "savepointSchedule": {
                "cronExpression": "string",
                "timezone": "string",
                "paused": true,
                "catchUpOnRestart": true,
                "jitterSeconds": 1,
                "blackoutWindows": [
                    {
                        "cronExpression": "string",
                        "durationMinutes": 1,
                        "timezone": "string"
                    }
                ],
                "freshnessThresholdHours": 1,
                "formatType": "CANONICAL",
                "retention": {
                    "keepLast": 1,
                    "keepWithin": "string",
                    "keepHourly": 1,
                    "keepDaily": 1,
                    "keepWeekly": 1,
                    "keepMonthly": 1,
                    "keepYearly": 1
                }
            }
        },
        "status": {
            "phase": "string",
            "detail": "string",
            "traits": {
                "sqlKind": "string",
                "isBounded": true,
                "isAppendOnly": true,
                "upsertColumns": [
                    1
                ],
                "schema": {
                    "columns": [
                        {
                            "name": "string",
                            "type": {
                                "type": "string",
                                "nullable": true,
                                "length": 1,
                                "precision": 1,
                                "scale": 1,
                                "keyType": {},
                                "valueType": {},
                                "elementType": {},
                                "fields": [
                                    {
                                        "name": "string",
                                        "fieldType": {},
                                        "description": "string"
                                    }
                                ],
                                "resolution": "string",
                                "fractionalPrecision": 1
                            }
                        }
                    ]
                },
                "udfJarUris": [
                    "string"
                ],
                "connectorJarUris": [
                    "string"
                ]
            },
            "resourceSummary": {
                "jobManager": {
                    "cpu": 1.0,
                    "memory": 1,
                    "count": 1
                },
                "taskManager": {
                    "cpu": 1.0,
                    "memory": 1,
                    "count": 1
                }
            },
            "warning": "string",
            "savepointSchedule": {
                "state": "ACTIVE",
                "lastTriggerTime": "2026-10-21T11:23:37.739598",
                "nextTriggerTime": "2026-10-21T11:23:37.739598",
                "lastCompletedTime": "2026-10-21T11:23:37.739598",
                "lastErrorMessage": "string"
            }
        },
        "result": {
            "apiVersion": "string",
            "kind": "string",
            "metadata": {
                "creationTimestamp": "string",
                "annotations": {}
            },
            "results": {
                "data": [
                    {}
                ]
            }
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Statement not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/environments/{envName}/statements/{stmtName}

**Deletes the Statement of the given name in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **stmtName** (*string*) – Name of the Statement
* **Query Parameters:**
  * **force** (*boolean*) – If set to true, the platform deletes the statement from CMF metadata only, without requiring Kubernetes cluster connectivity.
* **Status Codes:**
  * [204 No Content](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5) – Statement was found and deleted.
  * [202 Accepted](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.3) – Statement was found and deletion request received.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Statement not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### PUT /cmf/api/v1/environments/{envName}/statements/{stmtName}

**Updates a Statement of the given name in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **stmtName** (*string*) – Name of the Statement

**Example request:**

```http
PUT /cmf/api/v1/environments/{envName}/statements/{stmtName} HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "creationTimestamp": "string",
        "updateTimestamp": "string",
        "uid": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "statement": "string",
        "properties": {},
        "flinkConfiguration": {},
        "computePoolName": "string",
        "parallelism": 1,
        "stopped": true,
        "startFromSavepoint": {
            "savepointName": "string",
            "uid": "string",
            "initialSavepointPath": "string",
            "allowNonRestoredState": true,
            "savepointRedeployNonce": 1
        },
        "savepointSchedule": {
            "cronExpression": "string",
            "timezone": "string",
            "paused": true,
            "catchUpOnRestart": true,
            "jitterSeconds": 1,
            "blackoutWindows": [
                {
                    "cronExpression": "string",
                    "durationMinutes": 1,
                    "timezone": "string"
                }
            ],
            "freshnessThresholdHours": 1,
            "formatType": "CANONICAL",
            "retention": {
                "keepLast": 1,
                "keepWithin": "string",
                "keepHourly": 1,
                "keepDaily": 1,
                "keepWeekly": 1,
                "keepMonthly": 1,
                "keepYearly": 1
            }
        }
    },
    "status": {
        "phase": "string",
        "detail": "string",
        "traits": {
            "sqlKind": "string",
            "isBounded": true,
            "isAppendOnly": true,
            "upsertColumns": [
                1
            ],
            "schema": {
                "columns": [
                    {
                        "name": "string",
                        "type": {
                            "type": "string",
                            "nullable": true,
                            "length": 1,
                            "precision": 1,
                            "scale": 1,
                            "keyType": {},
                            "valueType": {},
                            "elementType": {},
                            "fields": [
                                {
                                    "name": "string",
                                    "fieldType": {},
                                    "description": "string"
                                }
                            ],
                            "resolution": "string",
                            "fractionalPrecision": 1
                        }
                    }
                ]
            },
            "udfJarUris": [
                "string"
            ],
            "connectorJarUris": [
                "string"
            ]
        },
        "resourceSummary": {
            "jobManager": {
                "cpu": 1.0,
                "memory": 1,
                "count": 1
            },
            "taskManager": {
                "cpu": 1.0,
                "memory": 1,
                "count": 1
            }
        },
        "warning": "string"
    },
    "result": {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "creationTimestamp": "string",
            "annotations": {}
        },
        "results": {
            "data": [
                {}
            ]
        }
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – Statement was found and updated.
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Statement not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/statements/{stmtName}/results

**Retrieve the result of the interactive Statement with the given name in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **stmtName** (*string*) – Name of the Statement
* **Query Parameters:**
  * **page-token** (*string*) – Token for the next page of results

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/statements/{stmtName}/results HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    StatementResults found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "creationTimestamp": "string",
            "annotations": {}
        },
        "results": {
            "data": [
                {}
            ]
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Statement does not return results.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Statement not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [410 Gone](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.11) – 

    Results are gone.

    **Example response:**
    ```http
    HTTP/1.1 410 Gone
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/statements/{stmtName}/exceptions

**Retrieves the last 10 exceptions of the Statement with the given name in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **stmtName** (*string*) – Name of the Statement

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/statements/{stmtName}/exceptions HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    StatementExceptions found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "data": [
            {
                "apiVersion": "string",
                "kind": "string",
                "name": "string",
                "message": "string",
                "timestamp": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Statement not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### POST /cmf/api/v1/environments/{envName}/compute-pools

**Creates a new Flink Compute Pool in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment

**dedicated-compute-pool - Dedicated Compute Pool:**

```http
POST /cmf/api/v1/environments/{envName}/compute-pools HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "cmf.confluent.io/v1",
    "kind": "ComputePool",
    "metadata": {
        "name": "test-pool",
        "labels": {
            "environment": "production"
        },
        "annotations": {
            "description": "Standard compute pool for production workloads"
        }
    },
    "spec": {
        "type": "DEDICATED",
        "clusterSpec": {
            "flinkVersion": "v1_19",
            "image": "confluentinc/cp-flink-sql:1.19-cp8",
            "flinkConfiguration": {
                "taskmanager.numberOfTaskSlots": "1"
            },
            "taskManager": {
                "resource": {
                    "cpu": 0.5,
                    "memory": "1024m"
                }
            },
            "jobManager": {
                "resource": {
                    "cpu": 0.5,
                    "memory": "1024m"
                }
            }
        }
    }
}
```

**shared-compute-pool - Shared Compute Pool:**

```http
POST /cmf/api/v1/environments/{envName}/compute-pools HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "cmf.confluent.io/v1",
    "kind": "ComputePool",
    "metadata": {
        "name": "shared-pool-1"
    },
    "spec": {
        "type": "SHARED",
        "state": "RUNNING",
        "clusterSpec": {
            "flinkVersion": "v1_19",
            "image": "confluentinc/cp-flink-sql:1.19-cp8",
            "flinkConfiguration": {
                "taskmanager.numberOfTaskSlots": "2"
            },
            "taskManager": {
                "resource": {
                    "cpu": 1,
                    "memory": "2048m"
                }
            },
            "jobManager": {
                "resource": {
                    "cpu": 1,
                    "memory": "2048m"
                }
            }
        }
    }
}
```

**yaml-dedicated-compute-pool - Dedicated Compute Pool (YAML):**

```http
POST /cmf/api/v1/environments/{envName}/compute-pools HTTP/1.1
Host: example.com
Content-Type: application/yaml

{
    "apiVersion": "cmf.confluent.io/v1",
    "kind": "ComputePool",
    "metadata": {
        "name": "staging-pool",
        "labels": {
            "environment": "staging"
        }
    },
    "spec": {
        "type": "DEDICATED",
        "clusterSpec": {
            "flinkVersion": "v1_19",
            "image": "confluentinc/cp-flink-sql:1.19-cp8",
            "flinkConfiguration": {
                "taskmanager.numberOfTaskSlots": "2"
            },
            "taskManager": {
                "resource": {
                    "cpu": 1,
                    "memory": "1024m"
                }
            },
            "jobManager": {
                "resource": {
                    "cpu": 1,
                    "memory": "1024m"
                }
            }
        }
    }
}
```

**yaml-shared-compute-pool - Shared Compute Pool (YAML):**

```http
POST /cmf/api/v1/environments/{envName}/compute-pools HTTP/1.1
Host: example.com
Content-Type: application/yaml

{
    "apiVersion": "cmf.confluent.io/v1",
    "kind": "ComputePool",
    "metadata": {
        "name": "shared-pool-1"
    },
    "spec": {
        "type": "SHARED",
        "state": "RUNNING",
        "clusterSpec": {
            "flinkVersion": "v1_19",
            "image": "confluentinc/cp-flink-sql:1.19-cp8",
            "flinkConfiguration": {
                "taskmanager.numberOfTaskSlots": "2"
            },
            "taskManager": {
                "resource": {
                    "cpu": 1,
                    "memory": "2048m"
                }
            },
            "jobManager": {
                "resource": {
                    "cpu": 1,
                    "memory": "2048m"
                }
            }
        }
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    The Compute Pool was successfully created.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "type": "DEDICATED",
            "state": "RUNNING",
            "clusterSpec": {}
        },
        "status": {
            "phase": "DEDICATED",
            "message": "string",
            "resourceSummary": {
                "jobManager": {
                    "cpu": 1.0,
                    "memory": 1,
                    "count": 1
                },
                "taskManager": {
                    "cpu": 1.0,
                    "memory": 1,
                    "count": 1
                }
            },
            "resources": {
                "applications": {},
                "computePools": {},
                "statements": {}
            },
            "warning": "string"
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    Compute Pool already exists.

    **Example response:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/compute-pools

**Retrieve a paginated list of Compute Pools in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **include-resource-information** (*boolean*) – Whether to include resource summary in the response.
  * **fields** (*string*) – Comma-separated field paths to include in the response. Supports dot notation for nested fields. apiVersion and kind are always included. Example: ?fields=metadata.name,metadata.creationTimestamp,status.phase

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/compute-pools HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Compute Pools found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "creationTimestamp": "string",
                    "updateTimestamp": "string",
                    "uid": "string",
                    "labels": {},
                    "annotations": {}
                },
                "spec": {
                    "type": "DEDICATED",
                    "state": "RUNNING",
                    "clusterSpec": {}
                },
                "status": {
                    "phase": "DEDICATED",
                    "message": "string",
                    "resourceSummary": {
                        "jobManager": {
                            "cpu": 1.0,
                            "memory": 1,
                            "count": 1
                        },
                        "taskManager": {
                            "cpu": 1.0,
                            "memory": 1,
                            "count": 1
                        }
                    },
                    "resources": {
                        "applications": {},
                        "computePools": {},
                        "statements": {}
                    },
                    "warning": "string"
                }
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/compute-pools/{computePoolName}

**Retrieve the Compute Pool of the given name in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **computePoolName** (*string*) – Name of the Compute Pool
* **Query Parameters:**
  * **include-resource-information** (*boolean*) – Whether to include resource summary in the response.

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/compute-pools/{computePoolName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Compute Pool found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "type": "DEDICATED",
            "state": "RUNNING",
            "clusterSpec": {}
        },
        "status": {
            "phase": "DEDICATED",
            "message": "string",
            "resourceSummary": {
                "jobManager": {
                    "cpu": 1.0,
                    "memory": 1,
                    "count": 1
                },
                "taskManager": {
                    "cpu": 1.0,
                    "memory": 1,
                    "count": 1
                }
            },
            "resources": {
                "applications": {},
                "computePools": {},
                "statements": {}
            },
            "warning": "string"
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Compute Pool not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/environments/{envName}/compute-pools/{computePoolName}

**Deletes the ComputePool of the given name in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **computePoolName** (*string*) – Name of the ComputePool
* **Query Parameters:**
  * **force** (*boolean*) – If set to true, the platform deletes the ComputePool from CMF metadata only, without requiring Kubernetes cluster connectivity. For shared compute pools, the session cluster FlinkDeployment might be orphaned. This configuration has no additional effect on dedicated compute pools, which are always metadata-only.
* **Status Codes:**
  * [204 No Content](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5) – Compute Pool was found and deleted.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Compute Pool not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    Compute Pool is in use and cannot be deleted.

    **Example response:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### PUT /cmf/api/v1/environments/{envName}/compute-pools/{computePoolName}

**Updates the compute pool specified using its name and environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **computePoolName** (*string*) – Name of the Compute Pool

**Example request:**

```http
PUT /cmf/api/v1/environments/{envName}/compute-pools/{computePoolName} HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "creationTimestamp": "string",
        "updateTimestamp": "string",
        "uid": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "type": "DEDICATED",
        "state": "RUNNING",
        "clusterSpec": {}
    },
    "status": {
        "phase": "DEDICATED",
        "message": "string",
        "resourceSummary": {
            "jobManager": {
                "cpu": 1.0,
                "memory": 1,
                "count": 1
            },
            "taskManager": {
                "cpu": 1.0,
                "memory": 1,
                "count": 1
            }
        },
        "resources": {
            "applications": {},
            "computePools": {},
            "statements": {}
        },
        "warning": "string"
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Compute Pool was found and updated.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "type": "DEDICATED",
            "state": "RUNNING",
            "clusterSpec": {}
        },
        "status": {
            "phase": "DEDICATED",
            "message": "string",
            "resourceSummary": {
                "jobManager": {
                    "cpu": 1.0,
                    "memory": 1,
                    "count": 1
                },
                "taskManager": {
                    "cpu": 1.0,
                    "memory": 1,
                    "count": 1
                }
            },
            "resources": {
                "applications": {},
                "computePools": {},
                "statements": {}
            },
            "warning": "string"
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Compute Pool not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    The platform cannot update the compute pool. This can happen due to reasons such as statements running on it.

    **Example response:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### POST /cmf/api/v1/catalogs/kafka

**Creates a new Kafka Catalog that can be referenced by Flink Statements**

**basic-kafka-catalog - Basic Kafka Catalog:**

```http
POST /cmf/api/v1/catalogs/kafka HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "cmf.confluent.io/v1",
    "kind": "KafkaCatalog",
    "metadata": {
        "name": "test-cat",
        "labels": {
            "environment": "production",
            "managedBy": "CMF"
        },
        "annotations": {
            "description": "Production Kafka catalog for Flink statements"
        }
    },
    "spec": {
        "srInstance": {
            "connectionConfig": {
                "schema.registry.url": "https://schema-registry.example.com"
            },
            "connectionSecretId": "sr-secret-id"
        }
    }
}
```

**yaml-kafka-catalog - Kafka Catalog (YAML):**

```http
POST /cmf/api/v1/catalogs/kafka HTTP/1.1
Host: example.com
Content-Type: application/yaml

{
    "apiVersion": "cmf.confluent.io/v1",
    "kind": "KafkaCatalog",
    "metadata": {
        "name": "staging-catalog",
        "labels": {
            "environment": "staging"
        }
    },
    "spec": {
        "srInstance": {
            "connectionConfig": {
                "schema.registry.url": "https://sr-staging.example.com"
            },
            "connectionSecretId": "sr-staging-secret"
        }
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    The Kafka Catalog was successfully created.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "srInstance": {
                "connectionConfig": {},
                "connectionSecretId": "string"
            },
            "kafkaClusters": [
                {
                    "databaseName": "string",
                    "connectionConfig": {},
                    "connectionSecretId": "string"
                }
            ]
        },
        "status": {
            "environmentsWithAccess": [
                "string"
            ]
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    Kafka Catalog already exists.

    **Example response:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/catalogs/kafka

**Retrieve a paginated list of Kafka Catalogs**

* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **search** (*string*) – Search term to match against fields specified in searchScope.
    Must be provided together with searchScope.
  * **searchScope** (*string*) – Comma-separated list of fields to search in. Must be provided together with search. Unsupported field names result in a 400 Bad Request.

**Example request:**

```http
GET /cmf/api/v1/catalogs/kafka HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Kafka Catalogs found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "creationTimestamp": "string",
                    "updateTimestamp": "string",
                    "uid": "string",
                    "labels": {},
                    "annotations": {}
                },
                "spec": {
                    "srInstance": {
                        "connectionConfig": {},
                        "connectionSecretId": "string"
                    },
                    "kafkaClusters": [
                        {
                            "databaseName": "string",
                            "connectionConfig": {},
                            "connectionSecretId": "string"
                        }
                    ]
                },
                "status": {
                    "environmentsWithAccess": [
                        "string"
                    ]
                }
            }
        ]
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/catalogs/kafka/{catName}

**Retrieve the Kafka Catalog of the given name.**

* **Parameters:**
  * **catName** (*string*) – Name of the Kafka Catalog

**Example request:**

```http
GET /cmf/api/v1/catalogs/kafka/{catName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Kafka Catalog found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "srInstance": {
                "connectionConfig": {},
                "connectionSecretId": "string"
            },
            "kafkaClusters": [
                {
                    "databaseName": "string",
                    "connectionConfig": {},
                    "connectionSecretId": "string"
                }
            ]
        },
        "status": {
            "environmentsWithAccess": [
                "string"
            ]
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Kafka Catalog not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/catalogs/kafka/{catName}

**Deletes the Kafka Catalog of the given name.**

* **Parameters:**
  * **catName** (*string*) – Name of the Kafka Catalog
* **Status Codes:**
  * [204 No Content](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5) – Kafka Catalog was found and deleted.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Kafka Catalog not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    Catalog contains databases and cannot be deleted.

    **Example response:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### PUT /cmf/api/v1/catalogs/kafka/{catName}

**Updates a KafkaCatalog of the given name.**

* **Parameters:**
  * **catName** (*string*) – Name of the KafkaCatalog

**Example request:**

```http
PUT /cmf/api/v1/catalogs/kafka/{catName} HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "creationTimestamp": "string",
        "updateTimestamp": "string",
        "uid": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "srInstance": {
            "connectionConfig": {},
            "connectionSecretId": "string"
        },
        "kafkaClusters": [
            {
                "databaseName": "string",
                "connectionConfig": {},
                "connectionSecretId": "string"
            }
        ]
    },
    "status": {
        "environmentsWithAccess": [
            "string"
        ]
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – KafkaCatalog was found and updated.
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    KafkaCatalog not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### POST /cmf/api/v1/catalogs/kafka/{catName}/databases

**Creates a new Kafka Database**

* **Parameters:**
  * **catName** (*string*) – Name of the Catalog

**basic-kafka-database - Basic Kafka Database:**

```http
POST /cmf/api/v1/catalogs/kafka/{catName}/databases HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "cmf.confluent.io/v1",
    "kind": "KafkaDatabase",
    "metadata": {
        "name": "dev",
        "labels": {
            "environment": "production",
            "managedBy": "CMF"
        },
        "annotations": {
            "description": "Development Kafka database"
        }
    },
    "spec": {
        "kafkaCluster": {
            "connectionConfig": {
                "bootstrap.servers": "kafka-dev.example.com:9092",
                "security.protocol": "SASL_PLAINTEXT",
                "sasl.mechanism": "PLAIN"
            },
            "connectionSecretId": "dev-secret-id"
        },
        "ddlEnvironments": [
            "production"
        ]
    }
}
```

**yaml-kafka-database - Kafka Database (YAML):**

```http
POST /cmf/api/v1/catalogs/kafka/{catName}/databases HTTP/1.1
Host: example.com
Content-Type: application/yaml

{
    "apiVersion": "cmf.confluent.io/v1",
    "kind": "KafkaDatabase",
    "metadata": {
        "name": "staging",
        "labels": {
            "environment": "staging"
        }
    },
    "spec": {
        "kafkaCluster": {
            "connectionConfig": {
                "bootstrap.servers": "kafka-staging.example.com:9092",
                "security.protocol": "SASL_PLAINTEXT"
            },
            "connectionSecretId": "staging-kafka-secret"
        },
        "ddlEnvironments": [
            "staging"
        ]
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    The Kafka Database was successfully created.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "kafkaCluster": {
                "connectionConfig": {},
                "connectionSecretId": "string"
            },
            "ddlEnvironments": [
                "string"
            ]
        },
        "status": {
            "environmentsWithAccess": [
                "string"
            ]
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    Kafka Database already exists.

    **Example response:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/catalogs/kafka/{catName}/databases

**Retrieve a paginated list of Kafka Databases**

* **Parameters:**
  * **catName** (*string*) – Name of the Catalog
* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)

**Example request:**

```http
GET /cmf/api/v1/catalogs/kafka/{catName}/databases HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Kafka Databases found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "creationTimestamp": "string",
                    "updateTimestamp": "string",
                    "uid": "string",
                    "labels": {},
                    "annotations": {}
                },
                "spec": {
                    "kafkaCluster": {
                        "connectionConfig": {},
                        "connectionSecretId": "string"
                    },
                    "ddlEnvironments": [
                        "string"
                    ]
                },
                "status": {
                    "environmentsWithAccess": [
                        "string"
                    ]
                }
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Kafka Catalog not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/catalogs/kafka/{catName}/databases/{dbName}

**Retrieve the Kafka Database of the given name in the given KafkaCatalog.**

* **Parameters:**
  * **catName** (*string*) – Name of the Kafka Catalog
  * **dbName** (*string*) – Name of the Kafka Database

**Example request:**

```http
GET /cmf/api/v1/catalogs/kafka/{catName}/databases/{dbName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Kafka Database found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "updateTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "kafkaCluster": {
                "connectionConfig": {},
                "connectionSecretId": "string"
            },
            "ddlEnvironments": [
                "string"
            ]
        },
        "status": {
            "environmentsWithAccess": [
                "string"
            ]
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Kafka Database not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/catalogs/kafka/{catName}/databases/{dbName}

**Deletes the Kafka Database of the given name in the given KafkaCatalog.**

* **Parameters:**
  * **catName** (*string*) – Name of the Kafka Catalog
  * **dbName** (*string*) – Name of the Kafka Database
* **Status Codes:**
  * [204 No Content](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5) – Kafka Database was found and deleted.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Kafka Database not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### PUT /cmf/api/v1/catalogs/kafka/{catName}/databases/{dbName}

**Updates a KafkaDatabase of the given name in the given KafkaCatalog.**

* **Parameters:**
  * **catName** (*string*) – Name of the KafkaCatalog
  * **dbName** (*string*) – Name of the KafkaDatabase

**Example request:**

```http
PUT /cmf/api/v1/catalogs/kafka/{catName}/databases/{dbName} HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "creationTimestamp": "string",
        "updateTimestamp": "string",
        "uid": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "kafkaCluster": {
            "connectionConfig": {},
            "connectionSecretId": "string"
        },
        "ddlEnvironments": [
            "string"
        ]
    },
    "status": {
        "environmentsWithAccess": [
            "string"
        ]
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – KafkaDatabase was found and updated.
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    KafkaDatabase not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

#### Savepoints

### POST /cmf/api/v1/environments/{envName}/applications/{appName}/savepoints

**Creates a new Savepoint for the given Application in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **appName** (*string*) – Name of the Application

**Example request:**

```http
POST /cmf/api/v1/environments/{envName}/applications/{appName}/savepoints HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "creationTimestamp": "string",
        "uid": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "path": "string",
        "backoffLimit": 1,
        "formatType": "CANONICAL",
        "pinned": true
    },
    "status": {
        "state": "string",
        "path": "string",
        "triggerTimestamp": "string",
        "resultTimestamp": "string",
        "failures": 1,
        "error": "string",
        "pendingDeletion": true,
        "warning": "string"
    }
}
```

* **Status Codes:**
  * [201 Created](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2) – 

    Savepoint was successfully created.

    **Example response:**
    ```http
    HTTP/1.1 201 Created
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "path": "string",
            "backoffLimit": 1,
            "formatType": "CANONICAL",
            "pinned": true
        },
        "status": {
            "state": "string",
            "source": "MANUAL",
            "path": "string",
            "triggerTimestamp": "string",
            "resultTimestamp": "string",
            "failures": 1,
            "error": "string",
            "pendingDeletion": true,
            "warning": "string"
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Application not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/applications/{appName}/savepoints

**Retrieve a paginated list of all Savepoints for the given Application in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **appName** (*string*) – Name of the Application
* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **fields** (*string*) – Comma-separated field paths to include in the response. Supports dot notation for nested fields. apiVersion and kind are always included. Example: ?fields=metadata.name,metadata.creationTimestamp,status.phase

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/applications/{appName}/savepoints HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Savepoints found and returned. In case, there are no savepoints, an empty list is returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "creationTimestamp": "string",
                    "uid": "string",
                    "labels": {},
                    "annotations": {}
                },
                "spec": {
                    "path": "string",
                    "backoffLimit": 1,
                    "formatType": "CANONICAL",
                    "pinned": true
                },
                "status": {
                    "state": "string",
                    "source": "MANUAL",
                    "path": "string",
                    "triggerTimestamp": "string",
                    "resultTimestamp": "string",
                    "failures": 1,
                    "error": "string",
                    "pendingDeletion": true,
                    "warning": "string"
                }
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Application not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/environments/{envName}/applications/{appName}/savepoints

**Bulk-delete Savepoints for the given Application filtered by source and age.**

* **Parameters:**
  * **envName** (*string*)
  * **appName** (*string*)
* **Query Parameters:**
  * **source** (*string*) – Required. Only Savepoints with this source are deleted.
    (Required)
  * **olderThanDays** (*integer*) – Only delete Savepoints older than this many days. Mutually exclusive with olderThanHours.
  * **olderThanHours** (*integer*) – Only delete Savepoints older than this many hours. Mutually exclusive with olderThanDays.
  * **force** (*boolean*) – Force-delete even if the backing Kubernetes cluster is unavailable.
* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Bulk delete completed. Returned when zero Savepoints matched the filter
    (deletedCount=0), and on partial failure (deletedCount>0 with a non-empty failures
    list). Pinned Savepoints are never deleted by bulk delete; they are excluded from the
    candidate set and appear in neither deletedCount nor failures. Only an all-failed
    outcome maps to an error status (409 when the cluster is not ready, 500 otherwise).

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "deletedCount": 1,
        "failedCount": 1,
        "failures": [
            {
                "name": "string",
                "reason": "string"
            }
        ]
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Application not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    Kubernetes cluster is not ready and force was not set.

    **Example response:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/applications/{appName}/savepoints/{savepointName}

**Retrieve the Savepoint of the given name for the given Application in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **appName** (*string*) – Name of the Application
  * **savepointName** (*string*) – Name of the Savepoint

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/applications/{appName}/savepoints/{savepointName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Savepoint found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "path": "string",
            "backoffLimit": 1,
            "formatType": "CANONICAL",
            "pinned": true
        },
        "status": {
            "state": "string",
            "source": "MANUAL",
            "path": "string",
            "triggerTimestamp": "string",
            "resultTimestamp": "string",
            "failures": 1,
            "error": "string",
            "pendingDeletion": true,
            "warning": "string"
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment, Application or Savepoint not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### PUT /cmf/api/v1/environments/{envName}/applications/{appName}/savepoints/{savepointName}

**Update mutable fields on a Savepoint.**

Currently only spec.pinned is honored; all other fields in the request body
are ignored. metadata.name in the request body, when present, must match the
resource name in the URL path.

* **Parameters:**
  * **envName** (*string*)
  * **appName** (*string*)
  * **savepointName** (*string*)

**Example request:**

```http
PUT /cmf/api/v1/environments/{envName}/applications/{appName}/savepoints/{savepointName} HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "creationTimestamp": "string",
        "uid": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "path": "string",
        "backoffLimit": 1,
        "formatType": "CANONICAL",
        "pinned": true
    },
    "status": {
        "state": "string",
        "path": "string",
        "triggerTimestamp": "string",
        "resultTimestamp": "string",
        "failures": 1,
        "error": "string",
        "pendingDeletion": true,
        "warning": "string"
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Savepoint updated and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "path": "string",
            "backoffLimit": 1,
            "formatType": "CANONICAL",
            "pinned": true
        },
        "status": {
            "state": "string",
            "source": "MANUAL",
            "path": "string",
            "triggerTimestamp": "string",
            "resultTimestamp": "string",
            "failures": 1,
            "error": "string",
            "pendingDeletion": true,
            "warning": "string"
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment, Application or Savepoint not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/environments/{envName}/applications/{appName}/savepoints/{savepointName}

**Deletes the Savepoint of the given name for the given Application in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **appName** (*string*) – Name of the Application
  * **savepointName** (*string*) – Name of the Savepoint to be deleted.
* **Query Parameters:**
  * **force** (*boolean*) – If a Savepoint is marked for deletion, it can be force deleted.
* **Status Codes:**
  * [204 No Content](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5) – Savepoint was found and deleted.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment, Application or Savepoint not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### POST /cmf/api/v1/environments/{envName}/applications/{appName}/savepoints/{savepointName}/detach

**Detaches the Savepoint of the given name for the given Application in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **appName** (*string*) – Name of the Application
  * **savepointName** (*string*) – Name of the Savepoint to be detached.
* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Savepoint was successfully detached and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "path": "string",
            "backoffLimit": 1,
            "formatType": "CANONICAL",
            "pinned": true
        },
        "status": {
            "state": "string",
            "source": "MANUAL",
            "path": "string",
            "triggerTimestamp": "string",
            "resultTimestamp": "string",
            "failures": 1,
            "error": "string",
            "pendingDeletion": true,
            "warning": "string"
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment, Application or Savepoint not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### POST /cmf/api/v1/environments/{envName}/statements/{stmtName}/savepoints

**Creates a new Savepoint for the given Statement in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **stmtName** (*string*) – Name of the Statement

**Example request:**

```http
POST /cmf/api/v1/environments/{envName}/statements/{stmtName}/savepoints HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "creationTimestamp": "string",
        "uid": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "path": "string",
        "backoffLimit": 1,
        "formatType": "CANONICAL",
        "pinned": true
    },
    "status": {
        "state": "string",
        "path": "string",
        "triggerTimestamp": "string",
        "resultTimestamp": "string",
        "failures": 1,
        "error": "string",
        "pendingDeletion": true,
        "warning": "string"
    }
}
```

* **Status Codes:**
  * [201 Created](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2) – 

    Savepoint was successfully created.

    **Example response:**
    ```http
    HTTP/1.1 201 Created
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "path": "string",
            "backoffLimit": 1,
            "formatType": "CANONICAL",
            "pinned": true
        },
        "status": {
            "state": "string",
            "source": "MANUAL",
            "path": "string",
            "triggerTimestamp": "string",
            "resultTimestamp": "string",
            "failures": 1,
            "error": "string",
            "pendingDeletion": true,
            "warning": "string"
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Statement not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/statements/{stmtName}/savepoints

**Retrieve a paginated list of all Savepoints for the given Statement in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **stmtName** (*string*) – Name of the Statement
* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **fields** (*string*) – Comma-separated field paths to include in the response. Supports dot notation for nested fields. apiVersion and kind are always included. Example: ?fields=metadata.name,metadata.creationTimestamp,status.phase

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/statements/{stmtName}/savepoints HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Savepoints found and returned. In case, there are no savepoints, an empty list is returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "creationTimestamp": "string",
                    "uid": "string",
                    "labels": {},
                    "annotations": {}
                },
                "spec": {
                    "path": "string",
                    "backoffLimit": 1,
                    "formatType": "CANONICAL",
                    "pinned": true
                },
                "status": {
                    "state": "string",
                    "source": "MANUAL",
                    "path": "string",
                    "triggerTimestamp": "string",
                    "resultTimestamp": "string",
                    "failures": 1,
                    "error": "string",
                    "pendingDeletion": true,
                    "warning": "string"
                }
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Statement not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/environments/{envName}/statements/{stmtName}/savepoints

**Bulk-delete Savepoints for the given Statement filtered by source and age.**

* **Parameters:**
  * **envName** (*string*)
  * **stmtName** (*string*)
* **Query Parameters:**
  * **source** (*string*) – Required. Only Savepoints with this source are deleted.
    (Required)
  * **olderThanDays** (*integer*) – Only delete Savepoints older than this many days. Mutually exclusive with olderThanHours.
  * **olderThanHours** (*integer*) – Only delete Savepoints older than this many hours. Mutually exclusive with olderThanDays.
  * **force** (*boolean*) – Force-delete even if the backing Kubernetes cluster is unavailable.
* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Bulk delete completed. Returned when zero Savepoints matched the filter
    (deletedCount=0), and on partial failure (deletedCount>0 with a non-empty failures
    list). Pinned Savepoints are never deleted by bulk delete; they are excluded from the
    candidate set and appear in neither deletedCount nor failures. Only an all-failed
    outcome maps to an error status (409 when the cluster is not ready, 500 otherwise).

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "deletedCount": 1,
        "failedCount": 1,
        "failures": [
            {
                "name": "string",
                "reason": "string"
            }
        ]
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment or Statement not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    Kubernetes cluster is not ready and force was not set.

    **Example response:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/environments/{envName}/statements/{stmtName}/savepoints/{savepointName}

**Retrieve the Savepoint of the given name for the given Statement in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **stmtName** (*string*) – Name of the Statement
  * **savepointName** (*string*) – Name of the Savepoint

**Example request:**

```http
GET /cmf/api/v1/environments/{envName}/statements/{stmtName}/savepoints/{savepointName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Savepoint found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "path": "string",
            "backoffLimit": 1,
            "formatType": "CANONICAL",
            "pinned": true
        },
        "status": {
            "state": "string",
            "source": "MANUAL",
            "path": "string",
            "triggerTimestamp": "string",
            "resultTimestamp": "string",
            "failures": 1,
            "error": "string",
            "pendingDeletion": true,
            "warning": "string"
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment, Statement or Savepoint not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### PUT /cmf/api/v1/environments/{envName}/statements/{stmtName}/savepoints/{savepointName}

**Update mutable fields on a Savepoint.**

Currently only spec.pinned is honored; all other fields in the request body
are ignored. metadata.name in the request body, when present, must match the
resource name in the URL path.

* **Parameters:**
  * **envName** (*string*)
  * **stmtName** (*string*)
  * **savepointName** (*string*)

**Example request:**

```http
PUT /cmf/api/v1/environments/{envName}/statements/{stmtName}/savepoints/{savepointName} HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "creationTimestamp": "string",
        "uid": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "path": "string",
        "backoffLimit": 1,
        "formatType": "CANONICAL",
        "pinned": true
    },
    "status": {
        "state": "string",
        "path": "string",
        "triggerTimestamp": "string",
        "resultTimestamp": "string",
        "failures": 1,
        "error": "string",
        "pendingDeletion": true,
        "warning": "string"
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Savepoint updated and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "path": "string",
            "backoffLimit": 1,
            "formatType": "CANONICAL",
            "pinned": true
        },
        "status": {
            "state": "string",
            "source": "MANUAL",
            "path": "string",
            "triggerTimestamp": "string",
            "resultTimestamp": "string",
            "failures": 1,
            "error": "string",
            "pendingDeletion": true,
            "warning": "string"
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment, Statement or Savepoint not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/environments/{envName}/statements/{stmtName}/savepoints/{savepointName}

**Deletes the Savepoint of the given name for the given Statement in the given Environment.**

* **Parameters:**
  * **envName** (*string*) – Name of the Environment
  * **stmtName** (*string*) – Name of the Statement
  * **savepointName** (*string*) – Name of the Savepoint to be deleted.
* **Query Parameters:**
  * **force** (*boolean*) – If a Savepoint is marked for deletion, it can be force deleted.
* **Status Codes:**
  * [204 No Content](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5) – Savepoint was found and deleted.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Environment, Statement or Savepoint not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

#### KubernetesClusters

### GET /cmf/api/v1/kubernetes-clusters

**Retrieve a list of all registered Kubernetes clusters.**

* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **fields** (*string*) – Comma-separated field paths to include in the response. Supports dot notation for nested fields. apiVersion and kind are always included. Example: ?fields=metadata.name,metadata.creationTimestamp,status.phase

**Example request:**

```http
GET /cmf/api/v1/kubernetes-clusters HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    List of Kubernetes clusters. If no clusters are found, an empty list is returned.

    **clusters-list - List of Kubernetes clusters:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "metadata": {
            "size": 2
        },
        "items": [
            {
                "apiVersion": "cmf.confluent.io/v1",
                "kind": "KubernetesCluster",
                "metadata": {
                    "name": "default-k8s-cluster",
                    "creationTimestamp": "2026-01-10T08:00:00Z",
                    "updateTimestamp": "2026-02-16T10:30:00Z",
                    "labels": {
                        "env": "production",
                        "region": "us-east-1"
                    }
                },
                "spec": {
                    "lifecycleState": "ACTIVE"
                },
                "status": {
                    "state": "CONNECTED",
                    "lastHeartbeatTimestamp": "2026-02-16T10:30:00Z"
                }
            },
            {
                "apiVersion": "cmf.confluent.io/v1",
                "kind": "KubernetesCluster",
                "metadata": {
                    "name": "azure-k8s-cluster",
                    "creationTimestamp": "2026-02-01T12:00:00Z",
                    "updateTimestamp": "2026-02-16T10:30:00Z",
                    "labels": {
                        "env": "production",
                        "region": "westeurope",
                        "provider": "azure"
                    }
                },
                "spec": {
                    "lifecycleState": "ACTIVE"
                },
                "status": {
                    "state": "CONNECTED",
                    "lastHeartbeatTimestamp": "2026-02-16T10:30:00Z"
                }
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/kubernetes-clusters/{kubernetesClusterName}

**Retrieve a Kubernetes cluster by name.**

* **Parameters:**
  * **kubernetesClusterName** (*string*) – Name of the Kubernetes cluster

**Example request:**

```http
GET /cmf/api/v1/kubernetes-clusters/{kubernetesClusterName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Kubernetes cluster found and returned.

    **connected-cluster - Connected Kubernetes cluster:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "cmf.confluent.io/v1",
        "kind": "KubernetesCluster",
        "metadata": {
            "name": "azure-k8s-cluster",
            "creationTimestamp": "2026-02-01T12:00:00Z",
            "updateTimestamp": "2026-02-16T10:30:00Z",
            "labels": {
                "env": "production",
                "region": "westeurope",
                "provider": "azure"
            }
        },
        "spec": {
            "lifecycleState": "ACTIVE"
        },
        "status": {
            "state": "CONNECTED",
            "lastHeartbeatTimestamp": "2026-02-16T10:30:00Z"
        }
    }
    ```

    **disconnected-cluster - Disconnected Kubernetes cluster:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "cmf.confluent.io/v1",
        "kind": "KubernetesCluster",
        "metadata": {
            "name": "gcp-k8s-cluster",
            "creationTimestamp": "2026-02-01T12:00:00Z",
            "updateTimestamp": "2026-02-15T08:00:00Z",
            "labels": {
                "env": "staging",
                "region": "us-central1",
                "provider": "gcp"
            }
        },
        "spec": {
            "lifecycleState": "ACTIVE"
        },
        "status": {
            "state": "DISCONNECTED",
            "message": "Failed to connect to cluster: connection timed out",
            "lastHeartbeatTimestamp": "2026-02-15T08:00:00Z"
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Kubernetes cluster not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### PUT /cmf/api/v1/kubernetes-clusters/{kubernetesClusterName}

**Update a Kubernetes cluster (lifecycle state, labels, annotations).**

* **Parameters:**
  * **kubernetesClusterName** (*string*) – Name of the Kubernetes cluster

**decommission - Decommission a cluster:**

```http
PUT /cmf/api/v1/kubernetes-clusters/{kubernetesClusterName} HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "spec": {
        "lifecycleState": "DECOMMISSIONED"
    }
}
```

**recommission - Recommission a cluster:**

```http
PUT /cmf/api/v1/kubernetes-clusters/{kubernetesClusterName} HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "spec": {
        "lifecycleState": "ACTIVE"
    }
}
```

**update-labels - Update cluster labels:**

```http
PUT /cmf/api/v1/kubernetes-clusters/{kubernetesClusterName} HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "metadata": {
        "name": "azure-k8s-cluster",
        "labels": {
            "env": "production",
            "region": "westeurope"
        }
    }
}
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    The Kubernetes cluster was successfully updated.

    **decommissioned-cluster - Decommissioned cluster:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "cmf.confluent.io/v1",
        "kind": "KubernetesCluster",
        "metadata": {
            "name": "azure-k8s-cluster",
            "creationTimestamp": "2026-02-01T12:00:00Z",
            "updateTimestamp": "2026-02-16T11:00:00Z",
            "labels": {
                "env": "production",
                "region": "westeurope",
                "provider": "azure"
            }
        },
        "spec": {
            "lifecycleState": "DECOMMISSIONED"
        },
        "status": {
            "state": "DECOMMISSIONED"
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request. Validation failed (e.g., spec.lifecycleState is missing or invalid).

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Kubernetes cluster not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [409 Conflict](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10) – 

    Conflict. The cluster cannot be decommissioned because it is still referenced by environments.

    **environments-exist - Cluster has active environments:**
    ```http
    HTTP/1.1 409 Conflict
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "Kubernetes cluster 'azure-k8s-cluster' cannot be decommissioned because it is referenced by environments: [prod-azure, staging-azure]. Delete these environments first."
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

#### DetachedSavepoints

### POST /cmf/api/v1/detached-savepoints

**Creates a new detached savepoint.**

**Example request:**

```http
POST /cmf/api/v1/detached-savepoints HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "apiVersion": "string",
    "kind": "string",
    "metadata": {
        "name": "string",
        "creationTimestamp": "string",
        "uid": "string",
        "labels": {},
        "annotations": {}
    },
    "spec": {
        "path": "string",
        "backoffLimit": 1,
        "formatType": "CANONICAL",
        "pinned": true
    },
    "status": {
        "state": "string",
        "path": "string",
        "triggerTimestamp": "string",
        "resultTimestamp": "string",
        "failures": 1,
        "error": "string",
        "pendingDeletion": true,
        "warning": "string"
    }
}
```

* **Status Codes:**
  * [201 Created](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2) – 

    Detached savepoint was successfully created and returned.

    **Example response:**
    ```http
    HTTP/1.1 201 Created
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "path": "string",
            "backoffLimit": 1,
            "formatType": "CANONICAL",
            "pinned": true
        },
        "status": {
            "state": "string",
            "source": "MANUAL",
            "path": "string",
            "triggerTimestamp": "string",
            "resultTimestamp": "string",
            "failures": 1,
            "error": "string",
            "pendingDeletion": true,
            "warning": "string"
        }
    }
    ```
  * [400 Bad Request](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) – 

    Bad request.

    **Example response:**
    ```http
    HTTP/1.1 400 Bad Request
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [422 Unprocessable Entity](https://www.rfc-editor.org/rfc/rfc4918#section-11.2) – 

    Request valid but invalid content.

    **Example response:**
    ```http
    HTTP/1.1 422 Unprocessable Entity
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/detached-savepoints

**Retrieve a paginated list of all detached savepoints.**

* **Query Parameters:**
  * **page** (*integer*) – Zero-based page index (0..N)
  * **size** (*integer*) – The size of the page to be returned
  * **sort** (*array*) – Sorting criteria in the format: property,(asc|desc). Default sort order is ascending.
    Multiple sort criteria are supported.
  * **filter** (*string*) – Comma-separated filter expressions. Supports name, label, state, phase, type, cluster status, and source filtering. Example: ?filter=name=prod\*,state in (RUNNING, FAILED)
  * **fields** (*string*) – Comma-separated field paths to include in the response. Supports dot notation for nested fields. apiVersion and kind are always included. Example: ?fields=metadata.name,metadata.creationTimestamp,status.phase
  * **name** (*string*) – Filter by detached savepoint name prefix (e.g. ?name=abc)

**Example request:**

```http
GET /cmf/api/v1/detached-savepoints HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Detached savepoints found and returned. In case there are none, an empty list is returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "pageable": {
            "page": 1,
            "size": 1,
            "sort": {
                "sorted": true,
                "unsorted": true,
                "empty": true
            }
        },
        "metadata": {
            "size": 1
        },
        "items": [
            {
                "apiVersion": "string",
                "kind": "string",
                "metadata": {
                    "name": "string",
                    "creationTimestamp": "string",
                    "uid": "string",
                    "labels": {},
                    "annotations": {}
                },
                "spec": {
                    "path": "string",
                    "backoffLimit": 1,
                    "formatType": "CANONICAL",
                    "pinned": true
                },
                "status": {
                    "state": "string",
                    "source": "MANUAL",
                    "path": "string",
                    "triggerTimestamp": "string",
                    "resultTimestamp": "string",
                    "failures": 1,
                    "error": "string",
                    "pendingDeletion": true,
                    "warning": "string"
                }
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/detached-savepoints/{detachedSavepointName}

**Retrieve the detached savepoint of the given name.**

* **Parameters:**
  * **detachedSavepointName** (*string*) – Name of the detached savepoint

**Example request:**

```http
GET /cmf/api/v1/detached-savepoints/{detachedSavepointName} HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Detached savepoint found and returned.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "apiVersion": "string",
        "kind": "string",
        "metadata": {
            "name": "string",
            "creationTimestamp": "string",
            "uid": "string",
            "labels": {},
            "annotations": {}
        },
        "spec": {
            "path": "string",
            "backoffLimit": 1,
            "formatType": "CANONICAL",
            "pinned": true
        },
        "status": {
            "state": "string",
            "source": "MANUAL",
            "path": "string",
            "triggerTimestamp": "string",
            "resultTimestamp": "string",
            "failures": 1,
            "error": "string",
            "pendingDeletion": true,
            "warning": "string"
        }
    }
    ```
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Detached savepoint not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### DELETE /cmf/api/v1/detached-savepoints/{detachedSavepointName}

**Deletes the detached savepoint of the given name.**

* **Parameters:**
  * **detachedSavepointName** (*string*) – Name of the detached savepoint
* **Status Codes:**
  * [204 No Content](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5) – Detached savepoint was found and deleted.
  * [404 Not Found](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) – 

    Detached savepoint not found.

    **Example response:**
    ```http
    HTTP/1.1 404 Not Found
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

#### CMFInformation

### GET /cmf/api/v1/system-information

**Retrieve system information about the CMF deployment.**

**Example request:**

```http
GET /cmf/api/v1/system-information HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    System information retrieved successfully.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "status": {
            "version": "string",
            "revision": "string"
        }
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

### GET /cmf/api/v1/resource-information

**Retrieve resource information about the CMF deployment.**

**Example request:**

```http
GET /cmf/api/v1/resource-information HTTP/1.1
Host: example.com
```

* **Status Codes:**
  * [200 OK](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) – 

    Resource information retrieved successfully.

    **Example response:**
    ```http
    HTTP/1.1 200 OK
    Content-Type: application/json

    {
        "status": {
            "resources": {
                "environments": 1,
                "applications": {},
                "computePools": 1,
                "statements": {},
                "secrets": 1,
                "catalogs": 1,
                "savepoints": 1,
                "detachedSavepoints": 1,
                "kubernetesClusters": {}
            },
            "resourceSummary": {
                "cpu": 1.0,
                "memory": 1
            }
        }
    }
    ```
  * [500 Internal Server Error](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) – 

    Server error.

    **Example response:**
    ```http
    HTTP/1.1 500 Internal Server Error
    Content-Type: application/json

    {
        "errors": [
            {
                "message": "string"
            }
        ]
    }
    ```

## Troubleshooting

- **Resource not found**: If you encounter the error *Resource not found…* when making a GET call, it may be due to the wrong URL. Specifically, the requested REST resource might not exist.

  For example:
  - When making the GET call:
    ```http
    GET http://localhost:8080/hello
    ```

    You will receive the error:
    ```text
    Resource not found: [hello]
    ```
  - Similarly, if you make the GET call:
    ```http
    GET http://localhost:8080/ or GET http://localhost:8080
    ```

    You will receive the error:
    ```text
    Resource not found: []
    ```

    This occurs because you are requesting an empty resource.

## Related content

- [CLI Operations for Confluent Manager for Apache Flink](cli.md#cmf-flink-cli)
- [Confluent CLI](https://docs.confluent.io/confluent-cli/current/command-reference/flink/index.html)
- [Confluent for Kubernetes](https://docs.confluent.io/operator/current/co-flink-overview.html)
