# Confluent Cloud APIs

# Introduction

> **Note:**
> This documents the collection of Confluent Cloud APIs. Each API documents its
> [lifecycle phase](#api-lifecycle-policy). APIs
> marked as Early Access or Preview are not ready for production usage. We're currently
> working with a select group of customers to get feedback and iterate on these APIs.

Confluent Cloud APIs are a core building block of Confluent Cloud. You can use the APIs to
manage your own account or to integrate Confluent into your product.

Most of the APIs are organized around
[REST](http://en.wikipedia.org/wiki/Representational_State_Transfer)
and the resources which make up Confluent Cloud. The APIs have predictable
resource-oriented URLs, transport data using JSON, and use standard HTTP verbs,
response codes, authentication, and design principles.

## Object Model

> **Note:**
> This section describes the object model for many Confluent Cloud APIs, but not all.
> The Connect v1 API group has a different object model. You can review the example
> request and response bodies in [Connect v1 API](../ccloud/connectors-connect-v-1/)
> to see its object model.

Confluent Cloud APIs are primarily designed to be declarative and intent-oriented. In other words,
tell the API what you want (for example, throughput or SLOs) and it will figure out how to make it happen
(for example, cluster sizing). A Confluent object acts as a "record of intent" — after you create the
object, Confluent Cloud will work tirelessly in the background to ensure that the object exists
as specified.

Confluent APIs represent objects in JSON with media-type `application/json`.

Many objects follow a model consisting of `spec` and `status`. An object's `spec` tells
Confluent the _desired state_ (specification) of the resource. The object may not be
immediately available or changes may not be immediately applied. For this reason,
many objects also have a `status` property that provides info about the
_current state_ of the resource. Confluent Cloud is continuously and actively managing
each resource's current state to match it's desired state.

All Confluent objects share a set of common properties:

- **api_version** – API objects have an `api_version` field indicating their API version.
- **kind** – API objects have a `kind` field indicating the kind of object it is.
- **id** – Each object in the API will have an identifier, indicated via its `id` field,
  and should be treated as an opaque string unless otherwise specified.

There are a number of other [standard properties](#standard-properties) and that you'll encounter
used by many API objects. And of course, objects have plenty of non-standard fields that are
specific to each object _kind_... this is what makes them interesting!

# Authentication

Confluent uses API keys and JSON Web Tokens (JWTs) to integrate your applications
and workflows to your Confluent Cloud resources using the Confluent Cloud REST APIs.
Your applications and workflows must be authenticated and authorized in order to
access and manage Confluent Cloud resources.

## API keys

You can create and manage your API keys using the Confluent Cloud Console or
Confluent CLI. For more information, see [Use API Keys to Control Access in Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/authenticate/api-keys/api-keys.html).

Confluent Cloud uses the following categories of API keys:

- A **Cloud API key** grants access to the Confluent Cloud Management APIs,
  such as for Provisioning and Metrics integrations.
- A **resource-specific API key** grants access to a single Confluent Cloud
  resource, such as a Kafka cluster or a Schema Registry. For the full list of
  resource scopes, see [Resource scopes](https://docs.confluent.io/cloud/current/access-management/authenticate/api-keys/api-keys.html#resource-scopes).
- A **global API key** grants access across Confluent Cloud services and
  resources, based on the permissions assigned to the owning principal. Some
  limitations apply. For more information, see
  [Global API keys](https://docs.confluent.io/cloud/current/access-management/authenticate/api-keys/api-keys.html#cloud-global-api-keys).

Each Confluent Cloud API key is associated with a principal (specific user or
service account) and inherits the permissions granted to the owner.

- For example, if service account `Armageddon` is granted ACLs on Kafka cluster
  `neptune`, then a Kafka API Key for `neptune` owned by `Armageddon` will have
  these ACLs enforced.
- **Note:** API keys are automatically deleted when the associated user or service
  account is deleted (for example, when an employee leaves the company or moves to
  a new department and an SSO integration removes the Confluent Cloud user as they
  no longer require access).
- Confluent **strongly recommends** that you use service accounts for all
  production-critical access.

Confluent Cloud API keys grant access to Confluent Cloud resources, so **keep them secure**!
Do not share your API keys and secrets in publicly-accessible locations, such as
GitHub or client-side code.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail.
API requests without authentication will also fail.

To use an API key, you must send it in an `Authorization: Basic {credentials}` header.
Remember that HTTP Basic authentication requires you to provide your credentials as
the API key ID and associated API secret separated by a colon and encoded using Base64
format. For example, if your API key ID is `ABCDEFGH123456789` and the API key Secret
is `XNCIW93I2L1SQPJSJ823K1LS902KLDFMCZPWEO`, then the authorization header is:

```text​
Authorization: Basic QUJDREVGR0gxMjM0NTY3ODk6WE5DSVc5M0kyTDFTUVBKU0o4MjNLMUxTOTAyS0xERk1DWlBXRU8=
```

You can generate this header example from the API key:

macOS:

```shell
$ echo -n "ABCDEFGH123456789:XNCIW93I2L1SQPJSJ823K1LS902KLDFMCZPWEO" | base64

```

Linux:

```shell
$ echo -n "ABCDEFGH123456789:XNCIW93I2L1SQPJSJ823K1LS902KLDFMCZPWEO" | base64 -w 0
```

Windows (PowerShell only):

This command is only supported for PowerShell and will not work in the Command shell. 

```shell
$ [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("ABCDEFGH123456789:XNCIW93I2L1SQPJSJ823K1LS902KLDFMCZPWEO"))
```

To find out if an API operation supports Cloud API Keys, look in the **AUTHORIZATIONS**
listing for `cloud-api-key`.

To find out if an API operation supports resource-specific API Keys, look in the **AUTHORIZATIONS**
listing for `resource-api-key`.

To find out if an API operation supports Global API Keys, look in the **AUTHORIZATIONS**
listing for `global-api-key`.

## External OAuth

You can use [OAuth/OIDC support for Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/overview.html)
to authenticate and authorize access to applications and workloads for the
following Confluent Cloud REST APIs:

- **Kafka REST API**: [Kafka REST API for Clusters(V3)](../ccloud/cluster-v-3/).
  For an API overview and examples, see [Cluster Management with Kafka REST API](https://docs.confluent.io/cloud/current/kafka-rest/kafka-rest-cc.html).
- **Schema Registry REST API**: [Schema Registry REST API for Schemas(V1)](../ccloud/schemas-v-1/)
  and [Subjects](../ccloud/subjects-v-1/).
  For an API overview and examples, see [Schema Registry REST API for Confluent Cloud](https://docs.confluent.io/cloud/current/sr/sr-rest-apis.html).

Alternatively, to find out if an API operation supports external tokens, look in the **AUTHORIZATIONS**
listing for `external-access-token`.

## Confluent STS tokens

Confluent Security Token Service (STS) issues access tokens (`confluent-sts-access-token`)
by exchanging an external token (`external-access-token`) for a `confluent-sts-access-token`. You can use
Confluent STS tokens to authenticate to Confluent Cloud APIs that support the
`confluent-sts-access-token` notation.

To find out if an API operation supports Confluent STS tokens, look in the **AUTHORIZATIONS**
listing for `confluent-sts-access-token`.

## Partner OAuth

Approved partners can fetch Partner tokens (`confluent-partner-access-token`) that validate their identity
and grant access to the Partner API (`partner/v2`), which lets them sign up
an organization on behalf of a customer, manage entitlements (create, read, and list),
and read or list organizations they have signed up.

To find out an API operation supports Partner tokens, look in the **AUTHORIZATIONS**
listing for `confluent-partner-access-token`.

### Security schemes

- **`cloud-api-key`** — type: `http`, scheme: `basic`
  Authenticate with Cloud API Keys using HTTP Basic Auth. Treat the Cloud API Key ID as the username and Cloud API Key Secret as the password.
- **`confluent-sts-access-token`** — type: `oauth2`
  Authenticate with Confluent API using this credentials (JSON Web Tokens) following OAuth 2.0.
  - flow: `clientCredentials` · tokenUrl: `https://api.confluent.cloud/sts/v1/oauth2/token`
- **`global-api-key`** — type: `http`, scheme: `basic`
  Authenticate with Global API Keys using HTTP Basic Auth. Treat the Global API Key ID as the username and Global API Key Secret as the password.
- **`resource-api-key`** — type: `http`, scheme: `basic`
  Authenticate with resource-specific API Keys using HTTP Basic Auth. Treat the resource-specific API Key ID as the username and resource-specific API Key Secret as the password.
- **`external-access-token`** — type: `oauth2`
  Authenticate with Confluent API using this credentials (JSON Web Tokens) following OAuth 2.0.
  - flow: `clientCredentials` · tokenUrl: `https://api.confluent.cloud/sts/v1/oauth2/token`
- **`oauth`** — type: `oauth2`
  Authenticate with OAuth 2.0. Currently this is only supported for partner APIs.
  - flow: `clientCredentials` · tokenUrl: `/oauth2/token` · scopes: `partner:alter`, `partner:create`, `partner:delete`, `partner:describe`

# Errors

Confluent API error messages are a critical part of the developer experience. For Confluent Cloud, they must be
clear, consistent, actionable, and designed for both developers and automated systems. Strong error
handling supports fast troubleshooting, reliable integration, and efficient support–the foundation of
a positive developer experience.

Our APIs are built on RESTful principles. They use resource-oriented URLs, standard HTTP verbs, and JSON
for requests and responses. This section defines clear standards for structuring, formatting, and documenting
error messages for all Confluent REST APIs.

> **Note:**
> This error format applies to most Confluent Cloud APIs. However, the Connect v1 API group uses a different structure. For Connect v1-specific error behavior and examples, refer to the Connect v1 API documentation [below](../ccloud/connectors-connect-v-1/) to see its error behavior.

## Key principles

Use the following best practices when designing and documenting API error messages:

- **Ensure clarity and consistency**: Messages must be easy to understand–use active voice and plain language–and consistently formatted across endpoints.

- **Write actionable messages**: Always include a resolution or next step, enabling users to correct the problem.

- **Avoid exposing sensitive data**: Never expose internal system details, stack traces, logs, or user-specific content.

- **Follow industry best practices**: Don't use a period at the end of the message field, even if it is a full sentence. This follows industry standards. Use periods in the details and suggestion fields if the content is a complete sentence. View the [API best practices blog](#status-codes) by Postman, a trusted API leader.

## HTTP status codes

Confluent Cloud APIs return standard [HTTP status codes](#status-codes) to
indicate the outcome of API request. Each error response includes a `status` field that reflects the appropriate HTTP code as a string (for example, `"403"` or `"404"`).
For a list of supported codes and their meaning, see the [HTTP status codes](#status-codes) section.

## Error response structure

Each API error response **should** include the following fields:

**Top-level fields**

| Field        | Type   | Required | Description                                                                                                                                             |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| status       | String | Yes      | HTTP status code (for example, 400, 404, 500).                                                                                                          |
| error        | Object | Yes      | Main object containing error details.                                                                                                                   |
| requestId    | String | Optional | Unique identifier for the API request. Use for tracing, debugging, and support inquiries.                                                               |
| doc_url      | String | Optional | Link to relevant documentation or troubleshooting steps.                                                                                                |

**Fields inside `error` object**

| Field       | Type   | Required | Description                                                                                                                                             |
| ------------| ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|  code       | String | Yes      | Unique, application-specific error code. Write error codes in uppercase letters, using underscores to separate words (for example, RESOURCE_NOT_FOUND). |
|  message    | String | Yes      | Clear, actionable, user-friendly description of what went wrong using active voice.                                                                     |
|  details    | String | Optional | Additional explanation or context about the error using active voice.                                                                                   |
|  timestamp  | String | Yes      | ISO 8601 UTC timestamp indicating the date and time when the error occurred.                                                                            |
|  path       | String | Yes      | The exact API endpoint or resource path related to the error.                                                                                           |
|  suggestion | String | Optional | Recommend actions the user can take to fix or avoid the error using active voice.                                                                       |

Each Confluent API error includes a status and a structured error object with a code, message, and optional context to help you understand and resolve the issue. The following example
shows a standard Confluent API error response in JSON format:

    {
      "status": 400,
      "error": {
        "code": "INVALID_SCHEMA_FIELD",
        "message": "The 'name' field in the schema is required and cannot be empty.",
        "details": "Schemas must include a top-level 'name' field with a non-empty string value.",
        "timestamp": "2025-08-01T20:36:45Z",
        "path": "/api/v1/schemas",
        "suggestion": "Ensure the 'name' field is included in the payload and is not an empty string."
      },
      "requestId": "a1b2c3d4-e5f6-7890-g1h2-i3j4k516m7n8",
      "doc_url": "https://docs.confluent.io/cloud/current/api/errors/INVALID_SCHEMA_FIELD.html"
    }

Note that if a request fails validation, it will return an HTTP `422 Unprocessable Entity`
with a list of fields that failed validation.

## Pagination

> **Note:**
> This section describes the pagination behavior of “list” operations for many Confluent Cloud APIs, but not all.
> The Connect V1 and Kafka V3 API list operations do not support pagination.

All API resources have support for bulk reads via "list" API operations. For example,
you can "list Kafka clusters", "list api keys", and "list environments". These "list"
operations require pagination; by requesting smaller subsets of data, API clients
receive a response much faster than requesting the entire, potentially large, data set.

All "list" operations follow the same pattern with the following parameters:

- `page_size` – client-provided max number of items per page, only valid on the first request.
- `page_token` – server-generated token used for traversing through the result set.

A paginated response may include any of the following pagination links. API clients may
follow the respective link to page forward or backward through the result set as desired.

| [Link Relation](https://www.iana.org/assignments/link-relations/link-relations.xml) | Description                                                                                                                                                                             |
| ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `next`                                                                              | A link to the next page of results. A response that does not contain a next link does not have further data to fetch.                                                                   |
| `prev`                                                                              | A link to the previous page of results. A response that does not contain a prev link has no previous data. This link is **optional** for collections that cannot be traversed backward. |
| `first`                                                                             | A link to the first page of results. This link is **optional** for collections that cannot be indexed directly to a given page.                                                         |
| `last`                                                                              | A link to the last page of results. This link is **optional** for collections that cannot be indexed directly to a given page.                                                          |

API clients must treat pagination links and the `page_token` parameter in particular as an opaque string.

An example paginated list response may look like

```
{
    "api_version": "v2",
    "kind": "KafkaClusterList",
    "metadata": {
        "next": "https://api.confluent.cloud/kafka-clusters?page_token=ABCDEFGHIJKLMNOP1234567890"
    }
    "data": [
        {
            "metadata": {
                "id": "lkc-abc123",
                "self": "https://api.confluent.cloud/kafka-clusters/lkc-abc123",
                "resource_name": "crn://confluent.cloud/kafka=lkc-abc123",
            }
            "spec": {
                "display_name": "My Kafka Cluster",
                <snip>
            },
            "status": {
                "phase": "RUNNING",
                <snip>
            }
        },
        <snip>
    ]
}
```

# Rate Limiting

To protect the stability of the API and keep it available to all users, Confluent employs
multiple safeguards. If you send too many requests in quick succession or perform too many
concurrent operations, you may be throttled or have your request rejected with an error.

When a rate limit is breached, an HTTP `429 Too Many Requests` error is
returned. The following headers are sent back to provide assistance in dealing
with rate limits. Note that headers are not returned for a `429` error response with
[Kafka REST API (v3)](../ccloud/cluster-v-3/).

| Header                  | Description                                                                                                                                                                                                                                        |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `X-RateLimit-Limit`     | The maximum number of requests you're permitted to make per time period.                                                                                                                                                                           |
| `X-RateLimit-Reset`     | The relative time in seconds until the current rate limit window resets.                                                                                                                                                                           |
| `Retry-After`           | The number of seconds to wait until the rate limit window resets. Only sent when the rate limit is reached.                                                                                                                                        |
| `X-RateLimit-Remaining` | The number of requests remaining in the current rate-limit window. **Important:** This differs from Github and Twitter\'s same-named header which uses UTC epoch seconds. We use relative time to avoid client/server time synchronization issues. |

Confluent enforces multiple kinds of limits, including request-rate and concurrency limits, both per user and organization-wide. Unauthenticated requests are associated with the originating IP address, not the user making requests.

Integrations should gracefully handle these limits by watching for `429` error responses and
building in a retry mechanism. This mechanism should follow a capped exponential backoff policy to
prevent [retry amplification](https://landing.google.com/sre/sre-book/chapters/addressing-cascading-failures/)
("retry storms") and also introduce some randomness ("jitter") to avoid the
[thundering herd effect](https://en.wikipedia.org/wiki/Thundering_herd_problem).

Rate limits are generally fixed and cannot be increased. If you require higher
throughput, you can use a Dedicated cluster, where certain limits scale
automatically with the number of CKUs. For example, each additional CKU
increases the Kafka REST Produce v3 connection limit by 300 requests per
second. For reference, see the
[eCKU/CKU comparison table](https://docs.confluent.io/cloud/current/clusters/cluster-types.html#ecku-cku-comparison).

If you’re running into this error and think you need a higher rate limit, contact Confluent at
[support@confluent.io](mailto:support@confluent.io).

# Identifiers and URLs

Most resources have multiple identifiers:

- `id` is the "natural identifier" for an object. It is only unique within its parent resource.
  The `id` is unique across time: the ID will not be reclaimed and reused after an object is deleted.
- `resource_name` is a Uniform Resource Identifier (URI) that is globally unique across all resources.
  This encompasses all parent resource `kind`s and `id`s necessary to uniquely identify a particular
  instance of this object `kind`. Because it uses object `id`s, the CRN will not be reclaimed and
  reused after an object is deleted. It is represented as a Confluent Resource Name (see below).
- `self` is a Uniform Resource Locator (URL) at which an object can be addressed.
  This URL encodes the service location, API version, and other particulars necessary to
  locate the resource at a point in time.

To see how these relate to each other, consider `KafkaBroker` with `broker.id=2` in a `KafkaCluster`
in Confluent Cloud identified as `lkc-xsi8201`. In such an example, the `KafkaBroker` has `id=2`,
the `resource_name` is `crn://confluent.cloud/kafka=lkc-xsi8201/broker=2` and the `self` URL may be
something like `https://pkc-8wlk2n.us-west-2.aws.confluent.cloud`. Note that different identifiers
carry different information for different purposes, but the `resource_name` is the most complete
and canonical identifier.

## Confluent Resource Names (CRNs)

_Confluent Resource Names_ (CRNs) are used to uniquely identify all Confluent resources.

A CRN is a valid URI having an "authority" of `confluent.cloud` or a self-managed
[
metadata service URL](https://docs.confluent.io/current/security/rbac/configure-mds/index.html), followed by the minimal hierarchical set of key-value
pairs necessary to uniquely identify a resource.

Here are some examples for basic resources in Confluent Cloud:

| Resource                   | Example CRN                                                                                                                                                              |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Organization               | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a                                                                                                  |
| Environment                | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy                                                                            |
| User                       | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/user=u-rst9876                                                                                   |
| API Key                    | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/user=u-zyx98/api-key=ABCDEFG9876543210                                                           |
| Service Account            | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/service-account=sa-abc1234                                                                       |
| Kafka Cluster              | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy/cloud-cluster=lkc-123abc/kafka=lkc-123abc                                  |
| Kafka Topic                | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy/cloud-cluster=lkc-123abc/kafka=lkc-123abc/topic=my_kafka_topic             |
| Consumer Group             | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy/cloud-cluster=lkc-123abc/kafka=lkc-123abc/group=confluent_cli_consumer_123 |
| Network                    | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy/network=n-123abc                                                           |
| Peering                    | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy/network=n-123abc/peering=p-123abc                                          |
| Private Link Access        | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy/network=n-123abc/private-link-access=pla-123abc                            |
| Transit Gateway Attachment | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy/network=n-123abc/transit-gateway-attachment=tgwa-123abc                    |
| Schema Registry Cluster    | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy/schema-registry=lsrc-789qw                                                 |
| Schema Subject             | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy/schema-registry=lsrc-789qw/subject=test                                    |
| KEK                        | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy/schema-registry=lsrc-789qw//kek=test_kek                                   |
| Connector                  | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy/cloud-cluster=lkc-123abc/connector=my_datagen_connector                    |
| Provider Integration       | crn://confluent.cloud/organization=9bb441c4-edef-46ac-8a41-c49e44a3fd9a/environment=env-456xy/provider-integration=cspi-123j1                                            |

# Data Types

## Primitive Types

| Data Type | Representation                                                                                                                                                                                                                                                                                                                                                                                                                          |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Integers  | Each API may specify the type as `int32` or `int64`. Note that many languages, including JavaScript, are limited to a max size of approx `2**53` and don't correctly handle large `int64` values with their default JSON parser.                                                                                                                                                                                                        |
| Dates     | [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) formatted string. UTC timezones are assumed, unless otherwise given.                                                                                                                                                                                                                                                                                        |
| Times     | [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) formatted string. UTC timezones are assumed, unless otherwise given.                                                                                                                                                                                                                                                                                        |
| Durations | [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) formatted string.                                                                                                                                                                                                                                                                                                                                           |
| Periods   | [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) formatted string. UTC timezones are assumed, unless otherwise given.                                                                                                                                                                                                                                                                                        |
| Ranges    | All ranges are represented using half-open intervals with naming conventions like `[start_XXX, end_XXX)` such as `[start_time, end_time)`.                                                                                                                                                                                                                                                                                              |
| Enums     | Most APIs use [`x-extensible-enum`](https://opensource.zalando.com/restful-api-guidelines/#112) as an open-ended list of values. This improves compatibility compared with a standard `enum` which by definition represents a closed set. All enums have a `0`-valued entry which either serves as the default for common cases, or represents `UNSPECIFIED` when no default exists and results in an error. |

### Standard Properties

Confluent uses this set of standard properties to ensure common concepts use
the same name and semantics across different APIs.

| Name             | Description                                                                                                                                                                                         |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **api_version**  | Many API objects have an `api_version` field indicating their API version. See the [Object Model](#object-model).                                                                           |
| **kind**         | Many API objects have a `kind` field indicating the kind of object it is. See the [Object Model](#object-model).                                                                            |
| **id**           | Many objects in the API will have an identifier, indicated via its `id` field, and should be treated as an opaque string unless otherwise specified. See the [Object Model](#object-model). |
| **name**         | Objects which support a client-provided unique identifier instead of a generated `id` will indicate this identifier via its `name` field.                                                           |
| **display_name** | The human-readable display name of an API object.                                                                                                                                                   |
| **title**        | The official name of an API object, such as a company name. It should be treated as the formal version of `display_name`.                                                                           |
| **description**  | One or more paragraphs of text description of an entity.                                                                                                                                            |
| **created_at**   | The date and time the object was created, represented as a string in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format.                                            |
| **updated_at**   | The date and time the object was last modified, represented as a string in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format.                                      |
| **deleted_at**   | If present, the date and time after which the object was/will be deleted, represented as a string in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format.            |
| **page_token**   | The pagination token in the List request. See [Pagination](#pagination).                                                                                                                    |
| **page_size**    | The pagination size in the List request. See [Pagination](#pagination).                                                                                                                     |
| **total_size**   | The total count of items in the list irrespective of pagination. See [Pagination](#pagination).                                                                                             |
| **spec**         | The _desired state_ specification of the resource, as observed by Confluent Cloud.                                                                                                                  |
| **status**       | The _current state_ of the resource, as observed by Confluent Cloud.                                                                                                                                |

# Versioning

Confluent APIs ensure stability for your integrations by avoiding the introduction
of breaking changes to customers unexpectedly. Confluent will make non-breaking
API changes without advance notice. Thus, API clients **must** follow the
[Compatibility Policy](#compatibility-policy) below to ensure your
integration remains stable. All APIs follow the API Lifecycle Policy described below,
which describes the guarantees API clients can rely on.

Breaking changes will be [widely communicated](#communication) in advance in accordance
with the Confluent [Deprecation Policy](#deprecation-policy). Confluent will provide
timelines and a migration path for all API changes, where available. Be sure to subscribe
to one or more [communication channels](#communication) so you don't miss any updates!

One exception to these guidelines is for critical security issues. Confluent will take any necessary
actions to mitigate any critical security issue as soon as possible, which may include disabling
the vulnerable functionality until a proper solution is available.

Do not consume any Confluent API unless it is documented in the API Reference. All undocumented
endpoints should be considered private, subject to change without notice, and not covered by any
agreements.

> Note: The version in the URL (e.g. "v1" or "v2") is not a "major version" in the
> [Semantic Versioning](https://semver.org/) sense. It is a "generational version" or "meta version", as seen in
> APIs like [Github API](https://developer.github.com/v3/versions/) or the
> [Stripe API](https://stripe.com/docs/api/versioning).

## API Groups

Confluent APIs are divided into API Groups, such as the Cluster Management for Apache Kafka (CMK) API group,
the Connect API group, and the Data Catalog API group. Each group has its own set of endpoints and resources,
as well as its own API group version.

Because different API groups have different versions, there is no single version for the "Confluent Cloud API".
The latest version of the Connect API group may be `connect/v1`, while the latest version of the CMK API group
may be `cmk/v2`.

When a breaking change is introduced into one API group, Confluent will increase the API version for that API group
only, leaving the other API groups' versions unchanged. This makes it easier for you to understand whether a given
breaking change impacts your usage of the APIs.

## Known Issues

During the Early Access and Preview periods, we have a few known issues.

| Issue          | Description                                                                   | Proposed Resolution                                 |
| -------------- | ----------------------------------------------------------------------------- | --------------------------------------------------- |
| Quota Exceeded | Some "Quota Exceeded" errors will be returned as HTTP 400 instead of HTTP 402 | Return 402 consistently for "Quota Exceeded" errors |

## API Lifecycle Policy

The following status labels are applicable to APIs, features, and SDK versions, based on
the current support status of each:

- **Early Access** – May change at any time. Not recommended for production usage. Not officially supported by
  Confluent. Intended for user feedback only. Users must be granted explicit access to the API by Confluent.
- **Preview** – Unlikely to change between Preview and General Availability. Not recommended for production usage.
  Officially supported by Confluent for non-production usage. Accessible to all users.
- **Limited Availability (LA)** - Available to key select customers in a subset of regions/providers/networks and recommended for production usage.
- **Generally Available (GA)** – Will not change at short notice. Recommended for production usage.
  Officially supported by Confluent for non-production and production usage.
- **Deprecated** – Still supported, but no longer under active development. Existing usage will continue to function
  but migration following the upgrade guide is strongly recommended. New use cases should be built against the new
  version. Deprecated feature or version will be removed in the future at the announced date.
- **Sunset** – Removed, and no longer supported or available.

An API is "Generally Available" unless explicitly marked otherwise.

## Compatibility Policy

Confluent Cloud APIs are governed by
[
Confluent Cloud Upgrade Policy](https://docs.confluent.io/cloud/current/clusters/upgrade-policy.html), which means that backward incompatible changes and
deprecations will be made approximately once per year, and 180 days notice will be provided via email to all
registered Confluent Cloud users.

### Backward Compatibility

> _An API version is backward compatible if a program written against the previous version of the API will continue to work the same way, without modification, against this version of the API._

Confluent considers the following changes to be backward compatible:

- Adding new API resources.
- Adding new optional parameters to existing API requests (e.g., query string).
- Adding new properties to existing API resources (e.g., request body).
- Changing the order of properties in existing API responses.
- Changing the length or format of object IDs or other opaque strings.
  - Unless otherwise documented, you can safely assume object IDs generated by Confluent will never exceed 255
    characters, but you should be able to handle IDs of up to that length. If you're using MySQL,
    for example, you should store IDs in a `VARCHAR(255) COLLATE utf8_bin` column.
  - This includes adding or removing fixed prefixes (such as `lkc-` on Kafka cluster IDs).
  - This includes API keys, API tokens, and similar authentication mechanisms.
  - This includes all strings described as "opaque" in the docs, such as pagination cursors.
- Adding new API event types.
- Adding new properties to existing API event types.
- Omitting properties with null values from existing API responses.

### Forward Compatibility

> _An API version is forward compatible if a program written against the next version of the API
> will continue to work the same way, without modification, against this version of the API._

In other words, a forward compatible API will accept input intended for a later version of itself.

Confluent does not guarantee the forward compatibility of the APIs, but Confluent does generally follow the guidelines
given by the [Robustness principle](https://en.wikipedia.org/wiki/Robustness_principle).
This means that the API determines what to do with a request based only on the parts that it recognizes.

This is often referred to as the MUST IGNORE rule.

- Request parameters that are not recognized will be ignored (e.g., query string).
- Request properties that are not recognized will be ignored (e.g., request body).
- Request metadata that are not recognized will be ignored (e.g., request headers).

API clients must also follow the MUST IGNORE rule.

- Response properties that are not recognized must be ignored (e.g., response body).
- Response metadata that are not recognized must be ignored (e.g., response headers).

Additionally, there is a more subtle related rule called the MUST FORWARD rule. Any parts of
a request that an API doesn't recognize must be forwarded unchanged.

- Response properties that are not recognized must be included in any input subsequent updates (e.g., request body)
  - This includes future `PUT` requests in a read/modify/write operation.
    (This isn't required for `PATCH` partial updates, which is why Confluent APIs use `PATCH`.)
- Event processors must not strip unknown properties before forwarding messages.

#### Compatibility Implementation Hints

Confluent considers adding new properties to existing API resources (e.g., response bodies) to be a backward-compatible change. To ensure your integrations remain stable when new fields are introduced, your JSON parsers should be configured to ignore unknown properties rather than throwing an error.

For the **Jackson** library (Java), use one of these approaches:

**1. Global Configuration (Recommended)**

Configure `ObjectMapper` to ignore unknown properties globally.

```java
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
```

**2. Class-Level Control**

Use `@JsonIgnoreProperties` to ignore unknown fields on specific classes.

```java
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyResource { ... }
```

**3. Capturing Unknown Fields**

Use `@JsonAnySetter` to preserve unknown fields in a `Map`, in order to use them on future requests to fulfill the MUST FORWARD requirement.

```java
public class MyResource {
    // ... existing fields ...
    private Map unknownProperties = new HashMap<>();

    @JsonAnySetter
    public void addUnknownProperty(String key, Object value) {
        this.unknownProperties.put(key, value);
    }
    
    public Map getUnknownProperties() {
        return unknownProperties;
    }
}
```

### Client Responsibilities

- Resource and rate limits, and the default and maximum sizes of paginated data **are not**
  considered part of the API contract and may change (possibly dynamically). It is the client's
  responsibility to read the road signs and obey the speed limit.
- If a property has a primitive type and the API documentation does not explicitly limit its
  possible values, clients **must not** assume the values are constrained to a particular set
  of possible responses.
- If a property of an object is not explicitly declared as mandatory in the API, clients
  **must not** assume it will be present.
- A resource **may** be modified to return a "redirection" response (e.g. `301`, `307`) instead of
  directly returning the resource. Clients **must** handle HTTP-level redirects, and respect HTTP
  headers (e.g. `Location`).

## Deprecation Policy

Confluent will announce deprecations at least 180 days in advance of a breaking change
and will continue to maintain the deprecated APIs in their original form during this time.

Exceptions to this policy apply in case of critical security vulnerabilities or functional defects.

### Communication

When a deprecation is announced, the details and any relevant migration
information will be available on one or more of the following channels:

- Announcements on the [Developer Blog](https://www.confluent.io/blog/),
  [Community Slack](https://confluentcommunity.slack.com)
  ([join!](https://slackpass.io/confluentcommunity)),
  [Google Group](https://groups.google.com/forum/#!forum/confluent-platform),
  the [@ConfluentInc twitter](https://twitter.com/ConfluentInc)
  account, and similar channels
- Enterprise customers may receive information by email to their specified Confluent contact, if applicable.

# HTTP Guidelines

## Status Codes

Confluent respects the meanings and behavior of HTTP status codes as defined
in [RFC2616](https://tools.ietf.org/html/rfc2616) and elsewhere.

- Codes in the `2xx` range indicate success
- Codes in the `3xx` range indicate redirection
- Codes in the `4xx` range indicate an error caused by the client request
  (e.g., a required parameter was omitted, an invalid cluster configuration was provided, etc.)
- Codes in the `5xx` range indicate an error with Confluent's servers (these are rare)

The various HTTP status codes that might be returned are listed below.

| Code               | Title             | Description                                                                                                     |
| ------------------ | ----------------- | --------------------------------------------------------------------------------------------------------------- |
| 200                | OK                | Everything worked as expected.                                                                                  |
| 201                | Created           | The resource was created. Follow the `Location` header.                                                         |
| 204                | No Content        | Everything worked and there is no content to return.                                                            |
| 400                | Bad Request       | The request was unacceptable, often due to malformed syntax, or a missing or malformed parameter.               |
| 401                | Unauthorized      | No valid credentials provided. or the credentials are unsuitable, invalid, or unauthorized.                     |
| 402                | Over Quota        | The request was valid, but you've exceeded your plan quota or limits.                                           |
| 404                | Not Found         | The requested resource doesn't exist or you're unauthorized to know it exists.                                  |
| 409                | Conflict          | The request conflicts with another request (perhaps it already exists or was based on a stale version of data). |
| 422                | Validation Failed | The request was parsed correctly but failed some sort of validation.                                            |
| 429                | Too Many Requests | Too many requests hit the API too quickly. Confluent recommends an exponential backoff of your requests.        |
| 500, 502, 503, 504 | Server Errors     | Something went wrong on Confluent's end. (These are rare.)                                                      |

This list is not exhaustive; other standard HTTP error codes may be used,
including `304`, `307`, `308`, `405`, `406`, `408`, `410`, and `415`.

For more details, see https://httpstatuses.com.

# Metrics APIs

For Metrics APIs, see [Confluent Cloud Metrics API](https://api.telemetry.confluent.cloud/docs).


# API Operations

## Identity Access Management (v2)

### API Keys (iam/v2)

`ApiKey` objects represent access to different parts of Confluent Cloud. Some types
of API keys represent access to a single cluster/resource such as a Kafka cluster,
Schema Registry cluster or a ksqlDB cluster. Cloud API Keys represent access to resources within an organization
that are not tied to a specific cluster, such as the Org API, IAM API, Metrics API or Connect API.
Tableflow API keys and Global API keys are not tied to a specific cluster.

The API allows you to list, create, update and delete your API Keys.


Related guide: [API Keys in Confluent Cloud](https://docs.confluent.io/cloud/current/client-apps/api-keys.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `apikeys_per_org` | API Keys in one Confluent Cloud organization |

#### `GET /iam/v2/api-keys` — List of API Keys

Retrieve a sorted, filtered, paginated list of all API keys.

This can show all keys for a single owner (across resources - Kafka clusters), or all keys for a single
resource (across owners). If no `owner` or `resource` filters are specified, returns all API Keys in the
organization. You will only see the keys that are accessible to the account making the API request.

**Parameters:**

- `spec.owner` · in: query · type: `SearchFilter` — Filter the results by exact match for spec.owner.
- `spec.resource` · in: query · type: `SearchFilter` — Filter the results by exact match for spec.resource.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — API Key.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /iam/v2/api-keys` — Create an API Key

Make a request to create an API key.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — An API Key is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /iam/v2/api-keys/{id}` — Delete an API Key

Make a request to delete an API key.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the API key.



**Responses:**

- `204` — An API Key is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /iam/v2/api-keys/{id}` — Read an API Key

Make a request to read an API key.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the API key.



**Responses:**

- `200` — API Key.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /iam/v2/api-keys/{id}` — Update an API Key

Make a request to update an API key.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the API key.


**Request body:**

- `application/json` → `iam.v2.ApiKey`


**Responses:**

- `200` — API Key.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Users (iam/v2)

`User` objects represent individuals who may access your Confluent resources.

The API allows you to retrieve, update, and delete individual users, as well as list of all your
users. This API cannot be used to create new user accounts.


Related guide: [Users in Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/user-account.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `users_per_org` | Users in one Confluent Cloud organization |

#### `GET /iam/v2/users` — List of Users

Retrieve a sorted, filtered, paginated list of all users.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — User.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /iam/v2/users/{id}` — Delete a User

Make a request to delete a user.

If successful, this request will also recursively delete all of the user's associated resources,
including its cloud and cluster API keys.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the user.



**Responses:**

- `204` — A User is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /iam/v2/users/{id}` — Read a User

Make a request to read a user.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the user.



**Responses:**

- `200` — User.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /iam/v2/users/{id}` — Update a User

Make a request to update a user.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the user.


**Request body:**

- `application/json` → `iam.v2.User`


**Responses:**

- `200` — User.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /iam/v2/users/{id}/auth` — Update Auth Type of a User

Update the auth type of a user

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the user.


**Request body:**

- `application/json` → `iam.v2.User.ConfigureUserAuthRequest`


**Responses:**

- `204` — No Content
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Service Accounts (iam/v2)

`ServiceAccount` objects are typically used to represent applications and other non-human principals
that may access your Confluent resources.

The API allows you to create, retrieve, update, and delete individual service accounts, as well as
list all your service accounts.


Related guide: [Service Accounts in Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/service-account.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `service_accounts_per_org` | Service Accounts in one Confluent Cloud organization |

#### `GET /iam/v2/service-accounts` — List of Service Accounts

Retrieve a sorted, filtered, paginated list of all service accounts.

**Parameters:**

- `display_name` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for display_name. Pass multiple times to see results matching any of the values.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Service Account.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /iam/v2/service-accounts` — Create a Service Account

Make a request to create a service account.

**Parameters:**

- `assigned_resource_owner` · in: query · type: `SearchFilter` — The resource_id of the principal who will be assigned resource owner on the created service account. Principal can be group-mapping (group-xxx), user (u-xxx), service-account (sa-xxx) or identity-pool…


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Service Account was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /iam/v2/service-accounts/{id}` — Delete a Service Account

Make a request to delete a service account.

If successful, this request will also recursively delete all of the service account's associated resources,
including its cloud and cluster API keys.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the service account.



**Responses:**

- `204` — A Service Account is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /iam/v2/service-accounts/{id}` — Read a Service Account

Make a request to read a service account.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the service account.



**Responses:**

- `200` — Service Account.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /iam/v2/service-accounts/{id}` — Update a Service Account

Make a request to update a service account.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the service account.


**Request body:**

- `application/json` → `iam.v2.ServiceAccount`


**Responses:**

- `200` — Service Account.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Invitations (iam/v2)

`Invitation` objects represent invitations to invite users to join your organizations in Confluent Cloud.

The API allows you to list all your invitations, as well as create, read, and delete a specified invitation.


Related guide: [User invitations in Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/identity/user-accounts.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `invitations_per_org` | Invitations in a Confluent Cloud organization |

#### `GET /iam/v2/invitations` — List of Invitations

Retrieve a sorted, filtered, paginated list of all invitations.

**Parameters:**

- `email` · in: query · type: `SearchFilter` — Filter the results by exact match for email.
- `status` · in: query · type: `SearchFilter` — Filter the results by exact match for status.
- `user` · in: query · type: `SearchFilter` — Filter the results by exact match for user.
- `creator` · in: query · type: `SearchFilter` — Filter the results by exact match for creator.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Invitation.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /iam/v2/invitations` — Create an Invitation

Make a request to create an invitation.

The newly invited user will not have any permissions. Give the user permission by assigning them to one or
more roles by creating
[role bindings](https://docs.confluent.io/cloud/current/api.html#tag/Role-Bindings-(iamv2))
for the created `user`.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — An Invitation was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /iam/v2/invitations/{id}` — Delete an Invitation

Make a request to delete an invitation.

Delete will deactivate the user if the user didn't accept the invitation yet.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the invitation.



**Responses:**

- `204` — An Invitation is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /iam/v2/invitations/{id}` — Read an Invitation

Make a request to read an invitation.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the invitation.



**Responses:**

- `200` — Invitation.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### IP Groups (iam/v2)

Definitions of networks which can be named and referred by IP blocks, commonly used to attach to IP Filter rules.

#### `GET /iam/v2/ip-groups` — List of IP Groups

Retrieve a sorted, filtered, paginated list of all IP groups.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — IP Group.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /iam/v2/ip-groups` — Create an IP Group

Make a request to create an IP group.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — An IP Group was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /iam/v2/ip-groups/{id}` — Delete an IP Group

Make a request to delete an IP group.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the IP group.



**Responses:**

- `204` — An IP Group is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /iam/v2/ip-groups/{id}` — Read an IP Group

Make a request to read an IP group.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the IP group.



**Responses:**

- `200` — IP Group.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /iam/v2/ip-groups/{id}` — Update an IP Group

Make a request to update an IP group.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the IP group.


**Request body:**

- `application/json` → `iam.v2.IpGroup`


**Responses:**

- `200` — IP Group.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### IP Filters (iam/v2)

`IP Filter` objects are bindings between IP Groups and Confluent resource(s).
For example, a binding between "CorpNet" and "Management APIs" will enforce that
access must come from one of the CIDR blocks associated with CorpNet.
If there are multiple IP filters bound to a resource, a request matching any of the CIDR blocks
for any of the IP Group will allow the request.
If there are no IP Filters for a resource, then access will be granted to requests originating
from any IP Address.

#### `GET /iam/v2/ip-filters` — List of IP Filters

Retrieve a sorted, filtered, paginated list of all IP filters.

**Parameters:**

- `resource_scope` · in: query · type: `string` — Lists all filters belonging to the specified resource scope.
- `include_parent_scopes` · in: query · type: `string` — If set to true, this includes filters defined at the organization level. The resource scope must also be set to use this parameter.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — IP Filter.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /iam/v2/ip-filters` — Create an IP Filter

Make a request to create an IP filter.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — An IP Filter was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /iam/v2/ip-filters/{id}` — Delete an IP Filter

Make a request to delete an IP filter.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the IP filter.



**Responses:**

- `204` — An IP Filter is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /iam/v2/ip-filters/{id}` — Read an IP Filter

Make a request to read an IP filter.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the IP filter.



**Responses:**

- `200` — IP Filter.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /iam/v2/ip-filters/{id}` — Update an IP Filter

Make a request to update an IP filter.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the IP filter.


**Request body:**

- `application/json` → `iam.v2.IpFilter`


**Responses:**

- `200` — IP Filter.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### IP Filter Summaries (iam/v2)

The IP Filter Summary endpoint returns an aggregation of the IP Filters across the system.
This API can be queried in the context of an organization or an environment. It returns a
summary of every operation group in the system grouped with a higher summary by operation
group category.

#### `GET /iam/v2/ip-filter-summary` — Read an IP Filter Summary

Make a request to read an IP filter summary.

**Parameters:**

- `scope` · in: query · type: `string` · required — Scope the operation to the given scope.



**Responses:**

- `200` — IP Filter Summary.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Role Bindings (iam/v2)

A role binding grants a Principal a role on resources that match a pattern.

The API allows you to perform create, delete, and list operations on role bindings.


Related guide: [Role-Based Access Control (RBAC)](https://docs.confluent.io/cloud/current/access-management/access-control/cloud-rbac.html).

#### `GET /iam/v2/role-bindings` — List of Role Bindings

Retrieve a sorted, filtered, paginated list of all role bindings.

**Parameters:**

- `principal` · in: query · type: `SearchFilter` — Filter the results by exact match for principal.
- `role_name` · in: query · type: `SearchFilter` — Filter the results by exact match for role_name.
- `crn_pattern` · in: query · type: `SearchFilter` · required — Filter the results by a partial search of crn_pattern.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Role Binding.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /iam/v2/role-bindings` — Create a Role Binding

Make a request to create a role binding.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Role Binding was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /iam/v2/role-bindings/{id}` — Delete a Role Binding

Make a request to delete a role binding.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the role binding.



**Responses:**

- `200` — A Role Binding is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /iam/v2/role-bindings/{id}` — Read a Role Binding

Make a request to read a role binding.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the role binding.



**Responses:**

- `200` — Role Binding.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Identity Providers (iam/v2)

`IdentityProvider` objects represent external OAuth-OIDC providers in Confluent Cloud.

The API allows you to list, create, read, update, and delete your Identity Provider.


Related guide: [OAuth for Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/overview.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `identity_providers_per_org` | Number of OAuth identity providers per organization |
| `public_keys_per_provider` | Number of public keys saved per identity provider |

#### `GET /iam/v2/identity-providers` — List of Identity Providers

Retrieve a sorted, filtered, paginated list of all identity providers.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Identity Provider.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /iam/v2/identity-providers` — Create an Identity Provider

Make a request to create an identity provider.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — An Identity Provider was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /iam/v2/identity-providers/{id}` — Delete an Identity Provider

Make a request to delete an identity provider.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the identity provider.



**Responses:**

- `204` — An Identity Provider is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /iam/v2/identity-providers/{id}` — Read an Identity Provider

Make a request to read an identity provider.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the identity provider.



**Responses:**

- `200` — Identity Provider.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /iam/v2/identity-providers/{id}` — Update an Identity Provider

Make a request to update an identity provider.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the identity provider.


**Request body:**

- `application/json` → `iam.v2.IdentityProvider`


**Responses:**

- `200` — Identity Provider.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Jwks (iam/v2)

`JWKS` objects represent public key sets for a specific OAuth/OpenID Connect provider within
Confluent Cloud.

The API allows you to refresh JWKS public key data.


Related guide: [OAuth for Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/overview.html).

#### `PATCH /iam/v2/identity-providers/{provider_id}/jwks` — Refresh a provider's JWKS

Make a request to refresh the provider's JWKS

**Parameters:**

- `provider_id` · in: path · type: `string` · required — The Provider


**Request body:**

- `application/json` → `iam.v2.Jwks`


**Responses:**

- `200` — Jwks.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Identity Pools (iam/v2)

`IdentityPool` objects represent groups of identities tied to a given a `IdentityProvider`
that authorizes them to Confluent Cloud resources.

It provides a mapping functionality of your `Identity Provider` user to a Confluent identity pool that
is then used to provide access to Confluent Resources.


Related guide: [Use identity pools with your OAuth provider](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/identity-pools.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `identity_pools_per_provider` | Number of Identity Pools per Identity Provider |

#### `GET /iam/v2/identity-providers/{provider_id}/identity-pools` — List of Identity Pools

Retrieve a sorted, filtered, paginated list of all identity pools.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.
- `provider_id` · in: path · type: `string` · required — The Provider



**Responses:**

- `200` — Identity Pool.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /iam/v2/identity-providers/{provider_id}/identity-pools` — Create an Identity Pool

Make a request to create an identity pool.

**Parameters:**

- `assigned_resource_owner` · in: query · type: `SearchFilter` — The resource_id of the principal who will be assigned resource owner on the created identity pool. Principal can be group-mapping (group-xxx), user (u-xxx), service-account (sa-xxx) or identity-pool (…
- `provider_id` · in: path · type: `string` · required — The Provider


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — An Identity Pool was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /iam/v2/identity-providers/{provider_id}/identity-pools/{id}` — Delete an Identity Pool

Make a request to delete an identity pool.

**Parameters:**

- `provider_id` · in: path · type: `string` · required — The Provider
- `id` · in: path · type: `string` · required — The unique identifier for the identity pool.



**Responses:**

- `204` — An Identity Pool is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /iam/v2/identity-providers/{provider_id}/identity-pools/{id}` — Read an Identity Pool

Make a request to read an identity pool.

**Parameters:**

- `provider_id` · in: path · type: `string` · required — The Provider
- `id` · in: path · type: `string` · required — The unique identifier for the identity pool.



**Responses:**

- `200` — Identity Pool.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /iam/v2/identity-providers/{provider_id}/identity-pools/{id}` — Update an Identity Pool

Make a request to update an identity pool.

**Parameters:**

- `provider_id` · in: path · type: `string` · required — The Provider
- `id` · in: path · type: `string` · required — The unique identifier for the identity pool.


**Request body:**

- `application/json` → `iam.v2.IdentityPool`


**Responses:**

- `200` — Identity Pool.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Group Mappings (iam/v2/sso)

`GroupMapping` objects establish relationships between user groups in your SSO
identity provider and specific RBAC roles in Confluent Cloud.

Group mappings enable automated and secure access control to Confluent Cloud resources,
reducing administrative workload by streamlining user provisioning and authorization.


Related guide: [Use group mappings with your SSO identity provider](https://docs.confluent.io/cloud/current/access-management/authenticate/sso/group-mapping/overview.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `group_mappings_per_org` | Number of group mappings per organization |

#### `GET /iam/v2/sso/group-mappings` — List of Group Mappings

Retrieve a sorted, filtered, paginated list of all group mappings.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Group Mapping.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /iam/v2/sso/group-mappings` — Create a Group Mapping

Make a request to create a group mapping.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Group Mapping was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /iam/v2/sso/group-mappings/{id}` — Delete a Group Mapping

Make a request to delete a group mapping.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the group mapping.



**Responses:**

- `204` — A Group Mapping is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /iam/v2/sso/group-mappings/{id}` — Read a Group Mapping

Make a request to read a group mapping.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the group mapping.



**Responses:**

- `200` — Group Mapping.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /iam/v2/sso/group-mappings/{id}` — Update a Group Mapping

Make a request to update a group mapping.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the group mapping.


**Request body:**

- `application/json` → `iam.v2.sso.GroupMapping`


**Responses:**

- `200` — Group Mapping.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Certificate Authorities (iam/v2)

`CertificateAuthority` objects represent signing certificate authorities in Confluent Cloud.

The API allows you to list, create, read, update, and delete your Certificate Authority.


Related guide: [Manage certificate authorities used for client authentication with X.509 certificates.](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/overview.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `certificate_authorities_per_org` | Number of certificate authorities per organization |

#### `GET /iam/v2/certificate-authorities` — List of Certificate Authorities

Retrieve a sorted, filtered, paginated list of all certificate authorities.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Certificate Authority.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /iam/v2/certificate-authorities` — Create a Certificate Authority

Make a request to create a certificate authority.


**Request body:**

- `application/json` → `iam.v2.CreateCertRequest`


**Responses:**

- `201` — A Certificate Authority was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /iam/v2/certificate-authorities/{id}` — Delete a Certificate Authority

Make a request to delete a certificate authority.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the certificate authority.



**Responses:**

- `200` — A Certificate Authority is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /iam/v2/certificate-authorities/{id}` — Read a Certificate Authority

Make a request to read a certificate authority.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the certificate authority.



**Responses:**

- `200` — Certificate Authority.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PUT /iam/v2/certificate-authorities/{id}` — Update a Certificate Authority

Make a request to update a certificate authority.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the certificate authority.


**Request body:**

- `application/json` → `iam.v2.UpdateCertRequest`


**Responses:**

- `200` — Certificate Authority.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Certificate Identity Pools (iam/v2)

`Identitypool` objects represent workload identities in Confluent Cloud.

The API allows you to list, create, read, update, and delete your identity pools associated
with Certificate Authorities


Related guide: [Manage Certificate Identity Pools for Granular Client Access Management](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/configure.html#step-2-create-certificate-identity-pools-for-granular-access-control).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `identity_pools_per_certificate_authority` | Number of Identity Pools per Certificate Authority |

#### `GET /iam/v2/certificate-authorities/{certificate_authority_id}/identity-pools` — List of Certificate Identity Pools

Retrieve a sorted, filtered, paginated list of all certificate identity pools.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.
- `certificate_authority_id` · in: path · type: `string` · required — The Certificate Authority



**Responses:**

- `200` — Certificate Identity Pool.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /iam/v2/certificate-authorities/{certificate_authority_id}/identity-pools` — Create a Certificate Identity Pool

Make a request to create a certificate identity pool.

**Parameters:**

- `assigned_resource_owner` · in: query · type: `SearchFilter` — The resource_id of the principal who will be assigned resource owner on the created certificate identity pool. Principal can be group-mapping (group-xxx), user (u-xxx), service-account (sa-xxx) or ide…
- `certificate_authority_id` · in: path · type: `string` · required — The Certificate Authority


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Certificate Identity Pool was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /iam/v2/certificate-authorities/{certificate_authority_id}/identity-pools/{id}` — Delete a Certificate Identity Pool

Make a request to delete a certificate identity pool.

**Parameters:**

- `certificate_authority_id` · in: path · type: `string` · required — The Certificate Authority
- `id` · in: path · type: `string` · required — The unique identifier for the certificate identity pool.



**Responses:**

- `200` — A Certificate Identity Pool is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /iam/v2/certificate-authorities/{certificate_authority_id}/identity-pools/{id}` — Read a Certificate Identity Pool

Make a request to read a certificate identity pool.

**Parameters:**

- `certificate_authority_id` · in: path · type: `string` · required — The Certificate Authority
- `id` · in: path · type: `string` · required — The unique identifier for the certificate identity pool.



**Responses:**

- `200` — Certificate Identity Pool.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PUT /iam/v2/certificate-authorities/{certificate_authority_id}/identity-pools/{id}` — Update a Certificate Identity Pool

Make a request to update a certificate identity pool.

**Parameters:**

- `certificate_authority_id` · in: path · type: `string` · required — The Certificate Authority
- `id` · in: path · type: `string` · required — The unique identifier for the certificate identity pool.


**Request body:**

- `application/json` → `iam.v2.CertificateIdentityPool`


**Responses:**

- `200` — Certificate Identity Pool.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Org API (v2)

### Environments (org/v2)

`Environment` objects represent an isolated namespace for your Confluent resources
for organizational purposes.

The API allows you to create, delete, and update your environments. You can retrieve
individual environments as well as a list of all your environments.


Related guide: [Environments in Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/environments.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `environments_per_org` | Environments in one Confluent Cloud organization |

#### `GET /org/v2/environments` — List of Environments

Retrieve a sorted, filtered, paginated list of all environments.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Environment.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /org/v2/environments` — Create an Environment

Make a request to create an environment.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — An Environment was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /org/v2/environments/{id}` — Delete an Environment

Make a request to delete an environment.

If successful, this request will also recursively delete all of the environment's associated resources,
including all Kafka clusters, connectors, etc.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the environment.



**Responses:**

- `204` — An Environment is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /org/v2/environments/{id}` — Read an Environment

Make a request to read an environment.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the environment.



**Responses:**

- `200` — Environment.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /org/v2/environments/{id}` — Update an Environment

Make a request to update an environment.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the environment.


**Request body:**

- `application/json` → `org.v2.Environment`


**Responses:**

- `200` — Environment.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Organizations (org/v2)

`Organization` objects represent a customer organization. An organization contains all customer
resources (e.g., Environments, Kafka Clusters, Service Accounts, API Keys) and is tied to a billing
agreement (including any annual commitment or support plan).

The API allows you to list, view, and update your organizations.


Related guide: [Organizations for Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/hierarchy/organizations/cloud-organization.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `organizations_per_user` | Confluent Cloud organizations a user belongs to |

#### `GET /org/v2/organizations` — List of Organizations

Retrieve a sorted, filtered, paginated list of all organizations.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Organization.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /org/v2/organizations/{id}` — Read an Organization

Make a request to read an organization.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the organization.



**Responses:**

- `200` — Organization.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /org/v2/organizations/{id}` — Update an Organization

Make a request to update an organization.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the organization.


**Request body:**

- `application/json` → `org.v2.Organization`


**Responses:**

- `200` — Organization.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Scim Tokens (org/v2)

`ScimToken` objects represent bearer tokens used for SCIM 2.0 API authentication.
The token value is only returned when the token is first created and cannot be retrieved later.

#### `GET /org/v2/scim-tokens` — List of Scim Tokens

Retrieve a sorted, filtered, paginated list of all scim tokens.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Scim Token.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /org/v2/scim-tokens` — Create a Scim Token

Make a request to create a scim token.


**Request body:**

- `application/json` → `object`


**Responses:**

- `201` — A Scim Token was created. — body: `org.v2.ScimToken`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /org/v2/scim-tokens/{id}` — Delete a Scim Token

Make a request to delete a scim token.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the scim token.



**Responses:**

- `204` — A Scim Token is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Notifications API (v1)

### Subscriptions (notifications/v1)

`Subscription` objects represent the intent of the customers to get notifications of particular types.
A subscription is created for a particular `NotificationType` and the user will get notifications on the
`Integrations` that are provided while creating the subscription.

This API allows you to create, retrieve, and update subscriptions,
as well as to view the list of all your subscriptions. You can also delete subscriptions
with RECOMMENDED or OPTIONAL notification types. Subscriptions with REQUIRED notification types cannot be deleted.


Related guide: [Cloud Notifications](https://docs.confluent.io/cloud/current/monitoring/configure-notifications.html#notifications-for-ccloud).

#### `GET /notifications/v1/subscriptions` — List of Subscriptions

Retrieve a sorted, filtered, paginated list of all subscriptions.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Subscription.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /notifications/v1/subscriptions` — Create a Subscription

Make a request to create a subscription.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Subscription was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /notifications/v1/subscriptions/{id}` — Delete a Subscription

Make a request to delete a subscription.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the subscription.



**Responses:**

- `204` — A Subscription is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /notifications/v1/subscriptions/{id}` — Read a Subscription

Make a request to read a subscription.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the subscription.



**Responses:**

- `200` — Subscription.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /notifications/v1/subscriptions/{id}` — Update a Subscription

Make a request to update a subscription.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the subscription.


**Request body:**

- `application/json` → `notifications.v1.Subscription`


**Responses:**

- `200` — Subscription.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Integrations (notifications/v1)

You can create an `Integration` to specify how we can notify you when we receive an alert/notification for
a subscription. Please note that you can only perform create, update and delete operations for integrations
of type `Webhook`, `Slack` and `MsTeams`. You cannot create, update or delete integrations of type `RoleEmail`
and `UserEmail`.


Related guide: [Cloud Notifications](https://docs.confluent.io/cloud/current/monitoring/configure-notifications.html#notifications-for-ccloud).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `integrations_per_org` | Maximum number of integrations in one Confluent Cloud organization |

#### `GET /notifications/v1/integrations` — Retrieve a list of integrations. Optionally filter by resource and resource type.

Make a request to list_by_resource_type an integration.

**Parameters:**

- `resource` · in: query · type: `string` — Confluent Cloud resource definition
- `resource_type` · in: query · type: `string` — Confluent Cloud resource type
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — List of Integrations.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /notifications/v1/integrations` — Create an Integration

Make a request to create an integration.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — An Integration was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /notifications/v1/integrations/{id}` — Delete an Integration

Make a request to delete an integration.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the integration.



**Responses:**

- `204` — An Integration is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /notifications/v1/integrations/{id}` — Read an Integration

Make a request to read an integration.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the integration.



**Responses:**

- `200` — Integration.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /notifications/v1/integrations/{id}` — Update an Integration

Make a request to update an integration.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the integration.


**Request body:**

- `application/json` → `notifications.v1.Integration`


**Responses:**

- `200` — Integration.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /notifications/v1/integrations:test` — Test a Webhook, Slack or Microsoft Teams integration

Sends a test notification to validate the integration. This is supported only for Webhook, Slack
and MsTeams targets


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `204` — Notification sent to test integration.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Notification Types (notifications/v1)

The type of notifications (and their corresponding metadata) supported by Confluent.


Related guide: [Cloud Notifications](https://docs.confluent.io/cloud/current/monitoring/configure-notifications.html#notifications-for-ccloud).

#### `GET /notifications/v1/notification-types` — Retrieve a list of all notification types for the resource type.

Make a request to list_by_resource_type a notification type.

**Parameters:**

- `resource_type` · in: query · type: `string` — Confluent Cloud resource type
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — List of Notification Type.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /notifications/v1/notification-types/{id}` — Read a Notification Type

Make a request to read a notification type.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the notification type.



**Responses:**

- `200` — Notification Type.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Resource Preferences (notifications/v1)

`ResourcePreference` objects represent the intent of the customers to enable or disable all notifications
at the resource level. A ResourcePreference is created for a specific Confluent Cloud Resource
(e.g., a connector) and determines whether the user will receive notifications for that resource.

This API allows you to create, retrieve, update and delete resourcePreferences.


Related guide: [Cloud Notifications](https://docs.confluent.io/cloud/current/monitoring/configure-notifications.html#notifications-for-ccloud).

#### `POST /notifications/v1/resource-preferences` — Create a Resource Preference

Make a request to create a resource preference.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Resource Preference was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /notifications/v1/resource-preferences/{id}` — Delete a Resource Preference

Make a request to delete a resource preference.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the resource preference.



**Responses:**

- `204` — A Resource Preference is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /notifications/v1/resource-preferences/{id}` — Read a Resource Preference

Make a request to read a resource preference.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the resource preference.



**Responses:**

- `200` — Resource Preference.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /notifications/v1/resource-preferences/{id}` — Update a Resource Preference

Make a request to update a resource preference.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the resource preference.


**Request body:**

- `application/json` → `notifications.v1.ResourcePreference`


**Responses:**

- `200` — Resource Preference.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /notifications/v1/resource-preferences:lookup` — Lookup a resource preference by filter (returns one)

Make a request to read_by_filter a resource preference.

**Parameters:**

- `resource` · in: query · type: `string` · required — Confluent Cloud resource definition
- `resource_type` · in: query · type: `string` · required — Confluent Cloud resource type
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Resource Preference.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Resource Subscriptions (notifications/v1)

`ResourceSubscription` objects represent the intent of the customers to get notifications of particular types
at the resource level. A ResourceSubscription is created for a specific Confluent Cloud Resource
(e.g., a connector) and determines whether the user will receive notifications for that resource.

This API allows you to create, retrieve, update, delete and list ResourceSubscription.


Related guide: [Cloud Notifications](https://docs.confluent.io/cloud/current/monitoring/configure-notifications.html#notifications-for-ccloud).

#### `POST /notifications/v1/resource-subscriptions` — Create a Resource Subscription

Make a request to create a resource subscription.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Resource Subscription was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /notifications/v1/resource-subscriptions/{id}` — Delete a Resource Subscription

Make a request to delete a resource subscription.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the resource subscription.



**Responses:**

- `204` — A Resource Subscription is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /notifications/v1/resource-subscriptions/{id}` — Read a Resource Subscription

Make a request to read a resource subscription.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the resource subscription.



**Responses:**

- `200` — Resource Subscription.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /notifications/v1/resource-subscriptions/{id}` — Update a Resource Subscription

Make a request to update a resource subscription.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the resource subscription.


**Request body:**

- `application/json` → `notifications.v1.ResourceSubscription`


**Responses:**

- `200` — Resource Subscription.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /notifications/v1/resource-subscriptions:lookup` — Lookup a list of resource subscription by filter

Make a request to list_by_filter a resource subscription.

**Parameters:**

- `resource` · in: query · type: `string` · required — Confluent Cloud resource definition
- `resource_type` · in: query · type: `string` · required — Confluent Cloud resource type
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — List of ResourceSubscriptions
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### User Notifications (notifications/v1)

`UserNotification` objects represent in-app notifications scoped to a specific
Confluent Cloud user. Each notification carries a severity, references the
Confluent Cloud resource it relates to, and tracks whether the user has read it.

This API lets you list and retrieve your notifications, mark notifications as
read or unread, and fetch an unread-count summary.

`read` is the only mutable field on this resource; `PATCH` requests with values
for other fields will have those values silently ignored.

Two `PATCH` shapes are supported:
- `PATCH /user-notifications/{id}` — update a single notification by id.
- `PATCH /user-notifications` — update the read state of every notification
  matching the supplied filter query parameters. The body is a narrow
  payload (`{ "read": true | false }`) and the same filters accepted by
  the list endpoint scope which notifications are updated (with the
  exception of `include`, which is a list-only partial-response selector).

The heavier `integrations` and `recommended_actions` fields are populated on
single-resource reads (`GET /user-notifications/{id}`) and omitted from list
responses by default to keep collection payloads slim. Use the `include`
query parameter on the list endpoint to opt in to populating these fields
(`?include=integrations,recommended_actions`).


Related guide: [Cloud Notifications](https://docs.confluent.io/cloud/current/monitoring/configure-notifications.html#notifications-for-ccloud).

#### `GET /notifications/v1/user-notifications` — List of User Notifications

Retrieve a sorted, filtered, paginated list of all user notifications.

**Parameters:**

- `read` · in: query · type: `BooleanFilter` — Filter the results where read is true or false.
- `severity` · in: query · type: `MultipleSearchFilter` — Filter notifications by severity. Pass the parameter multiple times to match any of the given values (`?severity=CRITICAL&severity=WARN`). A notification matches if its `severity` equals any of the li…
- `include` · in: query · type: `SearchFilter` — Comma-separated list of optional fields to populate in the response items. Allowed values: `integrations`, `recommended_actions`. By default these fields are omitted from list responses to keep collec…
- `resource.type` · in: query · type: `MultipleSearchFilter` — Filter notifications by the Confluent Cloud resource type they relate to. Pass the parameter multiple times to match any of the given values (`?resource.type=CLUSTER&resource.type=CONNECTOR`). A notif…
- `resource.crn` · in: query · type: `MultipleSearchFilter` — Filter notifications by the CRN of the Confluent Cloud resource they relate to. Pass the parameter multiple times to match any of the given CRNs; a notification matches if its `resource.crn` equals an…
- `search` · in: query · type: `SearchFilter` — Free-text partial-match search across the embedded notification type's `display_name` and `description`.
- `time_range` · in: query · type: `SearchFilter` — Filter notifications by a preset time window relative to now. Allowed values: `PAST_24H` (last 24 hours), `PAST_7D` (last 7 days), `PAST_30D` (last 30 days).
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.
- `sort` · in: query · type: array of `string` — The list of fields and directions that are used to sort the collection.



**Responses:**

- `200` — User Notification.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /notifications/v1/user-notifications/{id}` — Read a User Notification

Make a request to read a user notification.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the user notification.



**Responses:**

- `200` — User Notification.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /notifications/v1/user-notifications/{id}` — Update a User Notification

Make a request to update a user notification.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the user notification.


**Request body:**

- `application/json` → `notifications.v1.UserNotification`


**Responses:**

- `200` — User Notification.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /notifications/v1/user-notifications:mark-all` — Mark multiple notifications read or unread

Sets the read state on every notification matching the supplied filter
query parameters. Accepts the same filter parameters as the list
endpoint (except `include`, which is a list-only partial-response
selector). The request body sets the target read state to apply.

**Parameters:**

- `read` · in: query · type: `SearchFilter` — Scope the update to notifications with the given read state. Accepts `true` or `false`. Combine with a body of `{ "read": true }` to mark all currently-unread notifications as read (or vice versa).
- `severity` · in: query · type: `MultipleSearchFilter` — Filter notifications by severity. Pass the parameter multiple times to match any of the given values (`?severity=CRITICAL&severity=WARN`). A notification matches if its `severity` equals any of the li…
- `resource.type` · in: query · type: `MultipleSearchFilter` — Filter notifications by the Confluent Cloud resource type they relate to. Pass the parameter multiple times to match any of the given values (`?resource.type=CLUSTER&resource.type=CONNECTOR`). A notif…
- `resource.crn` · in: query · type: `MultipleSearchFilter` — Filter notifications by the CRN of the Confluent Cloud resource they relate to. Pass the parameter multiple times to match any of the given CRNs; a notification matches if its `resource.crn` equals an…
- `search` · in: query · type: `SearchFilter` — Free-text partial-match search across the embedded notification type's `display_name` and `description`.
- `time_range` · in: query · type: `SearchFilter` — Filter notifications by a preset time window relative to now. Allowed values: `PAST_24H` (last 24 hours), `PAST_7D` (last 7 days), `PAST_30D` (last 30 days).


**Request body:**

- `application/json` → `notifications.v1.UpdateUserNotificationsReadRequest`


**Responses:**

- `204` — Notifications updated successfully.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /notifications/v1/user-notifications:summary` — Get notification summary

Returns the authenticated user's total unread notification count along with
a breakdown by severity.



**Responses:**

- `200` — Notification summary. — body: `notifications.v1.Summary`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Cluster Mgmt for Kafka (v2)

### Clusters (cmk/v2)

`Clusters` objects represent Apache Kafka Clusters on Confluent Cloud.

The API allows you to list, create, read, update, and delete your Kafka clusters.


Related guide: [Confluent Cloud Cluster Management for Apache Kafka APIs](https://docs.confluent.io/cloud/current/clusters/cluster-api.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `kafka_clusters_per_environment` | Number of clusters in one Confluent Cloud environment |

#### `GET /cmk/v2/clusters` — List of Clusters

Retrieve a sorted, filtered, paginated list of all clusters.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.network` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.network. Pass multiple times to see results matching any of the values.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /cmk/v2/clusters` — Create a Cluster

Make a request to create a cluster.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Cluster is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /cmk/v2/clusters/{id}` — Delete a Cluster

Make a request to delete a cluster.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the cluster.



**Responses:**

- `204` — A Cluster is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /cmk/v2/clusters/{id}` — Read a Cluster

Make a request to read a cluster.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the cluster.



**Responses:**

- `200` — Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /cmk/v2/clusters/{id}` — Update a Cluster

Make a request to update a cluster.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the cluster.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Cluster Mgmt for ksqlDB (v2)

### Clusters (ksqldbcm/v2)

`Cluster` represents a ksqlDB runtime that you can issue queries to using its API endpoint.
It executes SQL statements and queries which under the hood get built into corresponding
Kafka Streams topologies. The API allows you to list, create, read, and delete your ksqlDB clusters.


Related guide: [ksqlDB in Confluent Cloud](https://docs.confluent.io/cloud/current/ksqldb/ksqldb-cluster-api.html).



## Quotas and Limits
This resource is subject to the following quotas:

| Quota | Description |
| --- | --- |
| `ksql.limits.max_apps_per_cluster` | Clusters in one Confluent Cloud Kafka Cluster. |

#### `GET /ksqldbcm/v2/clusters` — List of Clusters

Retrieve a sorted, filtered, paginated list of all clusters.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /ksqldbcm/v2/clusters` — Create a Cluster

Make a request to create a cluster.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Cluster is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /ksqldbcm/v2/clusters/{id}` — Delete a Cluster

Make a request to delete a cluster.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the cluster.



**Responses:**

- `204` — A Cluster is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /ksqldbcm/v2/clusters/{id}` — Read a Cluster

Make a request to read a cluster.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the cluster.



**Responses:**

- `200` — Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Connect API (v1)

### Connectors (connect/v1)

API for Managed Connectors or Custom Connectors in Confluent Cloud.

The API allows you to list, create, get, update and delete a Managed Connector or Custom Connector in Confluent Cloud.

Connect metrics are available through the [Metrics v2 API](https://api.telemetry.confluent.cloud/docs#tag/Version-2).

Related guide: [Confluent Cloud API and Managed Connectors](https://docs.confluent.io/cloud/current/connectors/connect-api-section.html).

#### `GET /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors` — List of Connectors

Retrieve a list of "names" of the active connectors. You can then make a [read request](#operation/readConnectv1Connector) for a specific connector by name.



**Responses:**

- `200` — Connector. — body: array of `string`
- `401` → response: `connect.v1.UnauthenticatedError`
- `404` → response: `connect.v1.AccountNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


#### `POST /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors` — Create a Connector

Create a new connector. Returns the new connector information if successful.


**Request body:**

- `application/json` → `object`


**Responses:**

- `201` — Created — body: `connect.v1.ConnectorWithOffsets`
- `400` — Bad Request — body: `object`
- `401` → response: `connect.v1.UnauthenticatedError`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error — body: `object`


#### `DELETE /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors/{connector_name}` — Delete a Connector

Delete a connector. Halts all tasks and deletes the connector configuration.



**Responses:**

- `200` → response: `connect.v1.OK`
- `401` → response: `connect.v1.UnauthenticatedError`
- `404` → response: `connect.v1.ResourceNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


#### `GET /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors/{connector_name}` — Read a Connector

Get information about the connector.



**Responses:**

- `200` — Connector. — body: `connect.v1.Connector`
- `401` → response: `connect.v1.UnauthenticatedError`
- `404` → response: `connect.v1.AccountNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


#### `GET /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors/{connector_name}/config` — Read a Connector Configuration

Get the configuration for the connector.



**Responses:**

- `200` — Connector. — body: `object`
- `401` → response: `connect.v1.UnauthenticatedError`
- `404` → response: `connect.v1.AccountNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


#### `PUT /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors/{connector_name}/config` — Create or Update a Connector Configuration

Create a new connector using the given configuration, or update the configuration for an existing connector. Returns information about the connector after the change has been made.


**Request body:**

- `application/json` → `object`


**Responses:**

- `200` — Created — body: `connect.v1.Connector`
- `400` → response: `connect.v1.BadRequestError`
- `401` → response: `connect.v1.UnauthenticatedError`
- `404` → response: `connect.v1.AccountNotFoundError`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error — body: `object`


#### `GET /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors?expand=info,status,id` — List of Connectors with Expansions

Retrieve an object with the queried expansions of all connectors. Without `expand` query parameter, this list connector’s endpoint will return a [list of only the connector names](#operation/listConnectv1Connectors).

**Parameters:**

- `environment_id` · in: path · type: `string` · required — The unique identifier of the environment this resource belongs to.
- `kafka_cluster_id` · in: path · type: `string` · required — The unique identifier for the Kafka cluster.
- `expand` · in: query · type: `string` — - id : Returns metadata of each connector such as id and id type. - info : Returns metadata of each connector such as the configuration, task information, and type of connector. - status : Returns add…



**Responses:**

- `200` — Connector. — body: `connect.v1.ConnectorExpansionMap`
- `401` → response: `connect.v1.UnauthenticatedError`
- `404` → response: `connect.v1.AccountNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


### Lifecycle (connect/v1)

API for managing the lifecycle for a Managed Connector or Custom Connector in Confluent Cloud. Operations currently supported are Pause and Resume.

#### `PUT /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors/{connector_name}/pause` — Pause a Connector

Pause the connector and its tasks. Stops message processing until the connector is resumed. This call is asynchronous and the tasks will not transition to PAUSED state at the same time.



**Responses:**

- `202` — Accepted
- `401` → response: `connect.v1.UnauthenticatedError`
- `404` → response: `connect.v1.ResourceNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


#### `POST /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors/{connector_name}/restart` — Restart a Connector

Restart the connector and its tasks. Stops message processing until the connector and tasks are restart. This call is asynchronous and the connector will not transition to another state at the same time.



**Responses:**

- `202` — Accepted
- `401` → response: `connect.v1.UnauthenticatedError`
- `403` → response: `connect.v1.ForbiddenError`
- `404` → response: `connect.v1.ResourceNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


#### `PUT /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors/{connector_name}/resume` — Resume a Connector

Resume a paused connector or do nothing if the connector is not paused. This call is asynchronous and the tasks will not transition to RUNNING state at the same time.



**Responses:**

- `202` — Accepted
- `401` → response: `connect.v1.UnauthenticatedError`
- `404` → response: `connect.v1.ResourceNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


### Status (connect/v1)

API for requesting the status or the tasks for a Managed Connector or Custom Connector in Confluent Cloud.

#### `GET /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors/{connector_name}/status` — Read a Connector Status

Get current status of the connector. This includes whether it is running, failed, or paused. Also includes which worker it is assigned to, error information if it has failed, and the state of all its tasks.



**Responses:**

- `200` — Connector. — body: `object`
- `401` → response: `connect.v1.UnauthenticatedError`
- `404` → response: `connect.v1.AccountNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


#### `GET /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors/{connector_name}/tasks` — List of Connector Tasks

Get a list of tasks currently running for the connector.



**Responses:**

- `200` — Connector Task. — body: `connect.v1.Connectors`
- `401` → response: `connect.v1.UnauthenticatedError`
- `404` → response: `connect.v1.AccountNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


### Managed Connector Plugins (connect/v1)

API for Managed connectors in Confluent Cloud.

#### `GET /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connector-plugins` — List of Managed Connector plugins

Return a list of Managed Connector plugins installed in the Kafka Connect cluster.



**Responses:**

- `200` — Connector Plugin. — body: array of `object`
- `401` → response: `connect.v1.UnauthenticatedError`
- `404` → response: `connect.v1.ResourceNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


#### `PUT /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connector-plugins/{plugin_name}/config/translate?mask_sensitive=true` — Translate Self Managed Connector Plugin Configurations to Fully Managed Connector Plugin Configurations

Translate the provided Self Managed configuration values. This API performs configuration translation
and returns the translated fully managed configuration along with any errors or warnings. 
Query Parameter `mask_sensitive=true` redacts sensitive config values in response.


**Request body:**

- `application/json` → `object`


**Responses:**

- `200` — Connector Plugin translation result. — body: `object`
- `400` → response: `connect.v1.BadRequestError`
- `401` → response: `connect.v1.UnauthenticatedError`
- `403` → response: `connect.v1.ForbiddenError`
- `404` → response: `connect.v1.ResourceNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


#### `PUT /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connector-plugins/{plugin_name}/config/validate` — Validate a Managed Connector Plugin

Validate the provided configuration values against the configuration definition. This API performs per config validation and returns suggested values and validation error messages.


**Request body:**

- `application/json` → `object`


**Responses:**

- `200` — Connector Plugin. — body: `object`
- `401` → response: `connect.v1.UnauthenticatedError`
- `404` → response: `connect.v1.ResourceNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


### Offsets (connect/v1)

API for managing the offsets for a Managed Connector.

Related guide: [Manage Connector Offsets](https://docs.confluent.io/cloud/current/connectors/offsets.html#manage-offsets-for-fully-managed-connectors-in-ccloud)

#### `GET /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors/{connector_name}/offsets` — Get a Connector Offsets

Get the current offsets for the connector. The offsets provide information on the point in the source system, 
from which the connector is pulling in data. The offsets of a connector are continuously observed periodically and are queryable via this API.



**Responses:**

- `200` — Connector Offsets. — body: `connect.v1.ConnectorOffsets`
- `400` → response: `connect.v1.BadRequestError`
- `401` → response: `connect.v1.UnauthenticatedError`
- `403` → response: `connect.v1.ForbiddenError`
- `404` → response: `connect.v1.ResourceNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


#### `POST /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors/{connector_name}/offsets/request` — Request to Alter the Connector Offsets

Request to alter the offsets of a connector. This supports the ability to PATCH/DELETE the offsets of a connector.
Note, you will see momentary downtime as this will internally stop the connector, while the offsets are being altered.
You can only make one alter offsets request at a time for a connector.


**Request body:**

- `application/json` → `connect.v1.AlterOffsetRequest`


**Responses:**

- `202` — Accepted — body: `connect.v1.AlterOffsetRequestInfo`
- `400` → response: `connect.v1.BadRequestError`
- `401` → response: `connect.v1.UnauthenticatedError`
- `403` → response: `connect.v1.ForbiddenError`
- `404` → response: `connect.v1.ResourceNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


#### `GET /connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connectors/{connector_name}/offsets/request/status` — Get the Status of Alter Offset Request

Get the status of the previous alter offset request.



**Responses:**

- `200` — Connector Offsets Request Status. — body: `connect.v1.AlterOffsetStatus`
- `400` → response: `connect.v1.BadRequestError`
- `401` → response: `connect.v1.UnauthenticatedError`
- `403` → response: `connect.v1.ForbiddenError`
- `404` → response: `connect.v1.ResourceNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `connect.v1.DefaultSystemError`


### Custom Connector Plugins (connect/v1)

CustomConnectorPlugins objects represent Custom Connector Plugins on Confluent Cloud.
The API allows you to list, create, read, update, and delete your Custom Connector Plugins.
Related guide:
[Custom Connector Plugin API](https://docs.confluent.io/cloud/current/connectors/connect-api-section.html).

#### `GET /connect/v1/custom-connector-plugins` — List of Custom Connector Plugins

Retrieve a sorted, filtered, paginated list of all custom connector plugins.

If no `cloud` filter is specified, returns custom connector plugins from all clouds.

**Parameters:**

- `cloud` · in: query · type: `SearchFilter` — Filter the results by exact match for cloud.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Custom Connector Plugin.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /connect/v1/custom-connector-plugins` — Create a Custom Connector Plugin

Make a request to create a custom connector plugin.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Custom Connector Plugin was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /connect/v1/custom-connector-plugins/{id}` — Delete a Custom Connector Plugin

Make a request to delete a custom connector plugin.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the custom connector plugin.



**Responses:**

- `204` — A Custom Connector Plugin is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /connect/v1/custom-connector-plugins/{id}` — Read a Custom Connector Plugin

Make a request to read a custom connector plugin.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the custom connector plugin.



**Responses:**

- `200` — Custom Connector Plugin.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /connect/v1/custom-connector-plugins/{id}` — Update a Custom Connector Plugin

Make a request to update a custom connector plugin.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the custom connector plugin.


**Request body:**

- `application/json` → `connect.v1.CustomConnectorPlugin`


**Responses:**

- `200` — Custom Connector Plugin.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Presigned Urls (connect/v1)

Request a presigned upload URL for new Custom Connector Plugin. Note that
the URL policy expires in one hour. If the policy expires, you can request
a new presigned upload URL.

Related guide:
[Custom Connector Plugin API](https://docs.confluent.io/cloud/current/connectors/connect-api-section.html).

#### `POST /connect/v1/presigned-upload-url` — Request a presigned upload URL for a new Custom Connector Plugin.

Request a presigned upload URL to upload a Custom Connector Plugin archive.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Presigned Url.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Custom Connector Runtimes (connect/v1)

List of supported runtime languages for Custom Connector Plugin. The list defines the supported
entries for confluent.custom.connect.plugin.runtime attribute in CustomConnectorPlugin object.
Each entry also defines the set of supported java versions for that runtime which can be specified during
connector provisioning via the confluent.custom.connect.plugin.java.version attribute.

#### `GET /connect/v1/custom-connector-runtimes` — List of Custom Connector Runtimes

Retrieve a sorted, filtered, paginated list of all custom connector runtimes.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Custom Connector Runtime.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Connect Artifact Management (v1)

### Connect Artifacts (cam/v1)

`Connect Artifact` objects represent collection of Custom SMTs, user-defined message
transformations that can be applied to Kafka connectors.

The API allows you to upload, retrieve, and delete Connect Artifact, as well as list all
available Connect Artifact for use in your connectors.
Currently, Connect Artifacts can only be used by connectors running on
Enterprise, Freight, or Dedicated Kafka Connect clusters on AWS,
configured with one of the following network types: PrivateLink, Peering/Transit Gateway, or PNI.

#### `GET /cam/v1/connect-artifacts` — List of Connect Artifacts

Retrieve a sorted, filtered, paginated list of all connect artifacts.

**Parameters:**

- `spec.cloud` · in: query · type: `SearchFilter` · required — Filter the results by exact match for spec.cloud.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Connect Artifact.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /cam/v1/connect-artifacts` — Create a new Connect Artifact.

Make a request to create a connect artifact.

**Parameters:**

- `spec.cloud` · in: query · type: `SearchFilter` · required — Scope the operation to the given spec.cloud.
- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Connect Artifact is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /cam/v1/connect-artifacts/{id}` — Delete a Connect Artifact

Make a request to delete a connect artifact.

This request fails if existing workloads are using this artifact.

**Parameters:**

- `spec.cloud` · in: query · type: `SearchFilter` · required — Scope the operation to the given spec.cloud.
- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the connect artifact.



**Responses:**

- `204` — A Connect Artifact is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /cam/v1/connect-artifacts/{id}` — Read a Connect Artifact

Make a request to read a connect artifact.

**Parameters:**

- `spec.cloud` · in: query · type: `SearchFilter` · required — Scope the operation to the given spec.cloud.
- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the connect artifact.



**Responses:**

- `200` — Connect Artifact.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Presigned Urls (cam/v1)

Request a presigned upload URL for new Connect Artifact. Note that
the URL policy expires in one hour. If the policy expires, you can request
a new presigned upload URL.

#### `POST /cam/v1/presigned-upload-url` — Request a presigned upload URL for a new Connect Artifact.

Request a presigned upload URL to upload a Connect Artifact archive.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Presigned Url.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Kafka API (v3)

### Cluster (v3)

#### `GET /kafka/v3/clusters/{cluster_id}` — Get Cluster

Return the Kafka cluster with the specified ``cluster_id``.



**Responses:**

- `200` → response: `GetClusterResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


### Configs (v3)

#### `GET /kafka/v3/clusters/{cluster_id}/broker-configs` — List Dynamic Broker Configs

Return a list of dynamic cluster-wide broker configuration parameters for the specified Kafka
cluster. Returns an empty list if there are no dynamic cluster-wide broker configuration parameters.



**Responses:**

- `200` → response: `ListClusterConfigsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `DELETE /kafka/v3/clusters/{cluster_id}/broker-configs/{name}` — Reset Dynamic Broker Config

Reset the configuration parameter specified by ``name`` to its
default value by deleting a dynamic cluster-wide configuration.



**Responses:**

- `204` — No Content
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/broker-configs/{name}` — Get Dynamic Broker Config

Return the dynamic cluster-wide broker configuration parameter specified by ``name``.



**Responses:**

- `200` → response: `GetClusterConfigResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `PUT /kafka/v3/clusters/{cluster_id}/broker-configs/{name}` — Update Dynamic Broker Config

Update the dynamic cluster-wide broker configuration parameter specified by ``name``.



**Responses:**

- `204` — No Content
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/broker-configs:alter` — Batch Alter Dynamic Broker Configs

Update or delete a set of dynamic cluster-wide broker configuration parameters.



**Responses:**

- `204` — No Content
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/groups/{group_id}/configs` — List all configs of the group

List all configurations for the specified group. This API supports consumer groups, share groups, and streams groups.



**Responses:**

- `200` → response: `ListGroupConfigsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `DELETE /kafka/v3/clusters/{cluster_id}/groups/{group_id}/configs/{name}` — Delete group config

Delete the dynamic configuration override with the specified name for the specified group. After deletion, the default group configuration will be applied. This API supports consumer groups, share groups, and streams groups.



**Responses:**

- `204` → response: `NoContentResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/groups/{group_id}/configs/{name}` — Get group config

Get the configuration with the specified name for the specified group. This API supports consumer groups, share groups, and streams groups.



**Responses:**

- `200` → response: `GetGroupConfigResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `PUT /kafka/v3/clusters/{cluster_id}/groups/{group_id}/configs/{name}` — Update group config

Update the configuration with the specified name for the specified group. This API supports consumer groups, share groups, and streams groups.



**Responses:**

- `204` → response: `NoContentResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/groups/{group_id}/configs:alter` — Batch Alter Group Configs

Batch alter configurations for the specified group. This API supports consumer groups, share groups, and streams groups.

**Parameters:**




**Responses:**

- `204` — No Content
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/topics/-/configs` — List All Topic Configs

Return the list of configuration parameters for all topics hosted by the specified
cluster.



**Responses:**

- `200` → response: `ListTopicConfigsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/topics/{topic_name}/configs` — List Topic Configs

Return the list of configuration parameters that belong to the specified topic.



**Responses:**

- `200` → response: `ListTopicConfigsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `DELETE /kafka/v3/clusters/{cluster_id}/topics/{topic_name}/configs/{name}` — Reset Topic Config

Reset the configuration parameter with given `name` to its default value.



**Responses:**

- `204` — No Content
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/topics/{topic_name}/configs/{name}` — Get Topic Config

Return the configuration parameter with the given `name`.



**Responses:**

- `200` → response: `GetTopicConfigResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `PUT /kafka/v3/clusters/{cluster_id}/topics/{topic_name}/configs/{name}` — Update Topic Config

Update the configuration parameter with given `name`. To update the
number of partitions, see
https://docs.confluent.io/cloud/current/api.html#tag/Topic-(v3)/operation/updatePartitionCountKafkaTopic.



**Responses:**

- `204` — No Content
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/topics/{topic_name}/configs:alter` — Batch Alter Topic Configs

Update or delete a set of topic configuration parameters.
Also supports a dry-run mode that only validates whether the operation would succeed if the
``validate_only`` request property is explicitly specified and set to true.



**Responses:**

- `204` — No Content
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/topics/{topic_name}/default-configs` — List New Topic Default Configs

List the default configuration parameters used if the topic were to be newly created.



**Responses:**

- `200` → response: `ListTopicConfigsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


### ACL (v3)

#### `DELETE /kafka/v3/clusters/{cluster_id}/acls` — Delete ACLs

Delete the ACLs that match the search criteria.

**Parameters:**




**Responses:**

- `200` → response: `DeleteAclsResponse`
- `400` → response: `BadRequestErrorResponse_DeleteAcls`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/acls` — List ACLs

- When calling `/acls` without the `principal` parameter, service
  accounts are returned in numeric ID format (e.g., `User:12345`).
- To retrieve service accounts in the `sa-xxx` format, use
  `/acls?principal=UserV2:*`.
- The `principal` parameter supports both legacy `User:` format and
  new `UserV2:` format for service accounts.
Return a list of ACLs that match the search criteria.

**Parameters:**




**Responses:**

- `200` → response: `SearchAclsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/acls` — Create an ACL

Create an ACL.



**Responses:**

- `201` — Created
- `400` → response: `BadRequestErrorResponse_CreateAcls`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/acls:batch` — Batch Create ACLs

Create ACLs.



**Responses:**

- `201` — Created
- `400` → response: `BadRequestErrorResponse_CreateAcls`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


### Consumer Group (v3)

#### `GET /kafka/v3/clusters/{cluster_id}/consumer-groups` — List Consumer Groups

Return the list of consumer groups that belong to the specified
Kafka cluster.



**Responses:**

- `200` → response: `ListConsumerGroupsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/consumer-groups/{consumer_group_id}` — Get Consumer Group

Return the consumer group specified by the ``consumer_group_id``.



**Responses:**

- `200` → response: `GetConsumerGroupResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/consumer-groups/{consumer_group_id}/consumers` — List Consumers

Return a list of consumers that belong to the specified consumer
group.



**Responses:**

- `200` → response: `ListConsumersResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/consumer-groups/{consumer_group_id}/consumers/{consumer_id}` — Get Consumer

Return the consumer specified by the ``consumer_id``.



**Responses:**

- `200` → response: `GetConsumerResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/consumer-groups/{consumer_group_id}/lag-summary` — Get Consumer Group Lag Summary

Return the maximum and total lag of the consumers belonging to the
specified consumer group.



**Responses:**

- `200` → response: `GetConsumerGroupLagSummaryResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/consumer-groups/{consumer_group_id}/lags` — List Consumer Lags

Return a list of consumer lags of the consumers belonging to the
specified consumer group.



**Responses:**

- `200` → response: `ListConsumerLagsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/consumer-groups/{consumer_group_id}/lags/{topic_name}/partitions/{partition_id}` — Get Consumer Lag

Return the consumer lag on a partition with the given `partition_id`.



**Responses:**

- `200` → response: `GetConsumerLagResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


### Partition (v3)

#### `GET /kafka/v3/clusters/{cluster_id}/topics/{topic_name}/partitions` — List Partitions

Return the list of partitions that belong to the specified topic.



**Responses:**

- `200` → response: `ListPartitionsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/topics/{topic_name}/partitions/{partition_id}` — Get Partition

Return the partition with the given `partition_id`.



**Responses:**

- `200` → response: `GetPartitionResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


### Topic (v3)

#### `GET /kafka/v3/clusters/{cluster_id}/topics` — List Topics

Return the list of topics that belong to the specified Kafka cluster.



**Responses:**

- `200` → response: `ListTopicsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/topics` — Create Topic

Create a topic.
Also supports a dry-run mode that only validates whether the topic creation would succeed
if the ``validate_only`` request property is explicitly specified and set to true. Note that
when dry-run mode is being used the response status would be 200 OK instead of 201 Created.



**Responses:**

- `200` → response: `CreateTopicResponse`
- `201` → response: `CreateTopicResponse`
- `400` → response: `BadRequestErrorResponse_CreateTopic`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `DELETE /kafka/v3/clusters/{cluster_id}/topics/{topic_name}` — Delete Topic

Delete the topic with the given `topic_name`.



**Responses:**

- `204` — No Content
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/topics/{topic_name}` — Get Topic

Return the topic with the given `topic_name`.

**Parameters:**




**Responses:**

- `200` → response: `GetTopicResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `PATCH /kafka/v3/clusters/{cluster_id}/topics/{topic_name}` — Update Partition Count

Increase the number of partitions for a topic. To update other topic
configurations, see https://docs.confluent.io/cloud/current/api.html#tag/Configs-(v3)/operation/updateKafkaTopicConfig.


**Request body:**

- `application/json` → `UpdatePartitionCountRequestData`


**Responses:**

- `200` → response: `GetTopicResponse`
- `400` → response: `BadRequestErrorResponse_UpdatePartitionCountTopic`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


### Records (v3)

#### `POST /kafka/v3/clusters/{cluster_id}/topics/{topic_name}/records` — Produce Records

Produce records to the given topic, returning delivery reports for each
record produced. This API can be used in streaming mode by setting
"Transfer-Encoding: chunked" header. For as long as the connection is
kept open, the server will keep accepting records. Records are streamed
to and from the server as Concatenated JSON. For each record sent to the
server, the server will asynchronously send back a delivery report, in
the same order, each with its own error_code. An error_code of 200
indicates success. The HTTP status code will be HTTP 200 OK as long as
the connection is successfully established. To identify records that
have encountered an error, check the error_code of each delivery report.

Note that the cluster_id is validated only when running in Confluent Cloud.

This API currently does not support Schema Registry integration. Sending
schemas is not supported. Only BINARY, JSON, and STRING formats are
supported.



**Responses:**

- `200` → response: `ProduceResponse`
- `400` → response: `BadRequestErrorResponse_ProduceRecords`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `413` → response: `RequestEntityTooLargeErrorResponse`
- `415` → response: `UnsupportedMediaTypeErrorResponse`
- `422` → response: `UnprocessableEntity_ProduceRecord`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


### Cluster Linking (v3)

#### `GET /kafka/v3/clusters/{cluster_id}/links` — List all cluster links in the dest cluster

``link_id`` in ``ListLinksResponseData`` is deprecated and may be removed in a future release. Use the new ``cluster_link_id`` instead.



**Responses:**

- `200` → response: `ListLinksResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/links` — Create a cluster link

Cluster link creation requires source cluster security configurations in
the configs JSON section of the data request payload.

**Parameters:**




**Responses:**

- `204` → response: `NoContentResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/links/-/mirrors` — List mirror topics

List all mirror topics in the cluster

**Parameters:**




**Responses:**

- `200` → response: `ListMirrorTopicsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `DELETE /kafka/v3/clusters/{cluster_id}/links/{link_name}` — Delete the cluster link

**Parameters:**




**Responses:**

- `200` → response: `NoContentResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/links/{link_name}` — Describe the cluster link

``link_id`` in ``ListLinksResponseData`` is deprecated and may be removed in a future release. Use the new ``cluster_link_id`` instead.

**Parameters:**




**Responses:**

- `200` → response: `GetLinkResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/links/{link_name}/configs` — List all configs of the cluster link



**Responses:**

- `200` → response: `ListLinkConfigsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `DELETE /kafka/v3/clusters/{cluster_id}/links/{link_name}/configs/{config_name}` — Reset the given config to default value



**Responses:**

- `204` → response: `NoContentResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/links/{link_name}/configs/{config_name}` — Describe the config under the cluster link



**Responses:**

- `200` → response: `GetLinkConfigsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `PUT /kafka/v3/clusters/{cluster_id}/links/{link_name}/configs/{config_name}` — Alter the config under the cluster link



**Responses:**

- `204` → response: `NoContentResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `PUT /kafka/v3/clusters/{cluster_id}/links/{link_name}/configs:alter` — Batch Alter Cluster Link Configs

Batch Alter Cluster Link Configs

**Parameters:**




**Responses:**

- `204` — No Content
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/links/{link_name}/mirrors` — List mirror topics

List all mirror topics under the link

**Parameters:**




**Responses:**

- `200` → response: `ListMirrorTopicsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/links/{link_name}/mirrors` — Create a mirror topic

Create a topic in the destination cluster mirroring a topic in
the source cluster



**Responses:**

- `204` → response: `NoContentResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/links/{link_name}/mirrors/{mirror_topic_name}` — Describe the mirror topic

**Parameters:**




**Responses:**

- `200` → response: `DescribeMirrorTopicResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/links/{link_name}/mirrors:failover` — Failover the mirror topics



**Responses:**

- `200` → response: `AlterMirrorStatusResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/links/{link_name}/mirrors:pause` — Pause the mirror topics



**Responses:**

- `200` → response: `AlterMirrorStatusResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/links/{link_name}/mirrors:promote` — Promote the mirror topics



**Responses:**

- `200` → response: `AlterMirrorStatusResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/links/{link_name}/mirrors:resume` — Resume the mirror topics



**Responses:**

- `200` → response: `AlterMirrorStatusResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/links/{link_name}/mirrors:reverse-and-pause-mirror` — Reverse the local mirror topic and Pause the remote mirror topic



**Responses:**

- `200` → response: `AlterMirrorStatusResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/links/{link_name}/mirrors:reverse-and-start-mirror` — Reverse the local mirror topic and start the remote mirror topic



**Responses:**

- `200` → response: `AlterMirrorStatusResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `POST /kafka/v3/clusters/{cluster_id}/links/{link_name}/mirrors:truncate-and-restore` — Truncates the local topic to the remote stopped mirror log end offsets and restores mirroring to the local topic to mirror from the remote topic



**Responses:**

- `200` → response: `AlterMirrorStatusResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


### Share Group (v3)

#### `GET /kafka/v3/clusters/{cluster_id}/share-groups` — List Share Groups

Return the list of share groups that belong to the specified
Kafka cluster.



**Responses:**

- `200` → response: `ListShareGroupsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `DELETE /kafka/v3/clusters/{cluster_id}/share-groups/{group_id}` — Delete Share Group

Delete the share group specified by the ``group_id``.



**Responses:**

- `204` → response: `NoContentResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `404` → response: `NotFoundErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/share-groups/{group_id}` — Get Share Group

Return the share group specified by the ``group_id``.



**Responses:**

- `200` → response: `GetShareGroupResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/share-groups/{group_id}/consumers` — List Share Group Consumers

Return a list of consumers that belong to the specified share
group.



**Responses:**

- `200` → response: `ListShareGroupConsumersResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/share-groups/{group_id}/consumers/{consumer_id}` — Get Share Group Consumer

Return the consumer specified by the ``consumer_id``.



**Responses:**

- `200` → response: `GetShareGroupConsumerResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/share-groups/{group_id}/consumers/{consumer_id}/assignments` — List Share Group Consumer Assignments

Return the consumer assignments specified by the ``consumer_id``.



**Responses:**

- `200` → response: `ListShareGroupConsumerAssignmentsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


### Streams Group (v3)

#### `GET /kafka/v3/clusters/{cluster_id}/streams-groups` — List Streams Groups

Return the list of streams groups that belong to the specified Kafka cluster



**Responses:**

- `200` → response: `ListStreamsGroupsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/streams-groups/{group_id}` — Get Streams Group

Return the streams group specified by the ``group_id``.



**Responses:**

- `200` → response: `GetStreamsGroupResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/streams-groups/{group_id}/members` — List Streams Group Members

Return a list of members that belong to the specified streams group.



**Responses:**

- `200` → response: `ListStreamsGroupMembersResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/streams-groups/{group_id}/members/{member_id}` — Get Streams Group Member

Return the members specified by the ``member_id``.



**Responses:**

- `200` → response: `GetStreamsGroupMemberResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/streams-groups/{group_id}/members/{member_id}/assignments` — Get Streams Group Member Assignments

Return the assignments of the member specified by the ``member_id``.



**Responses:**

- `200` → response: `GetStreamsGroupMemberAssignmentsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/streams-groups/{group_id}/members/{member_id}/assignments/{assignments_type}` — List Streams Group Assignments of a Specific Type

Return the tasks of the member specified by the ``member_id``, and the type ``assignments_type``.



**Responses:**

- `200` → response: `ListStreamsTasksResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/streams-groups/{group_id}/members/{member_id}/assignments/{assignments_type}/subtopologies/{subtopology_id}` — List Streams Group Assignments Task Partitions of a Specific Type and Subtopology

Return the tasks of the member specified by the ``member_id``, and the type ``assignments_type``.



**Responses:**

- `200` → response: `GetStreamsTaskResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/streams-groups/{group_id}/members/{member_id}/target-assignments` — Get Streams Group Member Target Assignments

Return the target assignments of the member specified by the ``member_id``.



**Responses:**

- `200` → response: `GetStreamsGroupMemberAssignmentsResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/streams-groups/{group_id}/members/{member_id}/target-assignments/{assignments_type}` — List Streams Group Target Assignments of a Specific Type

Return the target tasks of the member specified by the ``member_id``, and the type ``assignments_type``.



**Responses:**

- `200` → response: `ListStreamsTasksResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/streams-groups/{group_id}/members/{member_id}/target-assignments/{assignments_type}/subtopologies/{subtopology_id}` — List Streams Group Target Assignments Task Partitions of a Specific Type and Subtopology

Return the tasks of the member specified by the ``member_id``, and the type ``assignments_type``.



**Responses:**

- `200` → response: `GetStreamsTaskResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/streams-groups/{group_id}/subtopologies` — List Streams Group Subtopologies

Return a list of subtopologies that belong to the specified streams group.



**Responses:**

- `200` → response: `ListStreamsGroupSubtopologiesResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


#### `GET /kafka/v3/clusters/{cluster_id}/streams-groups/{group_id}/subtopologies/{subtopology_id}` — Get Streams Group Subtopology

Return the subtopology specified by the ``subtopology_id``.



**Responses:**

- `200` → response: `GetStreamsGroupSubtopologyResponse`
- `400` → response: `BadRequestErrorResponse`
- `401` → response: `UnauthorizedErrorResponse`
- `403` → response: `ForbiddenErrorResponse`
- `429` → response: `TooManyRequestsErrorResponse`
- `5XX` → response: `ServerErrorResponse`


## Service Quota API (v1)

### Applied Quotas (service-quota/v1)

A `quota` object represents a quota configuration for a specific Confluent Cloud resource.
Use this API to retrieve an individual quota or list of quotas for a given scope.


Related guide: [Service Quotas for Confluent Cloud](https://docs.confluent.io/cloud/current/quotas/index.html).

#### `GET /service-quota/v1/applied-quotas` — List of Applied Quotas

Retrieve a sorted, filtered, paginated list of all applied quotas.

Shows all quotas for a given scope.

**Parameters:**

- `scope` · in: query · type: `SearchFilter` · required — The applied scope the quota belongs to.
- `environment` · in: query · type: `SearchFilter` — The environment ID the quota is associated with.
- `network` · in: query · type: `SearchFilter` — The network ID the quota is associated with.
- `kafka_cluster` · in: query · type: `SearchFilter` — The kafka cluster ID the quota is associated with.
- `id` · in: query · type: `SearchFilter` — The id (quota code) that this quota belongs to.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Applied Quota.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /service-quota/v1/applied-quotas/{id}` — Read an Applied Quota

Make a request to read an applied quota.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` — The environment ID the quota is associated with. This field is only required when retrieving a single quota and the scope of quota is "ENVIRONMENT" or "NETWORK" or "KAFKA_CLUSTER".
- `network` · in: query · type: `SearchFilter` — The network ID the quota is associated with. This field is only required when retrieving a single quota and the scope of quota is "NETWORK".
- `kafka_cluster` · in: query · type: `SearchFilter` — The kafka cluster ID the quota is associated with. This field is required only when the scope of quota is "KAFKA_CLUSTER".
- `id` · in: path · type: `string` · required — The unique identifier for the applied quota.



**Responses:**

- `200` — Applied Quota.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Scopes (service-quota/v1)

Gets a list of all available scopes for applied quotas.


Related guide: [Quota Scopes](https://docs.confluent.io/cloud/current/quotas/quotas.html#query-for-scopes).

#### `GET /service-quota/v1/scopes` — List of Scopes

Retrieve a sorted, filtered, paginated list of all scopes.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Scope.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /service-quota/v1/scopes/{id}` — Read a Scope

Make a request to read a scope.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the scope.



**Responses:**

- `200` — Scope.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Partner API (v2)

### Entitlements (partner/v2)

`Entitlement` objects represent metadata about a marketplace entitlement.

An entitlement includes metadata about a marketplace purchase
(start date, end date, billing information, partner IDs, etc).
The API allows partners to create, read, and list entitlements. (Unless you
need entitlement creation and customer registration to be separate,
we recommend using the Signup API to create an organization and entitlement
at the same time)

The API only allows authorized partners to interact with the Entitlements API.

#### `GET /partner/v2/entitlements` — List of Entitlements

Retrieve a sorted, filtered, paginated list of all entitlements.

**Parameters:**

- `organization.id` · in: query · type: `SearchFilter` — Filter the results by exact match for organization.id.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Entitlement. — body: `partner.v2.EntitlementList`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /partner/v2/entitlements` — Create an Entitlement

Make a request to create an entitlement.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — An Entitlement is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /partner/v2/entitlements/{id}` — Read an Entitlement

Make a request to read an entitlement.

**Parameters:**

- `organization.id` · in: query · type: `SearchFilter` — Scope the operation to the given organization.id.
- `id` · in: path · type: `string` · required — The unique identifier for the entitlement.



**Responses:**

- `200` — Entitlement.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Organizations (partner/v2)

`Organizations` objects represent an entire Confluent Cloud organization.
Partners are allowed to get an organization they have signed up or
list all organizations they have signed up.

#### `GET /partner/v2/organizations` — List of Organizations

Retrieve a sorted, filtered, paginated list of all organizations.

**Parameters:**

- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Organization. — body: `partner.v2.OrganizationList`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /partner/v2/organizations/{id}` — Read an Organization

Make a request to read an organization.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the organization.



**Responses:**

- `200` — Organization.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Signup (partner/v2)

`Signup` APIs can only be performed by partners.

#### `POST /partner/v2/signup` — Signup an Organization on behalf of a Customer

Create an organization for a customer. You must pass in either an entitlement object reference (a url to 
a previously created entitlement) or entitlement details. If you pass in an entitlement object reference, we will link with the 
created entitlement. If you pass in the entitlement details, we will create the entitlement with the organization 
in a single transaction. If you pass in user details (email, given name, and family name), we will
create a user as well. If you do not pass in user details, you MUST call `/partner/v2/signup/activate`
with user details to complete signup.

**Parameters:**

- `dry_run` · in: query · type: `boolean` — If true, only perform validation of signup


**Request body:**

- `application/json` → `PartnerSignupRequest`


**Responses:**

- `201` — Successful signup. — body: `PartnerSignupResponse`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /partner/v2/signup/activate` — Activate an Incomplete Signup

Creates a user in the organization previously created in `/partner/v2/signup`. This completes the signup
process if you did not pass in user details to `/partner/v2/signup`. Calling this endpoint if the signup 
process has been completed will result in a `409 Conflict` error.


**Request body:**

- `application/json` → `ActivatePartnerSignupRequest`


**Responses:**

- `201` — Successful signup activation. User is being created. — body: `PartnerSignupResponse`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /partner/v2/signup/link` — Signup a Customer by Linking to an Existing Organization

Signup a customer by linking a new entitlement to an existing Confluent Cloud organization.

**Parameters:**

- `dry_run` · in: query · type: `boolean` — If true, only perform validation of signup


**Request body:**

- `application/json` → `PartnerLinkRequest`


**Responses:**

- `201` — Successful signup. — body: `PartnerSignupResponse`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Cluster Mgmt for Schema Registry (v2)

### Regions (srcm/v2)

`Region` objects represent cloud provider regions available when placing Schema Registry clusters.
The API allows you to list Schema Registry regions.


Related guides:
* [Confluent Cloud providers and region support](https://docs.confluent.io/cloud/current/stream-governance/packages.html#cloud-providers-and-region-support).
* [srcm/v3 Migration Guide](https://docs.confluent.io/cloud/current/stream-governance/packages.html#deprecation-of-srcm-v2-clusters-and-regions-apis-and-upgrade-guide).

#### `GET /srcm/v2/regions` — List of Regions *(deprecated)*

Retrieve a sorted, filtered, paginated list of all regions.

**Parameters:**

- `spec.cloud` · in: query · type: `SearchFilter` — Filter the results by exact match for spec.cloud.
- `spec.region_name` · in: query · type: `SearchFilter` — Filter the results by exact match for spec.region_name.
- `spec.packages` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.packages. Pass multiple times to see results matching any of the values.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Region.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /srcm/v2/regions/{id}` — Read a Region *(deprecated)*

Make a request to read a region.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the region.



**Responses:**

- `200` — Region.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Clusters (srcm/v2)

`Clusters` objects represent Schema Registry Clusters on Confluent Cloud.

The API allows you to list, create, read, and delete your Schema Registry clusters.


Related guides:
* [Confluent Cloud Schema Registry Cluster APIs](https://docs.confluent.io/cloud/current/stream-governance/clusters-regions-api.html#schema-registry-cluster-management).
* [srcm/v3 Migration Guide](https://docs.confluent.io/cloud/current/stream-governance/packages.html#deprecation-of-srcm-v2-clusters-and-regions-apis-and-upgrade-guide).

#### `GET /srcm/v2/clusters` — List of Clusters *(deprecated)*

Retrieve a sorted, filtered, paginated list of all clusters.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /srcm/v2/clusters` — Create a Cluster *(deprecated)*

Make a request to create a cluster.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Cluster is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /srcm/v2/clusters/{id}` — Delete a Cluster *(deprecated)*

Make a request to delete a cluster.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the cluster.



**Responses:**

- `204` — A Cluster is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /srcm/v2/clusters/{id}` — Read a Cluster *(deprecated)*

Make a request to read a cluster.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the cluster.



**Responses:**

- `200` — Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /srcm/v2/clusters/{id}` — Update a Cluster *(deprecated)*

Make a request to update a cluster.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the cluster.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Cluster Mgmt for Schema Registry (v3)

### Clusters (srcm/v3)

`Clusters` objects represent Schema Registry Clusters on Confluent Cloud.

The API allows you to list and read your Schema Registry clusters.


Related guide: [Confluent Cloud Schema Registry Cluster APIs](https://docs.confluent.io/cloud/current/stream-governance/clusters-regions-api.html#schema-registry-cluster-management).

#### `GET /srcm/v3/clusters` — List of Clusters

Retrieve a sorted, filtered, paginated list of all clusters.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /srcm/v3/clusters/{id}` — Read a Cluster

Make a request to read a cluster.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the cluster.



**Responses:**

- `200` — Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Schema Registry API (v1)

### Compatibility (v1)

The API allows you to test schema compatibility.

Related guide: [Manage Schemas in Confluent Cloud](https://docs.confluent.io/cloud/current/sr/schemas-manage.html#manage-schemas-in-ccloud).

#### `POST /compatibility/subjects/{subject}/versions` — Test schema compatibility against all schemas under a subject

Test input schema against a subject's schemas for compatibility, based on the configured compatibility level of the subject. In other words, it will perform the same compatibility check as register for that subject. The compatibility level applied for the check is the configured compatibility level for the subject (http:get:: /config/(string: subject)). If this subject's compatibility level was never changed, then the global compatibility level applies (http:get:: /config).

**Parameters:**

- `subject` · in: path · type: `string` · required — Subject of the schema version against which compatibility is to be tested
- `verbose` · in: query · type: `boolean` — Whether to return detailed error messages


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `RegisterSchemaRequest`
- `application/vnd.schemaregistry+json` → `RegisterSchemaRequest`
- `application/json` → `RegisterSchemaRequest`
- `application/octet-stream` → `RegisterSchemaRequest`


**Responses:**

- `200` — Compatibility check result. — body: `CompatibilityCheckResponse`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `422` — Unprocessable Entity. Error code 42201 indicates an invalid schema or schema type. Error code 42202 indicates an invalid version. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `POST /compatibility/subjects/{subject}/versions/{version}` — Test schema compatibility against a particular schema subject-version

Test input schema against a particular version of a subject's schema for compatibility. The compatibility level applied for the check is the configured compatibility level for the subject (http:get:: /config/(string: subject)). If this subject's compatibility level was never changed, then the global compatibility level applies (http:get:: /config).

**Parameters:**

- `subject` · in: path · type: `string` · required — Subject of the schema version against which compatibility is to be tested
- `version` · in: path · type: `string` · required — Version of the subject's schema against which compatibility is to be tested. Valid values for versionId are between [1,2^31-1] or the string "latest"."latest" checks compatibility of the input schema …
- `normalize` · in: query · type: `boolean` — Whether to normalize the given schema
- `verbose` · in: query · type: `boolean` — Whether to return detailed error messages


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `RegisterSchemaRequest`
- `application/vnd.schemaregistry+json` → `RegisterSchemaRequest`
- `application/json` → `RegisterSchemaRequest`
- `application/octet-stream` → `RegisterSchemaRequest`


**Responses:**

- `200` — Compatibility check result. — body: `CompatibilityCheckResponse`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. Error code 40402 indicates version not found. — body: `ErrorMessage`
- `422` — Unprocessable entity. Error code 42201 indicates an invalid schema or schema type. Error code 42202 indicates an invalid version. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


### Config (v1)

The API allows you to manage and query schema compatibility settings and cluster configurations.

Related guide: [Manage Schemas in Confluent Cloud](https://docs.confluent.io/cloud/current/sr/schemas-manage.html#manage-schemas-in-ccloud).

#### `GET /clusterconfig` — Get cluster config

Retrieves cluster config information.



**Responses:**

- `200` — The cluster config — body: `ClusterConfig`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `429` → response: `RateLimitError`
- `500` → response: `schemaregistry.v1.DefaultSystemError`


#### `DELETE /config` — Delete global compatibility level

Deletes the global compatibility level config and reverts to the default.



**Responses:**

- `200` — Operation succeeded. Returns old global compatibility level. — body: `string`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `GET /config` — Get global compatibility level

Retrieves the global compatibility level, compatibility group,
normalization, default metadata, and rule set.



**Responses:**

- `200` — The global compatibility level. — body: `Config`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `PUT /config` — Update global compatibility level

Updates the global compatibility level, compatibility group,
schema normalization, default metadata, and rule set. On success, echoes the
original request back to the client.


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `ConfigUpdateRequest`
- `application/vnd.schemaregistry+json` → `ConfigUpdateRequest`
- `application/json` → `ConfigUpdateRequest`
- `application/octet-stream` → `ConfigUpdateRequest`


**Responses:**

- `200` — The original request. — body: `ConfigUpdateRequest`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `422` — Unprocessable Entity. Error code 42203 indicates invalid compatibility level. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. Error code 50003 indicates a failure forwarding the request to the primary. — body: `ErrorMessage`


#### `DELETE /config/{subject}` — Delete subject compatibility level

Deletes the specified subject-level compatibility level config and reverts to the global default.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject



**Responses:**

- `200` — Operation succeeded. Returns old compatibility level. — body: `string`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `GET /config/{subject}` — Get subject compatibility level

Retrieves compatibility level, compatibility group, normalization,
default metadata, and rule set for a subject.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject
- `defaultToGlobal` · in: query · type: `boolean` — Whether to return the global compatibility level if subject compatibility level not found



**Responses:**

- `200` — The subject compatibility level. — body: `Config`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `PUT /config/{subject}` — Update subject compatibility level

Update compatibility level, compatibility group, normalization,
default metadata, and rule set for the specified subject. On success,
echoes the original request back to the client.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `ConfigUpdateRequest`
- `application/vnd.schemaregistry+json` → `ConfigUpdateRequest`
- `application/json` → `ConfigUpdateRequest`
- `application/octet-stream` → `ConfigUpdateRequest`


**Responses:**

- `200` — The original request. — body: `ConfigUpdateRequest`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `422` — Unprocessable Entity. Error code 42203 indicates invalid compatibility level. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. Error code 50003 indicates a failure forwarding the request to the primary. — body: `ErrorMessage`


### Contexts (v1)

The API allows you to retrieve information about schema contexts.

Related guide: [Manage Schemas in Confluent Cloud](https://docs.confluent.io/cloud/current/sr/schemas-manage.html#manage-schemas-in-ccloud).

#### `GET /contexts` — List contexts

Retrieves a list of contexts.

**Parameters:**

- `offset` · in: query · type: `integer` (int32) — Pagination offset for results
- `limit` · in: query · type: `integer` (int32) — Pagination size for results. Ignored if negative



**Responses:**

- `200` — The contexts. — body: array of `string`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


### Exporters (v1)

The API allows you to create, retrieve, update, and delete exporters.

Related guide: [Manage Schemas in Confluent Cloud](https://docs.confluent.io/cloud/current/sr/schemas-manage.html#manage-schemas-in-ccloud).

#### `GET /exporters` — Gets all schema exporters

Retrieves a list of schema exporters that have been created.



**Responses:**

- `200` — Name of the exporter — body: array of `string`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `429` → response: `RateLimitError`
- `500` → response: `schemaregistry.v1.DefaultSystemError`


#### `POST /exporters` — Creates a new schema exporter

Creates a new schema exporter. All attributes in request body are optional except config.


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `ExporterReference`
- `application/vnd.schemaregistry+json` → `ExporterReference`
- `application/json` → `ExporterReference`


**Responses:**

- `200` — Schema successfully registered. — body: `ExporterResponse`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `409` — Conflict. Error code 40950 – Missing or invalid exporter name \ Error code 40951 – Missing or invalid exporter config \ Error code 40952 – Invalid exporter subjects \ Error code 40960 – Exporter already exists \ Error code 40964 – Too many exporters — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` → response: `schemaregistry.v1.DefaultSystemError`


#### `DELETE /exporters/{name}` — Delete schema exporter by name

Deletes the schema exporter.

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the exporter



**Responses:**

- `204` — No content.
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` → response: `schemaregistry.v1.AccountNotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `schemaregistry.v1.DefaultSystemError`


#### `GET /exporters/{name}` — Gets schema exporter by name

Retrieves the information of the schema exporter.

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the exporter



**Responses:**

- `200` — The original request. — body: `ExporterReference`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40450 – Exporter not found — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` → response: `schemaregistry.v1.DefaultSystemError`


#### `PUT /exporters/{name}` — Update schema exporter by name

Updates the information or configurations of the schema exporter. All attributes in request body are optional.

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the exporter


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `ExporterUpdateRequest`
- `application/vnd.schemaregistry+json` → `ExporterUpdateRequest`
- `application/json` → `ExporterUpdateRequest`


**Responses:**

- `200` — The original request. — body: `ExporterResponse`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. — body: `ErrorMessage`
- `409` — Invalid. Error code 40952 – Invalid exporter subjects. Error code 40963 – Exporter not paused. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` → response: `schemaregistry.v1.DefaultSystemError`


#### `GET /exporters/{name}/config` — Gets schema exporter config by name

Retrieves the config of the schema exporter.

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the exporter



**Responses:**

- `200` — The original request — body: `ExporterConfigResponse`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40450 – Exporter not found — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` → response: `schemaregistry.v1.DefaultSystemError`


#### `PUT /exporters/{name}/config` — Update schema exporter config by name

Updates the configuration of the schema exporter.

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the exporter


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `ExporterConfigResponse`
- `application/vnd.schemaregistry+json` → `ExporterConfigResponse`
- `application/json` → `ExporterConfigResponse`


**Responses:**

- `200` — The original request. — body: `ExporterResponse`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. — body: `ErrorMessage`
- `409` — Invalid. Error code 40952 – Invalid exporter subjects. Error code 40963 – Exporter not paused. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` → response: `schemaregistry.v1.DefaultSystemError`


#### `PUT /exporters/{name}/pause` — Pause schema exporter by name

Pauses the state of the schema exporter.

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the exporter



**Responses:**

- `200` — The original request. — body: `ExporterResponse`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. — body: `ErrorMessage`
- `409` — Invalid. Error code 40952 – Invalid exporter subjects. Error code 40963 – Exporter not paused. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` → response: `schemaregistry.v1.DefaultSystemError`


#### `PUT /exporters/{name}/reset` — Reset schema exporter by name

Reset the state of the schema exporter.

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the exporter



**Responses:**

- `200` — The original request. — body: `ExporterResponse`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40450 – Exporter not found — body: `ErrorMessage`
- `409` — Invalid. Error code 40963 – Exporter not paused. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` → response: `schemaregistry.v1.DefaultSystemError`


#### `PUT /exporters/{name}/resume` — Resume schema exporter by name

Resume running of the schema exporter.

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the exporter



**Responses:**

- `200` — The original request. — body: `ExporterResponse`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40450 indicates subject not found. — body: `ErrorMessage`
- `409` — Invalid. Error code 40961 – Exporter already running. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` → response: `schemaregistry.v1.DefaultSystemError`


#### `GET /exporters/{name}/status` — Gets schema exporter status by name

Retrieves the status of the schema exporter.

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the exporter



**Responses:**

- `200` — The original request. — body: `ExporterStatusResponse`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40450 – Exporter not found — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` → response: `schemaregistry.v1.DefaultSystemError`


### Modes (v1)

The API allows you to create, retrieve, update, and delete schema subjects modes of operation.

Related guide: [Manage Schemas in Confluent Cloud](https://docs.confluent.io/cloud/current/sr/schemas-manage.html#manage-schemas-in-ccloud).

#### `GET /mode` — Get global mode

Retrieves global mode.



**Responses:**

- `200` — The global mode — body: `Mode`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `429` → response: `RateLimitError`
- `500` — Error code 50001 -- Error in the backend data store


#### `PUT /mode` — Update global mode

Update global mode. On success, echoes the original request back to the client.

**Parameters:**

- `force` · in: query · type: `boolean` — Whether to force update if setting mode to IMPORT and schemas currently exist


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `ModeUpdateRequest`
- `application/vnd.schemaregistry+json` → `ModeUpdateRequest`
- `application/json` → `ModeUpdateRequest`
- `application/octet-stream` → `ModeUpdateRequest`


**Responses:**

- `200` — The original request. — body: `ModeUpdateRequest`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `422` — Unprocessable Entity. Error code 42204 indicates an invalid mode. Error code 42205 indicates operation not permitted. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. Error code 50003 indicates a failure forwarding the request to the primary. Error code 50004 indicates unknown leader. — body: `ErrorMessage`


#### `DELETE /mode/{subject}` — Delete subject mode

Deletes the specified subject-level mode and reverts to the global default.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject



**Responses:**

- `200` — Operation succeeded. Returns old mode. — body: `Mode`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `GET /mode/{subject}` — Get subject mode

Retrieves the subject mode.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject
- `defaultToGlobal` · in: query · type: `boolean` — Whether to return the global mode if subject mode not found



**Responses:**

- `200` — The subject mode. — body: `Mode`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `PUT /mode/{subject}` — Update subject mode

Update mode for the specified subject. On success, echoes the original request back to the client.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject
- `force` · in: query · type: `boolean` — Whether to force update if setting mode to IMPORT and schemas currently exist


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `ModeUpdateRequest`
- `application/vnd.schemaregistry+json` → `ModeUpdateRequest`
- `application/json` → `ModeUpdateRequest`
- `application/octet-stream` → `ModeUpdateRequest`


**Responses:**

- `200` — The original request. — body: `ModeUpdateRequest`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `422` — Unprocessable Entity. Error code 42204 indicates an invalid mode. Error code 42205 indicates operation not permitted. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. Error code 50003 indicates a failure forwarding the request to the primary. Error code 50004 indicates unknown leader. — body: `ErrorMessage`


### Schemas (v1)

The API allows you to create, retrieve, update, and delete schemas.

Related guide: [Manage Schemas in Confluent Cloud](https://docs.confluent.io/cloud/current/sr/schemas-manage.html#manage-schemas-in-ccloud).

#### `GET /schemas` — List schemas

Get the schemas matching the specified parameters.

**Parameters:**

- `subjectPrefix` · in: query · type: `string` — Filters results by the respective subject prefix
- `aliases` · in: query · type: `boolean` — Whether to include aliases in the search
- `deleted` · in: query · type: `boolean` — Whether to return soft deleted schemas
- `latestOnly` · in: query · type: `boolean` — Whether to return latest schema versions only for each matching subject
- `ruleType` · in: query · type: `string` — Filters results by the given rule type
- `offset` · in: query · type: `integer` (int32) — Pagination offset for results
- `limit` · in: query · type: `integer` (int32) — Pagination size for results. Ignored if negative



**Responses:**

- `200` — List of schemas matching the specified parameters. — body: array of `Schema`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `GET /schemas/ids/{id}` — Get schema string by ID

Retrieves the schema string identified by the input ID.

**Parameters:**

- `id` · in: path · type: `integer` (int32) · required — Globally unique identifier of the schema
- `subject` · in: query · type: `string` — Name of the subject
- `format` · in: query · type: `string` — Desired output format, dependent on schema type. For AVRO schemas, valid values are: " " (default) or "resolved". For PROTOBUF schemas, valid values are: " " (default), "ignore_extensions", or "serial…



**Responses:**

- `200` — The schema string. — body: `SchemaString`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40403 indicates schema not found. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `GET /schemas/ids/{id}/schema` — Get schema by ID

Retrieves the schema identified by the input ID.

**Parameters:**

- `id` · in: path · type: `integer` (int32) · required — Globally unique identifier of the schema
- `subject` · in: query · type: `string` — Name of the subject
- `format` · in: query · type: `string` — Desired output format, dependent on schema type. For AVRO schemas, valid values are: " " (default) or "resolved". For PROTOBUF schemas, valid values are: " " (default), "ignore_extensions", or "serial…



**Responses:**

- `200` — Raw schema string. — body: `string`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40403 indicates schema not found. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `GET /schemas/ids/{id}/subjects` — List subjects associated to schema ID

Retrieves all the subjects associated with a particular schema ID.

**Parameters:**

- `id` · in: path · type: `integer` (int32) · required — Globally unique identifier of the schema
- `subject` · in: query · type: `string` — Filters results by the respective subject
- `format` · in: query · type: `string` — Desired output format, dependent on schema type. For AVRO schemas, valid values are: " " (default) or "resolved". For PROTOBUF schemas, valid values are: " " (default), "ignore_extensions", or "serial…
- `deleted` · in: query · type: `boolean` — Whether to include subjects where the schema was deleted
- `offset` · in: query · type: `integer` (int32) — Pagination offset for results
- `limit` · in: query · type: `integer` (int32) — Pagination size for results. Ignored if negative



**Responses:**

- `200` — List of subjects matching the specified parameters. — body: array of `string`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40403 indicates schema not found. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `GET /schemas/ids/{id}/versions` — List subject-versions associated to schema ID

Get all the subject-version pairs associated with the input ID.

**Parameters:**

- `id` · in: path · type: `integer` (int32) · required — Globally unique identifier of the schema
- `subject` · in: query · type: `string` — Filters results by the respective subject
- `deleted` · in: query · type: `boolean` — Whether to include subject versions where the schema was deleted
- `offset` · in: query · type: `integer` (int32) — Pagination offset for results
- `limit` · in: query · type: `integer` (int32) — Pagination size for results. Ignored if negative



**Responses:**

- `200` — List of subject versions matching the specified parameters. — body: array of `SubjectVersion`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40403 indicates schema not found. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `GET /schemas/types` — List supported schema types

Retrieve the schema types supported by this registry.



**Responses:**

- `200` — List of supported schema types. — body: array of `string`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


### Subjects (v1)

The API allows you to create, retrieve, update, and delete schema subjects and versions.

Related guide: [Manage Schemas in Confluent Cloud](https://docs.confluent.io/cloud/current/sr/schemas-manage.html#manage-schemas-in-ccloud).

#### `GET /subjects` — List subjects

Retrieves a list of registered subjects matching specified parameters.

**Parameters:**

- `subjectPrefix` · in: query · type: `string` — Subject name prefix
- `deleted` · in: query · type: `boolean` — Whether to look up deleted subjects
- `deletedOnly` · in: query · type: `boolean` — Whether to return deleted subjects only
- `offset` · in: query · type: `integer` (int32) — Pagination offset for results
- `limit` · in: query · type: `integer` (int32) — Pagination size for results. Ignored if negative



**Responses:**

- `200` — List of subjects matching the specified parameters. — body: array of `string`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `DELETE /subjects/{subject}` — Delete subject

Deletes the specified subject and its associated compatibility level if registered. It is recommended to use this API only when a topic needs to be recycled or in development environment.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject
- `permanent` · in: query · type: `boolean` — Whether to perform a permanent delete



**Responses:**

- `200` — Operation succeeded. Returns list of schema versions deleted — body: array of `integer` (int32)
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `POST /subjects/{subject}` — Lookup schema under subject

Check if a schema has already been registered under the specified subject. If so, this returns the schema string along with its globally unique identifier, its version under this subject and the subject name.

**Parameters:**

- `subject` · in: path · type: `string` · required — Subject under which the schema will be registered
- `normalize` · in: query · type: `boolean` — Whether to lookup the normalized schema
- `format` · in: query · type: `string` — Desired output format, dependent on schema type. For AVRO schemas, valid values are: " " (default) or "resolved". For PROTOBUF schemas, valid values are: " " (default), "ignore_extensions", or "serial…
- `deleted` · in: query · type: `boolean` — Whether to lookup deleted schemas


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `RegisterSchemaRequest`
- `application/vnd.schemaregistry+json` → `RegisterSchemaRequest`
- `application/json` → `RegisterSchemaRequest`
- `application/octet-stream` → `RegisterSchemaRequest`


**Responses:**

- `200` — The schema. — body: `Schema`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. Error code 40403 indicates schema not found. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. — body: `ErrorMessage`


#### `GET /subjects/{subject}/metadata` — Retrieve the latest version with the given metadata.

Retrieve the latest version with the given metadata.

**Parameters:**

- `subject` · in: path · type: `string` · required — Subject under which the schema will be registered
- `key` · in: query · type: `string` — The metadata key. Add "?key=key" at the end of the request to match a metadata key. This query parameter can appear multiple times. Each instance is matched with a corresponding value query parameter,…
- `value` · in: query · type: `string` — The metadata value. Add "?value=value" at the end of the request to match a metadata value. This query parameter can appear multiple times. Each instance is matched with a corresponding key query para…
- `format` · in: query · type: `string` — Desired output format, dependent on schema type. For AVRO schemas, valid values are: " " (default) or "resolved". For PROTOBUF schemas, valid values are: " " (default), "ignore_extensions", or "serial…
- `deleted` · in: query · type: `boolean` — Whether to lookup deleted schemas



**Responses:**

- `200` — The schema. — body: `Schema`
- `404` — Error code 40401 -- Subject not found
- `500` — Internal Server Error.


#### `GET /subjects/{subject}/versions` — List versions under subject

Retrieves a list of versions registered under the specified subject.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject
- `deleted` · in: query · type: `boolean` — Whether to include deleted schemas
- `deletedOnly` · in: query · type: `boolean` — Whether to return deleted schemas only
- `offset` · in: query · type: `integer` (int32) — Pagination offset for results
- `limit` · in: query · type: `integer` (int32) — Pagination size for results. Ignored if negative



**Responses:**

- `200` — List of version numbers matching the specified parameters. — body: array of `integer` (int32)
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `POST /subjects/{subject}/versions` — Register schema under a subject

Register a new schema under the specified subject. If successfully registered, this returns the unique identifier of this schema in the registry. The returned identifier should be used to retrieve this schema from the schemas resource and is different from the schema's version which is associated with the subject. If the same schema is registered under a different subject, the same identifier will be returned. However, the version of the schema may be different under different subjects.
A schema should be compatible with the previously registered schema or schemas (if there are any) as per the configured compatibility level. The configured compatibility level can be obtained by issuing a GET http:get:: /config/(string: subject). If that returns null, then GET http:get:: /config
When there are multiple instances of Schema Registry running in the same cluster, the schema registration request will be forwarded to one of the instances designated as the primary. If the primary is not available, the client will get an error code indicating that the forwarding has failed.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject
- `normalize` · in: query · type: `boolean` — Whether to register the normalized schema
- `format` · in: query · type: `string` — Desired output format, dependent on schema type. For AVRO schemas, valid values are: " " (default) or "resolved". For PROTOBUF schemas, valid values are: " " (default), "ignore_extensions", or "serial…


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `RegisterSchemaRequest`
- `application/vnd.schemaregistry+json` → `RegisterSchemaRequest`
- `application/json` → `RegisterSchemaRequest`
- `application/octet-stream` → `RegisterSchemaRequest`


**Responses:**

- `200` — Schema successfully registered. — body: `RegisterSchemaResponse`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `409` — Conflict. Incompatible schema. — body: `ErrorMessage`
- `422` — Unprocessable entity. Error code 42201 indicates an invalid schema or schema type. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. Error code 50002 indicates operation timed out. Error code 50003 indicates a failure forwarding the request to the primary. — body: `ErrorMessage`


#### `DELETE /subjects/{subject}/versions/{version}` — Delete schema version

Deletes a specific version of the schema registered under this subject. This only deletes the version and the schema ID remains intact making it still possible to decode data using the schema ID. This API is recommended to be used only in development environments or under extreme circumstances where-in, its required to delete a previously registered schema for compatibility purposes or re-register previously registered schema.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject
- `version` · in: path · type: `string` · required — Version of the schema to be returned. Valid values for versionId are between [1,2^31-1] or the string "latest". "latest" returns the last registered schema under the specified subject. Note that there…
- `permanent` · in: query · type: `boolean` — Whether to perform a permanent delete



**Responses:**

- `200` — Operation succeeded. Returns the schema version. — body: `integer` (int32)
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. Error code 40402 indicates version not found. — body: `ErrorMessage`
- `422` — Unprocessable Entity. Error code 42202 indicates an invalid version. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `GET /subjects/{subject}/versions/{version}` — Get schema by version

Retrieves a specific version of the schema registered under this subject.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject
- `version` · in: path · type: `string` · required — Version of the schema to be returned. Valid values for versionId are between [1,2^31-1] or the string "latest". "latest" returns the last registered schema under the specified subject. Note that there…
- `format` · in: query · type: `string` — Desired output format, dependent on schema type. For AVRO schemas, valid values are: " " (default) or "resolved". For PROTOBUF schemas, valid values are: " " (default), "ignore_extensions", or "serial…
- `deleted` · in: query · type: `boolean` — Whether to include deleted schema



**Responses:**

- `200` — The schema. — body: `Schema`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. Error code 40402 indicates version not found. — body: `ErrorMessage`
- `422` — Unprocessable Entity. Error code 42202 indicates an invalid version. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `GET /subjects/{subject}/versions/{version}/referencedby` — List schemas referencing a schema

Retrieves the IDs of schemas that reference the specified schema.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject
- `version` · in: path · type: `string` · required — Version of the schema to be returned. Valid values for versionId are between [1,2^31-1] or the string "latest". "latest" returns the last registered schema under the specified subject. Note that there…
- `offset` · in: query · type: `integer` (int32) — Pagination offset for results
- `limit` · in: query · type: `integer` (int32) — Pagination size for results. Ignored if negative



**Responses:**

- `200` — List of IDs for schemas that reference the specified schema. — body: array of `integer` (int32)
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. Error code 40402 indicates version not found. — body: `ErrorMessage`
- `422` — Unprocessable Entity. Error code 42202 indicates an invalid version. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


#### `GET /subjects/{subject}/versions/{version}/schema` — Get schema string by version

Retrieves the schema for the specified version of this subject. Only the unescaped schema string is returned.

**Parameters:**

- `subject` · in: path · type: `string` · required — Name of the subject
- `version` · in: path · type: `string` · required — Version of the schema to be returned. Valid values for versionId are between [1,2^31-1] or the string "latest". "latest" returns the last registered schema under the specified subject. Note that there…
- `deleted` · in: query · type: `boolean` — Whether to include deleted schema



**Responses:**

- `200` — The schema string. — body: `string`
- `400` → response: `schemaregistry.v1.BadRequestError`
- `401` → response: `schemaregistry.v1.UnauthorizedError`
- `403` → response: `schemaregistry.v1.ForbiddenError`
- `404` — Not Found. Error code 40401 indicates subject not found. Error code 40402 indicates version not found. — body: `ErrorMessage`
- `422` — Unprocessable Entity. Error code 42202 indicates an invalid version. — body: `ErrorMessage`
- `429` → response: `RateLimitError`
- `500` — Internal Server Error. Error code 50001 indicates a failure in the backend data store. — body: `ErrorMessage`


### Key Encryption Keys (v1)

The API allows you to create, retrieve, update, and delete key encryption keys.

Related guide: [Manage Schemas in Confluent Cloud](https://docs.confluent.io/cloud/current/sr/schemas-manage.html#manage-schemas-in-ccloud).

#### `GET /dek-registry/v1/keks` — Get a list of kek names

**Parameters:**

- `deleted` · in: query · type: `boolean` — Whether to include deleted keys



**Responses:**

- `200` — List of kek names — body: array of `string`


#### `POST /dek-registry/v1/keks` — Create a kek

**Parameters:**

- `testSharing` · in: query · type: `boolean` — Whether to test kek sharing


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `CreateKekRequest`
- `application/vnd.schemaregistry+json` → `CreateKekRequest`
- `application/json` → `CreateKekRequest`
- `application/octet-stream` → `CreateKekRequest`


**Responses:**

- `200` — The create response — body: `Kek`
- `409` — Conflict. Error code 40971 -- Key already exists. Error code 40972 -- Too many keys.
- `422` — Error code 42271 -- Invalid key


#### `DELETE /dek-registry/v1/keks/{name}` — Delete a kek

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek
- `permanent` · in: query · type: `boolean` — Whether to perform a permanent delete



**Responses:**

- `204` — No Content
- `404` — Not found. Error code 40470 -- Key not found. Error code 40471 -- Key not soft-deleted.
- `422` — Unprocessable entity. Error code 42271 -- Invalid key. Error code 42272 -- References to key exist.


#### `GET /dek-registry/v1/keks/{name}` — Get a kek by name

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek
- `deleted` · in: query · type: `boolean` — Whether to include deleted keys



**Responses:**

- `200` — The kek info — body: `Kek`
- `404` — Error code 40470 -- Key not found
- `422` — Error code 42271 -- Invalid key


#### `PUT /dek-registry/v1/keks/{name}` — Alters a kek

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek
- `testSharing` · in: query · type: `boolean` — Whether to test kek sharing


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `UpdateKekRequest`
- `application/vnd.schemaregistry+json` → `UpdateKekRequest`
- `application/json` → `UpdateKekRequest`
- `application/octet-stream` → `UpdateKekRequest`


**Responses:**

- `200` — The update response — body: `Kek`
- `404` — Error code 40470 -- Key not found
- `409` — Error code 40971 -- Key already exists
- `422` — Error code 42271 -- Invalid key


#### `POST /dek-registry/v1/keks/{name}/test` — Test a kek

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek



**Responses:**

- `200` — The test response — body: `Kek`
- `422` — Error code 42271 -- Invalid key
- `500` — Error code 50070 -- Dek generation error


#### `POST /dek-registry/v1/keks/{name}/undelete` — Undelete a kek

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek



**Responses:**

- `204` — No Content
- `404` — Error code 40470 -- Key not found
- `422` — Unprocessable entity. Error code 42271 -- Invalid key. Error code 42272 -- References to key exist.


### Data Encryption Keys (v1)

The API allows you to create, retrieve, update, and delete data encryption keys.

Related guide: [Manage Schemas in Confluent Cloud](https://docs.confluent.io/cloud/current/sr/schemas-manage.html#manage-schemas-in-ccloud).

#### `GET /dek-registry/v1/keks/{name}/deks` — Get a list of dek subjects

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek
- `deleted` · in: query · type: `boolean` — Whether to include deleted keys
- `offset` · in: query · type: `integer` — Pagination offset for results
- `limit` · in: query · type: `integer` — Pagination size for results. Ignored if negative



**Responses:**

- `200` — List of dek subjects — body: array of `string`
- `404` — Error code 40470 -- Key not found
- `422` — Error code 42271 -- Invalid key


#### `POST /dek-registry/v1/keks/{name}/deks` — Create a dek

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek


**Request body:** *required*

- `application/vnd.schemaregistry.v1+json` → `CreateDekRequest`
- `application/vnd.schemaregistry+json` → `CreateDekRequest`
- `application/json` → `CreateDekRequest`
- `application/octet-stream` → `CreateDekRequest`


**Responses:**

- `200` — The create response — body: `Dek`
- `409` — Conflict. Error code 40971 -- Key already exists. Error code 40972 -- Too many keys.
- `422` — Error code 42271 -- Invalid key
- `500` — Error code 50070 -- Dek generation error


#### `DELETE /dek-registry/v1/keks/{name}/deks/{subject}` — Delete all versions of a dek

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek
- `subject` · in: path · type: `string` · required — Subject of the dek
- `algorithm` · in: query · type: `string` — Algorithm of the dek
- `permanent` · in: query · type: `boolean` — Whether to perform a permanent delete



**Responses:**

- `204` — No Content
- `404` — Not found. Error code 40470 -- Key not found. Error code 40471 -- Key not soft-deleted.
- `422` — Error code 42271 -- Invalid key


#### `GET /dek-registry/v1/keks/{name}/deks/{subject}` — Get a dek by subject

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek
- `subject` · in: path · type: `string` · required — Subject of the dek
- `algorithm` · in: query · type: `string` — Algorithm of the dek
- `deleted` · in: query · type: `boolean` — Whether to include deleted keys



**Responses:**

- `200` — The dek info — body: `Dek`
- `404` — Error code 40470 -- Key not found
- `422` — Error code 42271 -- Invalid key
- `500` — Error code 50070 -- Dek generation error


#### `POST /dek-registry/v1/keks/{name}/deks/{subject}/undelete` — Undelete all versions of a dek

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek
- `subject` · in: path · type: `string` · required — Subject of the dek
- `algorithm` · in: query · type: `string` — Algorithm of the dek



**Responses:**

- `204` — No Content
- `404` — Not found. Error code 40470 -- Key not found. Error code 40472 -- Key must be undeleted.
- `422` — Error code 42271 -- Invalid key


#### `GET /dek-registry/v1/keks/{name}/deks/{subject}/versions` — List versions of dek

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek
- `subject` · in: path · type: `string` · required — Subject of the dek
- `algorithm` · in: query · type: `string` — Algorithm of the dek
- `deleted` · in: query · type: `boolean` — Whether to include deleted keys
- `offset` · in: query · type: `integer` — Pagination offset for results
- `limit` · in: query · type: `integer` — Pagination size for results. Ignored if negative



**Responses:**

- `200` — List of version numbers for dek — body: array of `integer` (int32)
- `404` — Error code 40470 -- Key not found
- `422` — Error code 42271 -- Invalid key


#### `DELETE /dek-registry/v1/keks/{name}/deks/{subject}/versions/{version}` — Delete a dek version

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek
- `subject` · in: path · type: `string` · required — Subject of the dek
- `version` · in: path · type: `string` · required — Version of the dek
- `algorithm` · in: query · type: `string` — Algorithm of the dek
- `permanent` · in: query · type: `boolean` — Whether to perform a permanent delete



**Responses:**

- `204` — No Content
- `404` — Not found. Error code 40470 -- Key not found. Error code 40471 -- Key not soft-deleted.
- `422` — Unprocessable entity. Error code 42202 -- Invalid version. Error code 42271 -- Invalid key.


#### `GET /dek-registry/v1/keks/{name}/deks/{subject}/versions/{version}` — Get a dek by subject and version

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek
- `subject` · in: path · type: `string` · required — Subject of the dek
- `version` · in: path · type: `string` · required — Version of the dek
- `algorithm` · in: query · type: `string` — Algorithm of the dek
- `deleted` · in: query · type: `boolean` — Whether to include deleted keys



**Responses:**

- `200` — The dek info — body: `Dek`
- `404` — Error code 40470 -- Key not found
- `422` — Unprocessable entity. Error code 42202 -- Invalid version. Error code 42271 -- Invalid key.
- `500` — Error code 50070 -- Dek generation error


#### `POST /dek-registry/v1/keks/{name}/deks/{subject}/versions/{version}/undelete` — Undelete a dek version

**Parameters:**

- `name` · in: path · type: `string` · required — Name of the kek
- `subject` · in: path · type: `string` · required — Subject of the dek
- `version` · in: path · type: `string` · required — Version of the dek
- `algorithm` · in: query · type: `string` — Algorithm of the dek



**Responses:**

- `204` — No Content
- `404` — Not found. Error code 40470 -- Key not found. Error code 40472 -- Key must be undeleted.
- `422` — Unprocessable entity. Error code 42202 -- Invalid version. Error code 42271 -- Invalid key.


## Catalog API (v1)

### Entity (v1)

The API allows you to create, retrieve, update, and delete catalog entities.

Related guide: [Catalog API Documentation](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog.html#catalog-api-documentation).

#### `PUT /catalog/v1/entity` — Update an Entity Attribute

Partially update an entity attribute.


**Request body:**

- `application/json` → `EntityWithExtInfo`


**Responses:**

- `200` — The updated entity — body: `EntityPartialUpdateResponse`
- `400` — Bad Request
- `404` — Entity not found
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `POST /catalog/v1/entity/businessmetadata` — Bulk Create Business Metadata

Bulk API to create multiple business metadata.


**Request body:**

- `application/json` → array of `BusinessMetadata`


**Responses:**

- `200` — The business metadata. Errored business metadata will have an additional error property. — body: array of `BusinessMetadataResponse`
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `PUT /catalog/v1/entity/businessmetadata` — Bulk Update Business Metadata

Bulk API to update multiple business metadata.


**Request body:**

- `application/json` → array of `BusinessMetadata`


**Responses:**

- `200` — The business metadata. Errored business metadata will have an additional error property. — body: array of `BusinessMetadataResponse`
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `POST /catalog/v1/entity/tags` — Bulk Create Tags

Bulk API to create multiple tags.


**Request body:**

- `application/json` → array of `Tag`


**Responses:**

- `200` — The tags. Errored tags will have an additional error property. — body: array of `TagResponse`
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `PUT /catalog/v1/entity/tags` — Bulk Update Tags

Bulk API to update multiple tags.


**Request body:**

- `application/json` → array of `Tag`


**Responses:**

- `200` — The tags. Errored tags will have an additional error property. — body: array of `TagResponse`
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `GET /catalog/v1/entity/type/{typeName}/name/{qualifiedName}` — Read an Entity

Fetch complete definition of an entity given its type and unique attribute.

**Parameters:**

- `typeName` · in: path · type: `string` · required — The type of the entity
- `qualifiedName` · in: path · type: `string` · required — The qualified name of the entity
- `minExtInfo` · in: query · type: `boolean` — Whether to populate on header and schema attributes
- `ignoreRelationships` · in: query · type: `boolean` — Whether to ignore relationships



**Responses:**

- `200` — The entity — body: `EntityWithExtInfo`
- `400` — Bad Request
- `404` — Entity not found
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `GET /catalog/v1/entity/type/{typeName}/name/{qualifiedName}/businessmetadata` — Read Business Metadata for an Entity

Gets the list of business metadata for a given entity represented
by a qualified name.

**Parameters:**

- `typeName` · in: path · type: `string` · required — The type of the entity
- `qualifiedName` · in: path · type: `string` · required — The qualified name of the entity



**Responses:**

- `200` — The business metadata — body: array of `BusinessMetadataResponse`
- `400` — Bad Request
- `404` — Entity not found
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `DELETE /catalog/v1/entity/type/{typeName}/name/{qualifiedName}/businessmetadata/{bmName}` — Delete a Business Metadata for an Entity

Delete a business metadata on an entity.

**Parameters:**

- `typeName` · in: path · type: `string` · required — The type of the entity
- `qualifiedName` · in: path · type: `string` · required — The qualified name of the entity
- `bmName` · in: path · type: `string` · required — The name of the business metadata



**Responses:**

- `204` — No Content
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `GET /catalog/v1/entity/type/{typeName}/name/{qualifiedName}/tags` — Read Tags for an Entity

Gets the list of tags for a given entity represented by a qualified name.

**Parameters:**

- `typeName` · in: path · type: `string` · required — The type of the entity
- `qualifiedName` · in: path · type: `string` · required — The qualified name of the entity



**Responses:**

- `200` — The tags — body: array of `TagResponse`
- `400` — Bad Request
- `404` — Entity not found
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `DELETE /catalog/v1/entity/type/{typeName}/name/{qualifiedName}/tags/{tagName}` — Delete a Tag for an Entity

Delete a tag for an entity.

**Parameters:**

- `typeName` · in: path · type: `string` · required — The type of the entity
- `qualifiedName` · in: path · type: `string` · required — The qualified name of the entity
- `tagName` · in: path · type: `string` · required — The name of the tag



**Responses:**

- `204` — No Content
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


### Search (v1)

The API allows you to search for entities.

Related guide: [Catalog API Documentation](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog.html#catalog-api-documentation).

#### `GET /catalog/v1/search/attribute` — Search by Attribute

Retrieve data for the specified attribute search query.

**Parameters:**

- `type` · in: query · type: array of `string` — Limit the result to only entities of specified types
- `attr` · in: query · type: array of `string` — One of more additional attributes to return in the response
- `attrName` · in: query · type: array of `string` — The attribute to search
- `attrValuePrefix` · in: query · type: array of `string` — The prefix for the attribute value to search
- `tag` · in: query · type: `string` — Limit the result to only entities tagged with the given tag
- `sortBy` · in: query · type: `string` — An attribute to sort by
- `sortOrder` · in: query · type: `string` — Sort order, either ASCENDING (default) or DESCENDING
- `deleted` · in: query · type: `boolean` — Whether to include deleted entities
- `limit` · in: query · type: `integer` (int32) — Limit the result set to only include the specified number of entries
- `offset` · in: query · type: `integer` (int32) — Start offset of the result set (useful for pagination)



**Responses:**

- `200` — On successful search query with some results, might return an empty list if execution succeeded without any results — body: `SearchResult`
- `400` — Invalid wildcard or query parameters
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `GET /catalog/v1/search/basic` — Search by Fulltext Query

Retrieve data for the specified fulltext query.

**Parameters:**

- `query` · in: query · type: `string` — The full-text query
- `type` · in: query · type: array of `string` — Limit the result to only entities of specified types
- `attr` · in: query · type: array of `string` — One of more additional attributes to return in the response
- `tag` · in: query · type: `string` — Limit the result to only entities tagged with the given tag
- `sortBy` · in: query · type: `string` — An attribute to sort by
- `sortOrder` · in: query · type: `string` — Sort order, either ASCENDING (default) or DESCENDING
- `deleted` · in: query · type: `boolean` — Whether to include deleted entities
- `limit` · in: query · type: `integer` (int32) — Limit the result set to only include the specified number of entries
- `offset` · in: query · type: `integer` (int32) — Start offset of the result set (useful for pagination)



**Responses:**

- `200` — On successful fulltext query with some results, might return an empty list if execution succeeded without any results — body: `SearchResult`
- `400` — Invalid fulltext or query parameters
- `429` — Rate Limit Error
- `500` — Internal Server Error


### Types (v1)

The API allows you to create, retrieve, update, and delete catalog types such as tag definitions.

Related guide: [Catalog API Documentation](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog.html#catalog-api-documentation).

#### `GET /catalog/v1/types/businessmetadatadefs` — Bulk Read Business Metadata Definitions

Bulk retrieval API for retrieving business metadata definitions.

**Parameters:**

- `prefix` · in: query · type: `string` — The prefix of a business metadata definition name



**Responses:**

- `200` — The business metadata definitions — body: array of `BusinessMetadataDefResponse`
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `POST /catalog/v1/types/businessmetadatadefs` — Bulk Create Business Metadata Definitions

Bulk create API for business metadata definitions.


**Request body:**

- `application/json` → array of `BusinessMetadataDef`


**Responses:**

- `200` — The business metadata definitions. Errored business metadata definitions will have an additional error property. — body: array of `BusinessMetadataDefResponse`
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `PUT /catalog/v1/types/businessmetadatadefs` — Bulk Update Business Metadata Definitions

Bulk update API for business metadata definitions.


**Request body:**

- `application/json` → array of `BusinessMetadataDef`


**Responses:**

- `200` — The business metadata definitions. Errored business metadata definitions will have an additional error property. — body: array of `BusinessMetadataDefResponse`
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `DELETE /catalog/v1/types/businessmetadatadefs/{bmName}` — Delete Business Metadata Definition

Delete API for business metadata definition identified by its name.

**Parameters:**

- `bmName` · in: path · type: `string` · required — The name of the business metadata definition



**Responses:**

- `204` — No Content
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `GET /catalog/v1/types/businessmetadatadefs/{bmName}` — Read Business Metadata Definition

Get the business metadata definition with the given name.

**Parameters:**

- `bmName` · in: path · type: `string` · required — The name of the business metadata definition



**Responses:**

- `200` — The business metadata definition — body: `BusinessMetadataDef`
- `400` — Bad Request
- `404` — Business metadata definition not found
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `GET /catalog/v1/types/tagdefs` — Bulk Read Tag Definitions

Bulk retrieval API for retrieving tag definitions.

**Parameters:**

- `prefix` · in: query · type: `string` — The prefix of a tag definition name



**Responses:**

- `200` — The tag definitions — body: array of `TagDefResponse`
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `POST /catalog/v1/types/tagdefs` — Bulk Create Tag Definitions

Bulk create API for tag definitions.


**Request body:**

- `application/json` → array of `TagDef`


**Responses:**

- `200` — The tag definitions. Errored tag definitions will have an additional error property. — body: array of `TagDefResponse`
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `PUT /catalog/v1/types/tagdefs` — Bulk Update Tag Definitions

Bulk update API for tag definitions.


**Request body:**

- `application/json` → array of `TagDef`


**Responses:**

- `200` — The tag definitions. Errored tag definitions will have an additional error property. — body: array of `TagDefResponse`
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `DELETE /catalog/v1/types/tagdefs/{tagName}` — Delete Tag Definition

Delete API for tag definition identified by its name.

**Parameters:**

- `tagName` · in: path · type: `string` · required — The name of the tag definition



**Responses:**

- `204` — No Content
- `400` — Bad Request
- `429` — Rate Limit Error
- `500` — Internal Server Error


#### `GET /catalog/v1/types/tagdefs/{tagName}` — Read Tag Definition

Get the tag definition with the given name.

**Parameters:**

- `tagName` · in: path · type: `string` · required — The name of the tag definiton



**Responses:**

- `200` — The tag definition — body: `TagDef`
- `400` — Bad Request
- `404` — Tag definition not found
- `429` — Rate Limit Error
- `500` — Internal Server Error


## Stream Sharing API (v1)

### Provider Shared Resources (cdx/v1)

`ProviderSharedResource` object contains details of the data stream
(topic, schema registry subjects, sharing metadata) that you have shared through Stream Sharing.

#### `GET /cdx/v1/provider-shared-resources` — List of Provider Shared Resources

Retrieve a sorted, filtered, paginated list of all provider shared resources.

**Parameters:**

- `stream_share` · in: query · type: `SearchFilter` — Filter the results by exact match for stream_share.
- `crn` · in: query · type: `SearchFilter` — Filter the results by exact match for crn.
- `include_deleted` · in: query · type: `BooleanFilter` — Include deactivated shared resources
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Provider Shared Resource.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /cdx/v1/provider-shared-resources/{id}` — Read a Provider Shared Resource

Make a request to read a provider shared resource.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the provider shared resource.



**Responses:**

- `200` — Provider Shared Resource.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /cdx/v1/provider-shared-resources/{id}` — Update a Provider Shared Resource

Make a request to update a provider shared resource.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the provider shared resource.


**Request body:**

- `application/json` → `cdx.v1.ProviderSharedResource`


**Responses:**

- `200` — Provider Shared Resource.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /cdx/v1/provider-shared-resources/{id}/images/{file_name}` — Delete the shared resource's image

Deletes the image file for the shared resource

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the provider shared resource.
- `file_name` · in: path · type: `string` · required — The File Name



**Responses:**

- `204` — No Content
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /cdx/v1/provider-shared-resources/{id}/images/{file_name}` — Get image for shared resource

Returns the image file for the shared resource

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the provider shared resource.
- `file_name` · in: path · type: `string` · required — The File Name



**Responses:**

- `200` — returns the image file — body: `string` (binary)
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /cdx/v1/provider-shared-resources/{id}/images/{file_name}` — Upload image for shared resource

Upload the image file for the shared resource

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the provider shared resource.
- `file_name` · in: path · type: `string` · required — The File Name


**Request body:**

- `image/*` → `string` (base64)


**Responses:**

- `201` — image uploaded
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Provider Shares (cdx/v1)

`ProviderShare` object respresents the share that you have created through Stream Sharing.


Related guide: [Provider Stream Shares in Confluent Cloud](https://docs.confluent.io/cloud/current/stream-sharing/produce-shared-data.html#stream-shares).

#### `GET /cdx/v1/provider-shares` — List of Provider Shares

Retrieve a sorted, filtered, paginated list of all provider shares.

**Parameters:**

- `shared_resource` · in: query · type: `SearchFilter` — Filter the results by exact match for shared_resource.
- `crn` · in: query · type: `SearchFilter` — Filter the results by exact match for crn.
- `include_deleted` · in: query · type: `BooleanFilter` — Include deactivated shares
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Provider Share.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /cdx/v1/provider-shares` — Create a provider share

Creates a share based on delivery method.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — Response is the provider share — body: `cdx.v1.ProviderShare`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /cdx/v1/provider-shares/{id}` — Delete a Provider Share

Make a request to delete a provider share.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the provider share.



**Responses:**

- `204` — A Provider Share is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /cdx/v1/provider-shares/{id}` — Read a Provider Share

Make a request to read a provider share.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the provider share.



**Responses:**

- `200` — Provider Share.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /cdx/v1/provider-shares/{id}:resend` — Resend

Resend provider share

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the provider share.



**Responses:**

- `204` — No Content
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Consumer Shared Resources (cdx/v1)

`ConsumerSharedResource` object contains details of the data stream
(topic, schema registry subjects, sharing metadata) that you received through Stream Sharing.

#### `GET /cdx/v1/consumer-shared-resources` — List of Consumer Shared Resources

Retrieve a sorted, filtered, paginated list of all consumer shared resources.

**Parameters:**

- `stream_share` · in: query · type: `SearchFilter` — Filter the results by exact match for stream_share.
- `include_deleted` · in: query · type: `BooleanFilter` — Include deactivated shared resources
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Consumer Shared Resource.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /cdx/v1/consumer-shared-resources/{id}` — Read a Consumer Shared Resource

Make a request to read a consumer shared resource.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the consumer shared resource.



**Responses:**

- `200` — Consumer Shared Resource.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /cdx/v1/consumer-shared-resources/{id}/images/{file_name}` — Get image for shared resource

Returns the image file for the shared resource

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the consumer shared resource.
- `file_name` · in: path · type: `string` · required — The File Name



**Responses:**

- `200` — Returns the image file's binary content — body: `string` (binary)
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /cdx/v1/consumer-shared-resources/{id}:network` — Get shared resource's network configuration

Returns network information of the shared resource

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the consumer shared resource.



**Responses:**

- `200` — The network information of the shared resource — body: `cdx.v1.Network`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Consumer Shares (cdx/v1)

`ConsumerShare` object respresents the share that you received through Stream Sharing.


Related guide: [Consumer Stream Shares in Confluent Cloud](https://docs.confluent.io/cloud/current/stream-sharing/consume-shared-data.html).

#### `GET /cdx/v1/consumer-shares` — List of Consumer Shares

Retrieve a sorted, filtered, paginated list of all consumer shares.

**Parameters:**

- `shared_resource` · in: query · type: `SearchFilter` — Filter the results by exact match for shared_resource.
- `include_deleted` · in: query · type: `BooleanFilter` — Include deactivated shares
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Consumer Share.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /cdx/v1/consumer-shares/{id}` — Delete a Consumer Share

Make a request to delete a consumer share.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the consumer share.



**Responses:**

- `204` — A Consumer Share is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /cdx/v1/consumer-shares/{id}` — Read a Consumer Share

Make a request to read a consumer share.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the consumer share.



**Responses:**

- `200` — Consumer Share.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Shared Tokens (cdx/v1)

Encrypted Token shared with consumer

#### `POST /cdx/v1/shared-tokens:redeem` — Redeem token

Redeem the shared token for shared topic and cluster access information


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Consumer redeems shared token — body: `cdx.v1.RedeemTokenResponse`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /cdx/v1/shared-tokens:resources` — Validate token to view shared resources

Validate and decrypt the shared token and view token's shared resources


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Consumer validates share token and view consumer resources before redeeming in the workflow — body: `object`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Opt Ins (cdx/v1)

Stream sharing opt in options

#### `GET /cdx/v1/opt-in` — Read the organization's stream sharing opt-in settings

Returns the organization's stream sharing opt-in settings.



**Responses:**

- `200` — Opt In.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /cdx/v1/opt-in` — Set the organization's stream sharing opt-in settings

Updates the organization's stream sharing opt-in settings.


**Request body:**

- `application/json` → `cdx.v1.OptIn`


**Responses:**

- `200` — Opt In.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Networking (v1)

### Networks (networking/v1)

`Network` represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud
provider accounts. Dedicated networks support more networking options but can only contain Dedicated clusters.
Shared networks can contain any cluster type.

The API allows you to list, create, read, update, and delete your networks.


Related guide: [APIs to manage networks in Confluent Cloud](https://docs.confluent.io/cloud/current/networking/overview.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `dedicated_networks_per_environment` | Number of dedicated networks per Confluent Cloud environment |

#### `GET /networking/v1/networks` — List of Networks

Retrieve a sorted, filtered, paginated list of all networks.

**Parameters:**

- `spec.display_name` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.display_name. Pass multiple times to see results matching any of the values.
- `spec.cloud` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.cloud. Pass multiple times to see results matching any of the values.
- `spec.region` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.region. Pass multiple times to see results matching any of the values.
- `spec.connection_types` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.connection_types. Pass multiple times to see results matching any of the values.
- `spec.cidr` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.cidr. Pass multiple times to see results matching any of the values.
- `status.phase` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for status.phase. Pass multiple times to see results matching any of the values.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Network.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /networking/v1/networks` — Create a Network

Make a request to create a network.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Network is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /networking/v1/networks/{id}` — Delete a Network

Make a request to delete a network.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the network.



**Responses:**

- `204` — A Network is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/networks/{id}` — Read a Network

Make a request to read a network.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the network.



**Responses:**

- `200` — Network.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /networking/v1/networks/{id}` — Update a Network

Make a request to update a network.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the network.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Network.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Peerings (networking/v1)

Add or remove VPC/VNet peering connections between your VPC/VNet and Confluent Cloud.

Related guides:
* [Use VPC peering connections with Confluent Cloud on AWS](https://docs.confluent.io/cloud/current/networking/peering/aws-peering.html).
* [Use VNet peering connections with Confluent Cloud on Azure](https://docs.confluent.io/cloud/current/networking/peering/azure-peering.html).
* [Use VPC peering connections with Confluent Cloud on Google Cloud](https://docs.confluent.io/cloud/current/networking/peering/gcp-peering.html).




## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `peerings_per_network` | Number of peerings per network |

#### `GET /networking/v1/peerings` — List of Peerings

Retrieve a sorted, filtered, paginated list of all peerings.

**Parameters:**

- `spec.display_name` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.display_name. Pass multiple times to see results matching any of the values.
- `status.phase` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for status.phase. Pass multiple times to see results matching any of the values.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.network` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.network. Pass multiple times to see results matching any of the values.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Peering.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /networking/v1/peerings` — Create a Peering

Make a request to create a peering.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Peering is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /networking/v1/peerings/{id}` — Delete a Peering

Make a request to delete a peering.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the peering.



**Responses:**

- `204` — A Peering is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/peerings/{id}` — Read a Peering

Make a request to read a peering.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the peering.



**Responses:**

- `200` — Peering.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /networking/v1/peerings/{id}` — Update a Peering

Make a request to update a peering.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the peering.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Peering.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Transit Gateway Attachments (networking/v1)

AWS Transit Gateway Attachments

Related guide: [APIs to manage AWS Transit Gateway Attachments](https://docs.confluent.io/cloud/current/networking/aws-transit-gateway.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `tgw_attachments_per_network` | Number of TGW attachments per network |

#### `GET /networking/v1/transit-gateway-attachments` — List of Transit Gateway Attachments

Retrieve a sorted, filtered, paginated list of all transit gateway attachments.

**Parameters:**

- `spec.display_name` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.display_name. Pass multiple times to see results matching any of the values.
- `status.phase` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for status.phase. Pass multiple times to see results matching any of the values.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.network` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.network. Pass multiple times to see results matching any of the values.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Transit Gateway Attachment.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /networking/v1/transit-gateway-attachments` — Create a Transit Gateway Attachment

Make a request to create a transit gateway attachment.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Transit Gateway Attachment is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /networking/v1/transit-gateway-attachments/{id}` — Delete a Transit Gateway Attachment

Make a request to delete a transit gateway attachment.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the transit gateway attachment.



**Responses:**

- `204` — A Transit Gateway Attachment is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/transit-gateway-attachments/{id}` — Read a Transit Gateway Attachment

Make a request to read a transit gateway attachment.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the transit gateway attachment.



**Responses:**

- `200` — Transit Gateway Attachment.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /networking/v1/transit-gateway-attachments/{id}` — Update a Transit Gateway Attachment

Make a request to update a transit gateway attachment.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the transit gateway attachment.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Transit Gateway Attachment.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Private Link Accesses (networking/v1)

Add or remove access to PrivateLink endpoints by AWS account, Azure subscription and GCP project ID.

Related guides:
* [Use Google Cloud Private Service Connect with Confluent Cloud](https://docs.confluent.io/cloud/current/networking/private-links/gcp-private-service-connect.html).
* [Use Azure Private Link with Confluent Cloud](https://docs.confluent.io/cloud/current/networking/private-links/azure-privatelink.html).
* [Use AWS PrivateLink with Confluent Cloud](https://docs.confluent.io/cloud/current/networking/private-links/aws-privatelink.html).




## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `private_link_accounts_per_network` | Number of AWS accounts per network |
| `private_link_subscriptions_per_network` | Number of Azure subscriptions per network |
| `private_service_connect_projects_per_network` | Number of GCP projects per network |

#### `GET /networking/v1/private-link-accesses` — List of Private Link Accesses

Retrieve a sorted, filtered, paginated list of all private link accesses.

**Parameters:**

- `spec.display_name` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.display_name. Pass multiple times to see results matching any of the values.
- `status.phase` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for status.phase. Pass multiple times to see results matching any of the values.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.network` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.network. Pass multiple times to see results matching any of the values.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Private Link Access.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /networking/v1/private-link-accesses` — Create a Private Link Access

Make a request to create a private link access.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Private Link Access is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /networking/v1/private-link-accesses/{id}` — Delete a Private Link Access

Make a request to delete a private link access.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the private link access.



**Responses:**

- `204` — A Private Link Access is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/private-link-accesses/{id}` — Read a Private Link Access

Make a request to read a private link access.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the private link access.



**Responses:**

- `200` — Private Link Access.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /networking/v1/private-link-accesses/{id}` — Update a Private Link Access

Make a request to update a private link access.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the private link access.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Private Link Access.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Network Link Services (networking/v1)

Network Link Service is associated with a Private Link Confluent Cloud Network.
It enables connectivity from other Private Link Confluent Cloud Networks based on
the configured accept policies.


Related guide: [Network Linking Overview](https://docs.confluent.io/cloud/current/networking/network-linking.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `network_link_service_per_network` | Number of network link services per network |

#### `GET /networking/v1/network-link-services` — List of Network Link Services

Retrieve a sorted, filtered, paginated list of all network link services.

**Parameters:**

- `spec.display_name` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.display_name. Pass multiple times to see results matching any of the values.
- `status.phase` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for status.phase. Pass multiple times to see results matching any of the values.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.network` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.network. Pass multiple times to see results matching any of the values.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Network Link Service.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /networking/v1/network-link-services` — Create a Network Link Service

Make a request to create a network link service.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Network Link Service is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /networking/v1/network-link-services/{id}` — Delete a Network Link Service

Make a request to delete a network link service.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the network link service.



**Responses:**

- `204` — A Network Link Service is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/network-link-services/{id}` — Read a Network Link Service

Make a request to read a network link service.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the network link service.



**Responses:**

- `200` — Network Link Service.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /networking/v1/network-link-services/{id}` — Update a Network Link Service

Make a request to update a network link service.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the network link service.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Network Link Service.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Network Link Endpoints (networking/v1)

A Network Link Enpoint is associated with a Private Link Confluent Cloud Network at the origin and a
Network Link Service (associated with another Private Link Confluent Cloud Network) at the target.
It enables connectivity between the origin network and the target network.
It can only be associated with a Private Link network.


Related guide: [Network Linking Overview](https://docs.confluent.io/cloud/current/networking/network-linking.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `network_link_endpoints_per_network` | Number of network link endpoints per network |

#### `GET /networking/v1/network-link-endpoints` — List of Network Link Endpoints

Retrieve a sorted, filtered, paginated list of all network link endpoints.

**Parameters:**

- `spec.display_name` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.display_name. Pass multiple times to see results matching any of the values.
- `status.phase` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for status.phase. Pass multiple times to see results matching any of the values.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.network` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.network. Pass multiple times to see results matching any of the values.
- `spec.network_link_service` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.network_link_service. Pass multiple times to see results matching any of the values.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Network Link Endpoint.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /networking/v1/network-link-endpoints` — Create a Network Link Endpoint

Make a request to create a network link endpoint.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Network Link Endpoint is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /networking/v1/network-link-endpoints/{id}` — Delete a Network Link Endpoint

Make a request to delete a network link endpoint.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the network link endpoint.



**Responses:**

- `204` — A Network Link Endpoint is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/network-link-endpoints/{id}` — Read a Network Link Endpoint

Make a request to read a network link endpoint.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the network link endpoint.



**Responses:**

- `200` — Network Link Endpoint.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /networking/v1/network-link-endpoints/{id}` — Update a Network Link Endpoint

Make a request to update a network link endpoint.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the network link endpoint.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Network Link Endpoint.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Network Link Service Associations (networking/v1)

List of incoming Network Link Enpoints associated with the Network Link Service.


Related guide: [Network Linking Overview](https://docs.confluent.io/cloud/current/networking/network-linking.html).

#### `GET /networking/v1/network-link-service-associations` — List of Network Link Service Associations

Retrieve a sorted, filtered, paginated list of all network link service associations.

**Parameters:**

- `status.phase` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for status.phase. Pass multiple times to see results matching any of the values.
- `spec.network_link_service` · in: query · type: `SearchFilter` · required — Filter the results by exact match for spec.network_link_service.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Network Link Service Association.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/network-link-service-associations/{id}` — Read a Network Link Service Association

Make a request to read a network link service association.

**Parameters:**

- `spec.network_link_service` · in: query · type: `SearchFilter` · required — Scope the operation to the given spec.network_link_service.
- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the network link service association.



**Responses:**

- `200` — Network Link Service Association.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### IP Addresses (networking/v1)

IP Addresses

Related guide: [Use Public Egress IP addresses on Confluent Cloud](https://docs.confluent.io/cloud/current/networking/static-egress-ip-addresses.html)

#### `GET /networking/v1/ip-addresses` — List of IP Addresses

Related guide: [Use Public Egress IP addresses on Confluent Cloud](https://docs.confluent.io/cloud/current/networking/static-egress-ip-addresses.html)

Retrieve a sorted, filtered, paginated list of all IP Addresses.

**Parameters:**

- `cloud` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for cloud. Pass multiple times to see results matching any of the values.
- `region` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for region. Pass multiple times to see results matching any of the values.
- `services` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for services. Pass multiple times to see results matching any of the values.
- `address_type` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for address_type. Pass multiple times to see results matching any of the values.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — IP Address.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Private Link Attachments (networking/v1)

PrivateLink attachment objects represent reservations to establish PrivateLink connections
to a cloud region in order to access resources that belong to a Confluent Cloud Environment.
The API allows you to list, create, read update and delete your PrivateLink attachments.




## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `private_link_attachments_per_environment` | Number of PrivateLink Attachments per environment |

#### `GET /networking/v1/private-link-attachments` — List of Private Link Attachments

Retrieve a sorted, filtered, paginated list of all private link attachments.

**Parameters:**

- `spec.display_name` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.display_name. Pass multiple times to see results matching any of the values.
- `spec.cloud` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.cloud. Pass multiple times to see results matching any of the values.
- `spec.region` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.region. Pass multiple times to see results matching any of the values.
- `status.phase` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for status.phase. Pass multiple times to see results matching any of the values.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Private Link Attachment.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /networking/v1/private-link-attachments` — Create a Private Link Attachment

Make a request to create a private link attachment.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Private Link Attachment is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /networking/v1/private-link-attachments/{id}` — Delete a Private Link Attachment

Make a request to delete a private link attachment.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the private link attachment.



**Responses:**

- `204` — A Private Link Attachment is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/private-link-attachments/{id}` — Read a Private Link Attachment

Make a request to read a private link attachment.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the private link attachment.



**Responses:**

- `200` — Private Link Attachment.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /networking/v1/private-link-attachments/{id}` — Update a Private Link Attachment

Make a request to update a private link attachment.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the private link attachment.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Private Link Attachment.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Private Link Attachment Connections (networking/v1)

PrivateLink attachment connection objects represent connections established to a cloud region
in order to access resources that belong to a Confluent Cloud Environment.
The API allows you to list, create, read update and delete your PrivateLink attachment connections.

#### `GET /networking/v1/private-link-attachment-connections` — List of Private Link Attachment Connections

Retrieve a sorted, filtered, paginated list of all private link attachment connections.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.private_link_attachment` · in: query · type: `SearchFilter` — Filter the results by exact match for spec.private_link_attachment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Private Link Attachment Connection.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /networking/v1/private-link-attachment-connections` — Create a Private Link Attachment Connection

Make a request to create a private link attachment connection.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Private Link Attachment Connection is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /networking/v1/private-link-attachment-connections/{id}` — Delete a Private Link Attachment Connection

Make a request to delete a private link attachment connection.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the private link attachment connection.



**Responses:**

- `204` — A Private Link Attachment Connection is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/private-link-attachment-connections/{id}` — Read a Private Link Attachment Connection

Make a request to read a private link attachment connection.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the private link attachment connection.



**Responses:**

- `200` — Private Link Attachment Connection.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /networking/v1/private-link-attachment-connections/{id}` — Update a Private Link Attachment Connection

Make a request to update a private link attachment connection.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the private link attachment connection.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Private Link Attachment Connection.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### DNS Forwarders (networking/v1)

Add, remove, and update DNS forwarder for your gateway.

Related guides:
* [Use VPC peering connections with Confluent Cloud on AWS](https://docs.confluent.io/cloud/current/networking/peering/aws-peering.html).
* [Use VNet peering connections with Confluent Cloud on Azure](https://docs.confluent.io/cloud/current/networking/peering/azure-peering.html).

#### `GET /networking/v1/dns-forwarders` — List of DNS Forwarders

Retrieve a sorted, filtered, paginated list of all DNS forwarders.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — DNS Forwarder.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /networking/v1/dns-forwarders` — Create a DNS Forwarder

Make a request to create a DNS forwarder.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A DNS Forwarder is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /networking/v1/dns-forwarders/{id}` — Delete a DNS Forwarder

Make a request to delete a DNS forwarder.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the DNS forwarder.



**Responses:**

- `204` — A DNS Forwarder is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/dns-forwarders/{id}` — Read a DNS Forwarder

Make a request to read a DNS forwarder.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the DNS forwarder.



**Responses:**

- `200` — DNS Forwarder.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /networking/v1/dns-forwarders/{id}` — Update a DNS Forwarder

Make a request to update a DNS forwarder.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the DNS forwarder.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — DNS Forwarder.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Access Points (networking/v1)

AccessPoint objects represent network connections in and out of Gateways.
This API allows you to list, create, read, update, and delete your access points.

#### `GET /networking/v1/access-points` — List of Access Points

Retrieve a sorted, filtered, paginated list of all access points.

**Parameters:**

- `spec.display_name` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.display_name. Pass multiple times to see results matching any of the values.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.gateway` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.gateway. Pass multiple times to see results matching any of the values.
- `id` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for id. Pass multiple times to see results matching any of the values.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Access Point.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /networking/v1/access-points` — Create an Access Point

Make a request to create an access point.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — An Access Point is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /networking/v1/access-points/{id}` — Delete an Access Point

Make a request to delete an access point.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the access point.



**Responses:**

- `204` — An Access Point is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/access-points/{id}` — Read an Access Point

Make a request to read an access point.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the access point.



**Responses:**

- `200` — Access Point.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /networking/v1/access-points/{id}` — Update an Access Point

Make a request to update an access point.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the access point.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Access Point.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### DNS Records (networking/v1)

DNS record objects are associated with Confluent Cloud networking resources. This API allows you to list, create, read, update, and delete your DNS records.

#### `GET /networking/v1/dns-records` — List of DNS Records

Retrieve a sorted, filtered, paginated list of all DNS records.

**Parameters:**

- `spec.display_name` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.display_name. Pass multiple times to see results matching any of the values.
- `spec.domain` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.domain. Pass multiple times to see results matching any of the values.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.gateway` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.gateway. Pass multiple times to see results matching any of the values.
- `resource` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for resource. Pass multiple times to see results matching any of the values.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — DNS Record.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /networking/v1/dns-records` — Create a DNS Record

Make a request to create a DNS record.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A DNS Record is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /networking/v1/dns-records/{id}` — Delete a DNS Record

Make a request to delete a DNS record.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the DNS record.



**Responses:**

- `204` — A DNS Record is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/dns-records/{id}` — Read a DNS Record

Make a request to read a DNS record.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the DNS record.



**Responses:**

- `200` — DNS Record.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /networking/v1/dns-records/{id}` — Update a DNS Record

Make a request to update a DNS record.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the DNS record.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — DNS Record.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Gateways (networking/v1)

A Gateway represents a slice of traffic capacity in a region that is reserved for a customer.




## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `gateways_per_region_per_environment` | Number of Gateways per region per environment |

#### `GET /networking/v1/gateways` — List of Gateways

Retrieve a sorted, filtered, paginated list of all gateways.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `gateway_type` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for gateway_type. Pass multiple times to see results matching any of the values.
- `id` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for id. Pass multiple times to see results matching any of the values.
- `spec.config.region` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.config.region. Pass multiple times to see results matching any of the values.
- `spec.display_name` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.display_name. Pass multiple times to see results matching any of the values.
- `status.phase` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for status.phase. Pass multiple times to see results matching any of the values.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Gateway.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /networking/v1/gateways` — Create a Gateway

Make a request to create a gateway.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Gateway is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /networking/v1/gateways/{id}` — Delete a Gateway

Make a request to delete a gateway.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the gateway.



**Responses:**

- `204` — A Gateway is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /networking/v1/gateways/{id}` — Read a Gateway

Make a request to read a gateway.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the gateway.



**Responses:**

- `200` — Gateway.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /networking/v1/gateways/{id}` — Update a Gateway

Make a request to update a gateway.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the gateway.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Gateway.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Security Token Service (v1)

### OAuth Tokens (sts/v1)

OAuth Token is a [JSON Web Token (JWT)](https://www.rfc-editor.org/rfc/rfc7519) that enables the use of
external identities to access Confluent Cloud APIs

#### `POST /sts/v1/oauth2/token` — Exchange an OAuth Token

Use this operation to exchange an access token (JWT) issued by an external identity provider for
an access token (JWT) issued by Confluent.This enables the use of external identities
to access Confluent Cloud APIs.


**Request body:**

- `application/x-www-form-urlencoded` → (see schema)


**Responses:**

- `200` — access token used to access public control plane api — body: `sts.v1.TokenExchangeReply`
- `400` → response: `BadRequestError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Kafka Quota (v1)

### Client Quotas (kafka-quotas/v1)

`ClientQuota` objects represent Client Quotas you can set at the service account level.

The API allows you to list, create, read, update, and delete your client quotas.


Related guide: [Client Quotas in Confluent Cloud](https://docs.confluent.io/cloud/current/clusters/client-quotas.html).

#### `GET /kafka-quotas/v1/client-quotas` — List of Client Quotas

Retrieve a sorted, filtered, paginated list of all client quotas.

**Parameters:**

- `spec.cluster` · in: query · type: `SearchFilter` · required — Filter the results by exact match for spec.cluster.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Client Quota.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /kafka-quotas/v1/client-quotas` — Create a Client Quota

Make a request to create a client quota.


**Request body:** *required*

- `application/json` → (see schema)


**Responses:**

- `202` — A Client Quota is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /kafka-quotas/v1/client-quotas/{id}` — Delete a Client Quota

Make a request to delete a client quota.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the client quota.



**Responses:**

- `204` — A Client Quota is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /kafka-quotas/v1/client-quotas/{id}` — Read a Client Quota

Make a request to read a client quota.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the client quota.



**Responses:**

- `200` — Client Quota.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /kafka-quotas/v1/client-quotas/{id}` — Update a Client Quota

Make a request to update a client quota.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the client quota.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Client Quota.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Bring Your Own Key (BYOK) Management (v1)

### Keys (byok/v1)

`Key` objects represent customer managed keys on dedicated Confluent Cloud clusters.

Keys are used to protect data at rest stored in your dedicated Confluent Cloud clusters on AWS, Azure, and GCP.
This API allows you to upload and retrieve self-managed keys on Confluent Cloud.


Related guide: [Confluent Cloud Bring Your Own Key (BYOK) Management API](https://docs.confluent.io/cloud/current/clusters/byok/index.html).



## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `byok.max_keys.per_org` | BYOK keys in one Confluent Cloud organisation. |

#### `GET /byok/v1/keys` — List of Keys

Retrieve a sorted, filtered, paginated list of all keys.

**Parameters:**

- `display_name` · in: query · type: `SearchFilter` — Filter the results by a partial search of display_name.
- `provider` · in: query · type: `SearchFilter` — Filter the results by exact match for provider.
- `state` · in: query · type: `SearchFilter` — Filter the results by exact match for state.
- `validation_phase` · in: query · type: `SearchFilter` — Filter the results by exact match for validation_phase.
- `validation_region` · in: query · type: `SearchFilter` — Filter keys by the cloud region where they are deployed.
- `key` · in: query · type: `SearchFilter` — Filters results by a partial match on the key identifier: key_arn for AWS, key_id for Azure and GCP.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Key.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /byok/v1/keys` — Create a Key

Make a request to create a key.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Key was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /byok/v1/keys/{id}` — Delete a Key

Make a request to delete a key.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the key.



**Responses:**

- `204` — A Key is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /byok/v1/keys/{id}` — Read a Key

Make a request to read a key.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the key.



**Responses:**

- `200` — Key.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /byok/v1/keys/{id}` — Update a Key

Make a request to update a key.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the key.


**Request body:**

- `application/json` → `byok.v1.Key`


**Responses:**

- `200` — Key.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `402` → response: `OverQuotaError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Billing API (v1)

### Costs (billing/v1)

`Cost` objects represent the aggregated billing costs for an organization


Related guide: [Retrieve costs for a range of dates](https://docs.confluent.io/cloud/current/billing/overview.html#retrieve-costs-for-a-range-of-dates).

#### `GET /billing/v1/costs` — List of Costs

Retrieve a sorted, filtered, paginated list of all costs.

**Parameters:**

- `start_date` · in: query · type: `SearchFilter` · required — Filter the results by exact match for start_date.
- `end_date` · in: query · type: `SearchFilter` · required — Filter the results by exact match for end_date.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Cost.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Compute Pool Mgmt for Flink (v2)

### Compute Pools (fcpm/v2)

A Compute Pool represents a set of compute resources that is used to run your Queries.
The resources (CPUs, memory,…) provided by a Compute Pool are shared between all Queries that use it.
Note that the Compute Pool API supports a limited pagination API, only the `next` field will be populated.

#### `GET /fcpm/v2/compute-pools` — List of Compute Pools

Retrieve a sorted, filtered, paginated list of all compute pools.

**Parameters:**

- `spec.region` · in: query · type: `SearchFilter` — Filter the results by exact match for spec.region.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.network` · in: query · type: `SearchFilter` — Filter the results by exact match for spec.network.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Compute Pool.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /fcpm/v2/compute-pools` — Create a Compute Pool

Make a request to create a compute pool.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Compute Pool is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /fcpm/v2/compute-pools/{id}` — Delete a Compute Pool

Make a request to delete a compute pool.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the compute pool.



**Responses:**

- `204` — A Compute Pool is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /fcpm/v2/compute-pools/{id}` — Read a Compute Pool

Make a request to read a compute pool.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the compute pool.



**Responses:**

- `200` — Compute Pool.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /fcpm/v2/compute-pools/{id}` — Update a Compute Pool

Make a request to update a compute pool.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the compute pool.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Compute Pool.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Regions (fcpm/v2)

`Region` objects represent cloud provider regions available when placing Flink compute pools.
The API allows you to list Flink regions.

#### `GET /fcpm/v2/regions` — List of Regions

Retrieve a sorted, filtered, paginated list of all regions.

**Parameters:**

- `cloud` · in: query · type: `SearchFilter` — Filter the results by exact match for cloud.
- `region_name` · in: query · type: `SearchFilter` — Filter the results by exact match for region_name.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Region.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Org Compute Pool Configs (fcpm/v2)

`OrgComputePoolConfig` manages compute pool configuration settings for an organization.
The API allows you to read and update organization-wide settings such as whether default pools are enabled
and their maximum CFU limits.

#### `GET /fcpm/v2/compute-pool-config` — Read an Org Compute Pool Config

Make a request to read an org compute pool config.



**Responses:**

- `200` — Org Compute Pool Config.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /fcpm/v2/compute-pool-config` — Update an Org Compute Pool Config

Make a request to update an org compute pool config.


**Request body:**

- `application/json` → `fcpm.v2.OrgComputePoolConfig`


**Responses:**

- `200` — Org Compute Pool Config.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## SQL API (v1)

### Statements (sql/v1)

`Statement` represents a core resource used to model SQL statements for execution.
A statement generalizes DDL, DML, DQL, etc., but doesn’t attempt to handle session
management or any higher-level functionality.
The API allows you to list, create, read, and delete your statements.

#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/statements` — List of Statements

Retrieve a sorted, filtered, paginated list of all statements.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `spec.compute_pool_id` · in: query · type: `string` — Filter the results by exact match for spec.compute_pool_id. When creating statements, if compute_pool_id is not specified, the statement will use the default compute pool. The default pool is automati…
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.
- `label_selector` · in: query · type: `string` — A comma-separated label selector to filter the statements.



**Responses:**

- `200` — Statements. — body: `sql.v1.StatementList`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /sql/v1/organizations/{organization_id}/environments/{environment_id}/statements` — Create a Statement

Make a request to create a statement.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Statement is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /sql/v1/organizations/{organization_id}/environments/{environment_id}/statements/{statement_name}` — Delete a Statement

Make a request to delete a statement.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `statement_name` · in: path · type: `string` · required — The unique identifier for the statement.



**Responses:**

- `202` — A Statement is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/statements/{statement_name}` — Read a Statement

Make a request to read a statement.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `statement_name` · in: path · type: `string` · required — The unique identifier for the statement.



**Responses:**

- `200` — Statement.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /sql/v1/organizations/{organization_id}/environments/{environment_id}/statements/{statement_name}` — Patch a Statement

Make a request to patch a statement.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `statement_name` · in: path · type: `string` · required — The unique identifier for the statement.


**Request body:**

- `application/json-patch+json` → `PatchRequest`


**Responses:**

- `200` — Patched Statement.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PUT /sql/v1/organizations/{organization_id}/environments/{environment_id}/statements/{statement_name}` — Update a Statement

Make a request to update a statement.
The request will fail with a 409 Conflict error if the Statement has changed since it was fetched.
In this case, do a GET, reapply the modifications, and try the update again.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `statement_name` · in: path · type: `string` · required — The unique identifier for the statement.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Statement is being updated.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Statement Results (sql/v1)

`StatementResult` represents a result of a `Statement` resource.
The API allows you to read your statement's results.

#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/statements/{name}/results` — Read Statement Result

Read Statement Result.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `name` · in: path · type: `string` · required — The unique identifier for the statement.
- `page_token` · in: query · type: `string` — It contains the field offset in the CollectSinkFunction protocol. On the first request, it should be unset. The offset is assumed to start at 0.



**Responses:**

- `200` — Statement Result.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Statement Exceptions (sql/v1)

`StatementException` represents an exception of a `Statement` resource.
The API allows you to read your statement's exceptions.

#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/statements/{statement_name}/exceptions` — List of Statement Exceptions

Retrieve a list of the 10 most recent statement exceptions.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `statement_name` · in: path · type: `string` · required — The unique identifier for the statement.



**Responses:**

- `200` — Statement Exceptions. — body: `sql.v1.StatementExceptionList`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Connections (sql/v1)

`Connection` represents a core resource used to model SQL connections for execution.
A connection generalizes DDL, DML, DQL, etc., but doesn’t attempt to handle session
management or any higher-level functionality.
The API allows you to list, create, read, and delete your connections.

#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/connections` — List of Connections

Retrieve a sorted, filtered and paginated list of all Connections.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `spec.connection_type` · in: query · type: `string` — Filter the results by exact match for spec.connection_type
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Connections. — body: `sql.v1.ConnectionList`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /sql/v1/organizations/{organization_id}/environments/{environment_id}/connections` — Create a Connection

Make a request to create a Connection.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Connection has been successfully created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /sql/v1/organizations/{organization_id}/environments/{environment_id}/connections/{connection_name}` — Delete a Connection

Make a request to delete a statement.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `connection_name` · in: path · type: `string` · required — The unique identifier for the connection.



**Responses:**

- `200` — A Connection has been deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/connections/{connection_name}` — Read a Connection

Make a request to read a Connection.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `connection_name` · in: path · type: `string` · required — The user provided name of the Connection. Unique within a region within an org and env.



**Responses:**

- `200` — Connection.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PUT /sql/v1/organizations/{organization_id}/environments/{environment_id}/connections/{connection_name}` — Update a Connection

Make a request to update a connection.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `connection_name` · in: path · type: `string` · required — The unique identifier for the connection.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — A Connection has been updated.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Agents (sql/v1)

`Agent` models an AI agent that uses a specified model, prompt, and set of tools
to autonomously perform tasks.
The API allows you to create your agents.

#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/agents` — List all agents

Retrieve a sorted and paginated list of all agents.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `page_size` · in: query · type: `integer` (int32) — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — A list of Agents. — body: `sql.v1.AgentList`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{kafka_cluster_id}/agents` — Create an Agent

Make a request to create an Agent.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `kafka_cluster_id` · in: path · type: `string` · required — The unique identifier for the database.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Agent.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{kafka_cluster_id}/agents/{agent_name}` — Delete an Agent

Delete a specific Agent by name.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `kafka_cluster_id` · in: path · type: `string` · required — The unique identifier for the database.
- `agent_name` · in: path · type: `string` · required — The unique identifier for the Agent



**Responses:**

- `200` — A Agent has been deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{kafka_cluster_id}/agents/{agent_name}` — Read an Agent

Retrieve a specific Agent by name.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `kafka_cluster_id` · in: path · type: `string` · required — The unique identifier for the database.
- `agent_name` · in: path · type: `string` · required — The unique identifier for the Agent



**Responses:**

- `200` — The requested Agent. — body: `sql.v1.Agent`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PUT /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{kafka_cluster_id}/agents/{agent_name}` — Alter an Agent

Make a request to update an Agent's mutable fields.
Mutable fields include: `description`, `model`, `prompt`, and `properties`.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `kafka_cluster_id` · in: path · type: `string` · required — The unique identifier for the database.
- `agent_name` · in: path · type: `string` · required — The unique identifier for the Agent


**Request body:** *required*

- `application/json` → (see schema)


**Responses:**

- `200` — Agent has been updated. — body: `sql.v1.Agent`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Tools (sql/v1)

`Tool` models a reusable tool resource backed by a connection that can be referenced
by agents to perform actions.
The API allows you to create your tools.

#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{database_name}/tools` — List of Tools

Retrieve a sorted, filtered, paginated list of all Tools.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `database_name` · in: path · type: `string` · required — The name of the database.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Tools. — body: `sql.v1.ToolList`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{database_name}/tools` — Create a Tool

Make a request to create a Tool.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `database_name` · in: path · type: `string` · required — The name of the database.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — A Tool has been successfully created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{database_name}/tools/{tool_name}` — Delete a Tool

Make a request to delete a Tool.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `database_name` · in: path · type: `string` · required — The name of the database.
- `tool_name` · in: path · type: `string` · required — The user provided name of the Tool.



**Responses:**

- `200` — A Tool has been deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{database_name}/tools/{tool_name}` — Read a Tool

Make a request to read a Tool.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `database_name` · in: path · type: `string` · required — The name of the database.
- `tool_name` · in: path · type: `string` · required — The user provided name of the Tool.



**Responses:**

- `200` — Tool.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Materialized Tables (sql/v1)

`MaterializedTable` represents a core resource used to define and manage streaming SQL queries that persist results.
The API allows you to list, create, read, update, and delete your materialized tables.

#### `POST /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{kafka_cluster_id}/materialized-tables` — Create a materialized table

Create a new Materialized Table.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `kafka_cluster_id` · in: path · type: `string` · required — The unique identifier for the database.


**Request body:** *required*

- `application/json` → (see schema)


**Responses:**

- `201` — Materialized Table is being created
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{kafka_cluster_id}/materialized-tables/{table_name}` — Delete a materialized table

Delete a specific Materialized Table by name.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `kafka_cluster_id` · in: path · type: `string` · required — The unique identifier for the database.
- `table_name` · in: path · type: `string` · required — The unique identifier for the Materialized Table



**Responses:**

- `202` — A Materialized Table is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{kafka_cluster_id}/materialized-tables/{table_name}` — Read a materialized table

Retrieve a specific Materialized Table by name.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `kafka_cluster_id` · in: path · type: `string` · required — The unique identifier for the database.
- `table_name` · in: path · type: `string` · required — The unique identifier for the Materialized Table



**Responses:**

- `200` — The requested Materialized Table. — body: `sql.v1.MaterializedTable`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PUT /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{kafka_cluster_id}/materialized-tables/{table_name}` — Update/Evolve a materialized table

Make a request to update a Materialized Table's mutable fields.
Mutable fields include: `query`, `stopped`, `compute_pool_id`, `principal`, `columns`, `watermark`, `constraints` and `table_options`.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `kafka_cluster_id` · in: path · type: `string` · required — The unique identifier for the database.
- `table_name` · in: path · type: `string` · required — The unique identifier for the Materialized Table


**Request body:** *required*

- `application/json` → (see schema)


**Responses:**

- `200` — Materialized Table update accepted. — body: `sql.v1.MaterializedTable`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/materialized-tables` — List all materialized tables

Retrieve a sorted and paginated list of all materialized tables.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `page_size` · in: query · type: `integer` (int32) — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — A list of Materialized Tables. — body: `sql.v1.MaterializedTableList`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Materialized Table Versions (sql/v1)

`MaterializedTableVersion` represents a specific version of a Materialized Table, capturing the state and changes at that point in time.
The API allows you to list and read versions of your materialized tables.

#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{kafka_cluster_id}/materialized-tables/{table_name}/versions` — List all the versions of a materialized table

Retrieve a sorted and paginated list of all versions for a specific Materialized Table.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `kafka_cluster_id` · in: path · type: `string` · required — The unique identifier for the database.
- `table_name` · in: path · type: `string` · required — The unique identifier for the Materialized Table.
- `page_size` · in: query · type: `integer` (int32) — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — A list of Materialized Table Versions. — body: `sql.v1.MaterializedTableVersionList`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /sql/v1/organizations/{organization_id}/environments/{environment_id}/databases/{kafka_cluster_id}/materialized-tables/{table_name}/versions/{version}` — Read a materialized table version

Retrieve a specific version of a Materialized Table.

**Parameters:**

- `organization_id` · in: path · type: `string` (uuid) · required — The unique identifier for the organization.
- `environment_id` · in: path · type: `string` · required — The unique identifier for the environment.
- `kafka_cluster_id` · in: path · type: `string` · required — The unique identifier for the database.
- `table_name` · in: path · type: `string` · required — The unique identifier for the Materialized Table.
- `version` · in: path · type: `integer` (int32) · required — The version number of the Materialized Table.



**Responses:**

- `200` — The requested Materialized Table Version. — body: `sql.v1.MaterializedTableVersion`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Provider Integration Management (v1)

### Integrations (pim/v1)

`Provider Integration` objects represent access to public cloud service provider (CSP) resources
that may be accessed by Confluent resources (for example, connectors).

The API allows you to create, retrieve, and delete individual integrations, and also obtain a
list of all your provider integrations.


Related guide: [Provider Integration in Confluent Cloud](https://docs.confluent.io/home/overview.html).

#### `GET /pim/v1/integrations` — List of Integrations

Retrieve a sorted, filtered, paginated list of all integrations.

If no `provider` filter is specified, returns provider integrations from all clouds.

**Parameters:**

- `provider` · in: query · type: `SearchFilter` — Filter the results by exact match for provider.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Integration.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /pim/v1/integrations` — Create an Integration

Make a request to create an integration.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — An Integration was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /pim/v1/integrations/{id}` — Delete an Integration

Make a request to delete an integration.

This request fails if existing workloads are using this CSP integration.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the integration.



**Responses:**

- `204` — An Integration is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /pim/v1/integrations/{id}` — Read an Integration

Make a request to read an integration.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the integration.



**Responses:**

- `200` — Integration.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Provider Integration Management (v2)

### Integrations (pim/v2)

`Provider Integration` objects represent access to public cloud service provider (CSP) resources
that may be accessed by Confluent resources (for example, connectors).

The API allows you to create, retrieve, update, delete, and validate individual integrations, and also obtain a
list of all your provider integrations.

Note: The pim/v2 API currently supports only Azure and GCP provider integrations.


Related guide: [Provider Integration in Confluent Cloud](https://docs.confluent.io/home/overview.html).

#### `GET /pim/v2/integrations` — List of Integrations

Retrieve a sorted, filtered, paginated list of all integrations.

If no `provider` filter is specified, returns provider integrations from all clouds.

**Parameters:**

- `display_name` · in: query · type: `SearchFilter` — Filter the results by a partial search of display_name.
- `provider` · in: query · type: `SearchFilter` — Filter the results by exact match for provider.
- `status` · in: query · type: `SearchFilter` — Filter the results by exact match for status.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Integration.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /pim/v2/integrations` — Create an Integration

Make a request to create an integration.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — An Integration was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /pim/v2/integrations/{id}` — Delete an Integration

Make a request to delete an integration.

This request fails if existing workloads are using this CSP integration.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the integration.



**Responses:**

- `204` — An Integration is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /pim/v2/integrations/{id}` — Read an Integration

Make a request to read an integration.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the integration.



**Responses:**

- `200` — Integration.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /pim/v2/integrations/{id}` — Update an Integration

Make a request to update an integration.

This request only works for integrations with `DRAFT` status.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the integration.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Integration.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /pim/v2/integrations:validate` — Validate an Integration

Validate the provider integration configuration.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `204` — The provider integration configuration is validated successfully.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Artifact API (v1)

### Flink Artifacts (artifact/v1)

FlinkArtifact objects represent Flink Artifacts on Confluent Cloud.

#### `GET /artifact/v1/flink-artifacts` — List of Flink Artifacts

Retrieve a sorted, filtered, paginated list of all flink artifacts.

**Parameters:**

- `cloud` · in: query · type: `SearchFilter` · required — Filter the results by exact match for cloud.
- `region` · in: query · type: `SearchFilter` · required — Filter the results by exact match for region.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Flink Artifact.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /artifact/v1/flink-artifacts` — Create a new Flink Artifact.

Make a request to create a flink artifact.

**Parameters:**

- `cloud` · in: query · type: `SearchFilter` · required — Scope the operation to the given cloud.
- `region` · in: query · type: `SearchFilter` · required — Scope the operation to the given region.


**Request body:**

- `application/json` → `object`


**Responses:**

- `201` — A Flink Artifact was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /artifact/v1/flink-artifacts/{id}` — Delete a Flink Artifact

Make a request to delete a flink artifact.

**Parameters:**

- `cloud` · in: query · type: `SearchFilter` · required — Scope the operation to the given cloud.
- `region` · in: query · type: `SearchFilter` · required — Scope the operation to the given region.
- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the flink artifact.



**Responses:**

- `204` — A Flink Artifact is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /artifact/v1/flink-artifacts/{id}` — Read a Flink Artifact

Make a request to read a flink artifact.

**Parameters:**

- `cloud` · in: query · type: `SearchFilter` · required — Scope the operation to the given cloud.
- `region` · in: query · type: `SearchFilter` · required — Scope the operation to the given region.
- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the flink artifact.



**Responses:**

- `200` — Flink Artifact.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /artifact/v1/flink-artifacts/{id}` — Update a Flink Artifact

Make a request to update a flink artifact.

**Parameters:**

- `cloud` · in: query · type: `SearchFilter` · required — Scope the operation to the given cloud.
- `region` · in: query · type: `SearchFilter` · required — Scope the operation to the given region.
- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the flink artifact.


**Request body:**

- `application/json` → `artifact.v1.FlinkArtifact`


**Responses:**

- `200` — Flink Artifact.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Presigned Urls (artifact/v1)

Request a presigned upload URL for new Flink Artifact. Note that
the URL policy expires in one hour. If the policy expires, you can request
a new presigned upload URL.

#### `POST /artifact/v1/presigned-upload-url` — Request a presigned upload URL for a new Flink Artifact.

Request a presigned upload URL to upload a Flink Artifact archive.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Presigned Url.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Flink Artifact Versions (artifact/v1)

FlinkArtifactVersion objects represent Flink Artifact Versions on Confluent Cloud.

_No operations._

## Custom Code Logging API (v1)

### Custom Code Loggings (ccl/v1)

CustomCodeLogging objects represent Custom Code Logging on Confluent Cloud.
The API allows you to list, create, read, update, and delete your Custom Code Logging.

#### `GET /ccl/v1/custom-code-loggings` — List of Custom Code Loggings

Retrieve a sorted, filtered, paginated list of all custom code loggings.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Custom Code Logging.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /ccl/v1/custom-code-loggings` — Create a Custom Code Logging

Make a request to create a custom code logging.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Custom Code Logging was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /ccl/v1/custom-code-loggings/{id}` — Delete a Custom Code Logging

Make a request to delete a custom code logging.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the custom code logging.



**Responses:**

- `204` — A Custom Code Logging is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /ccl/v1/custom-code-loggings/{id}` — Read a Custom Code Logging

Make a request to read a custom code logging.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the custom code logging.



**Responses:**

- `200` — Custom Code Logging.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /ccl/v1/custom-code-loggings/{id}` — Update a Custom Code Logging

Make a request to update a custom code logging.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the custom code logging.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Custom Code Logging.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Tableflow (v1)

### Regions (tableflow/v1)

`Region` objects represent cloud provider regions where Tableflow can be enabled.
This API allows you to list all supported Tableflow regions.

#### `GET /tableflow/v1/regions` — List of Regions

Retrieve a sorted, filtered, paginated list of all regions.

**Parameters:**

- `cloud` · in: query · type: `SearchFilter` — Filter the results by exact match for cloud.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Region.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Tableflow Topics (tableflow/v1)

A Tableflow Topic represents configuration related to a Tableflow enabled kafka topic

#### `GET /tableflow/v1/tableflow-topics` — List of Tableflow Topics

Retrieve a sorted, filtered, paginated list of all tableflow topics.

**Parameters:**

- `spec.table_formats` · in: query · type: `MultipleSearchFilter` — Filter the results by exact match for spec.table_formats. Pass multiple times to see results matching any of the values.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.kafka_cluster` · in: query · type: `SearchFilter` · required — Filter the results by exact match for spec.kafka_cluster.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Tableflow Topic.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /tableflow/v1/tableflow-topics` — Create a Tableflow Topic

Make a request to create a tableflow topic.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Tableflow Topic is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /tableflow/v1/tableflow-topics/{display_name}` — Delete a Tableflow Topic

Make a request to delete a tableflow topic.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `spec.kafka_cluster` · in: query · type: `SearchFilter` · required — Scope the operation to the given spec.kafka_cluster.
- `display_name` · in: path · type: `string` · required — The name of the Kafka topic for which Tableflow is enabled.



**Responses:**

- `204` — A Tableflow Topic is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /tableflow/v1/tableflow-topics/{display_name}` — Read a Tableflow Topic

Make a request to read a tableflow topic.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `spec.kafka_cluster` · in: query · type: `SearchFilter` · required — Scope the operation to the given spec.kafka_cluster.
- `display_name` · in: path · type: `string` · required — The name of the Kafka topic for which Tableflow is enabled.



**Responses:**

- `200` — Tableflow Topic.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /tableflow/v1/tableflow-topics/{display_name}` — Update a Tableflow Topic

Make a request to update a tableflow topic.

**Parameters:**

- `display_name` · in: path · type: `string` · required — The name of the Kafka topic for which Tableflow is enabled.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Tableflow Topic.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Catalog Integrations (tableflow/v1)

A Catalog Integration represents configuration related to a catalog integration

#### `GET /tableflow/v1/catalog-integrations` — List of Catalog Integrations

Retrieve a sorted, filtered, paginated list of all catalog integrations.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.kafka_cluster` · in: query · type: `SearchFilter` · required — Filter the results by exact match for spec.kafka_cluster.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Catalog Integration.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /tableflow/v1/catalog-integrations` — Create a Catalog Integration

Make a request to create a catalog integration.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Catalog Integration is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /tableflow/v1/catalog-integrations/{id}` — Delete a Catalog Integration

Make a request to delete a catalog integration.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `spec.kafka_cluster` · in: query · type: `SearchFilter` · required — Scope the operation to the given spec.kafka_cluster.
- `id` · in: path · type: `string` · required — The unique identifier for the catalog integration.



**Responses:**

- `204` — A Catalog Integration is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /tableflow/v1/catalog-integrations/{id}` — Read a Catalog Integration

Make a request to read a catalog integration.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `spec.kafka_cluster` · in: query · type: `SearchFilter` · required — Scope the operation to the given spec.kafka_cluster.
- `id` · in: path · type: `string` · required — The unique identifier for the catalog integration.



**Responses:**

- `200` — Catalog Integration.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /tableflow/v1/catalog-integrations/{id}` — Update a Catalog Integration

Make a request to update a catalog integration.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the catalog integration.


**Request body:**

- `application/json` → `tableflow.v1.CatalogIntegrationUpdateRequest`


**Responses:**

- `200` — Catalog Integration.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Custom Connect Plugin Management (v1)

### Custom Connect Plugins (ccpm/v1)

CustomConnectPlugins objects represent Custom Connect artifacts containing connector, and SMT jars on Confluent
 Cloud.
The API allows you to list, create, read, update, and delete your Custom Connect Plugins.
Related guide:
[Custom Connect Plugin API](https://docs.confluent.io/cloud/current/connectors/connect-api-section.html).

#### `GET /ccpm/v1/plugins` — List of Custom Connect Plugins

Retrieve a sorted, filtered, paginated list of all custom connect plugins.

If no `cloud` filter is specified, returns custom connect plugins from all clouds.

**Parameters:**

- `spec.cloud` · in: query · type: `SearchFilter` — Filter the results by exact match for spec.cloud.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Custom Connect Plugin.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /ccpm/v1/plugins` — Create a Custom Connect Plugin

Make a request to create a custom connect plugin.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Custom Connect Plugin is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /ccpm/v1/plugins/{id}` — Delete a Custom Connect Plugin

Make a request to delete a custom connect plugin.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the custom connect plugin.



**Responses:**

- `204` — A Custom Connect Plugin is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /ccpm/v1/plugins/{id}` — Read a Custom Connect Plugin

Make a request to read a custom connect plugin.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the custom connect plugin.



**Responses:**

- `200` — Custom Connect Plugin.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /ccpm/v1/plugins/{id}` — Update a Custom Connect Plugin

Make a request to update a custom connect plugin.

**Parameters:**

- `id` · in: path · type: `string` · required — The unique identifier for the custom connect plugin.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Custom Connect Plugin.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Presigned Urls (ccpm/v1)

Request a presigned upload URL for new Custom Connect Plugin. Note that
the URL policy expires in one hour. If the policy expires, you can request
a new presigned upload URL.

Related guide:
[Custom Connect Plugin API](https://docs.confluent.io/cloud/current/connectors/connect-api-section.html).

#### `POST /ccpm/v1/presigned-upload-url` — Request a presigned upload URL for a new Custom Connect Plugin.

Request a presigned upload URL to upload a Custom Connect Plugin archive.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Presigned Url was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Custom Connect Plugin Versions (ccpm/v1)

CustomConnectPluginVersion objects represent Custom Connect Plugin Versions on Confluent Cloud.
The API allows you to list, create, read, update, and delete your Custom Connect Plugin Versions.

#### `GET /ccpm/v1/plugins/{plugin_id}/versions` — List of Custom Connect Plugin Versions

Retrieve a sorted, filtered, paginated list of all custom connect plugin versions.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `plugin_id` · in: path · type: `string` · required — The Plugin



**Responses:**

- `200` — Custom Connect Plugin Version.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /ccpm/v1/plugins/{plugin_id}/versions` — Create a Custom Connect Plugin Version

Make a request to create a custom connect plugin version.

**Parameters:**

- `plugin_id` · in: path · type: `string` · required — The Plugin


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Custom Connect Plugin Version is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /ccpm/v1/plugins/{plugin_id}/versions/{id}` — Delete a Custom Connect Plugin Version

Make a request to delete a custom connect plugin version.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `plugin_id` · in: path · type: `string` · required — The Plugin
- `id` · in: path · type: `string` · required — The unique identifier for the custom connect plugin version.



**Responses:**

- `204` — A Custom Connect Plugin Version is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /ccpm/v1/plugins/{plugin_id}/versions/{id}` — Read a Custom Connect Plugin Version

Make a request to read a custom connect plugin version.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `plugin_id` · in: path · type: `string` · required — The Plugin
- `id` · in: path · type: `string` · required — The unique identifier for the custom connect plugin version.



**Responses:**

- `200` — Custom Connect Plugin Version.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Unified Stream Manager (v1)

### Kafka Clusters (usm/v1)

`KafkaCluster` object represent Confluent Platform Kafka clusters registered with Confluent Cloud.
The API allows you to create and delete KafkaCluster.

#### `GET /usm/v1/kafka-clusters` — List of Kafka Clusters

Retrieve a sorted, filtered, paginated list of all kafka clusters.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Kafka Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /usm/v1/kafka-clusters` — Create a Kafka Cluster

Make a request to create a kafka cluster.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Kafka Cluster was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /usm/v1/kafka-clusters/{id}` — Delete a Kafka Cluster

Make a request to delete a kafka cluster.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the kafka cluster.



**Responses:**

- `204` — A Kafka Cluster is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /usm/v1/kafka-clusters/{id}` — Read a Kafka Cluster

Make a request to read a kafka cluster.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the kafka cluster.



**Responses:**

- `200` — Kafka Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Connect Clusters (usm/v1)

`ConnectCluster` object represent Confluent Platform Connect clusters registered with Confluent Cloud.
The API allows you to create and delete ConnectCluster.

#### `GET /usm/v1/connect-clusters` — List of Connect Clusters

Retrieve a sorted, filtered, paginated list of all connect clusters.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Connect Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /usm/v1/connect-clusters` — Create a Connect Cluster

Make a request to create a connect cluster.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `201` — A Connect Cluster was created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /usm/v1/connect-clusters/{id}` — Delete a Connect Cluster

Make a request to delete a connect cluster.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the connect cluster.



**Responses:**

- `204` — A Connect Cluster is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /usm/v1/connect-clusters/{id}` — Read a Connect Cluster

Make a request to read a connect cluster.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `id` · in: path · type: `string` · required — The unique identifier for the connect cluster.



**Responses:**

- `200` — Connect Cluster.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Endpoint (v1)

### Endpoints (endpoint/v1)

An Endpoint object represents a Fully Qualified Domain Name (FQDN) for a Confluent service resource
via a specific networking solution for a given Confluent Cloud environment.
This API provides a list of Confluent Cloud endpoints filtered by service, cloud provider, region, etc.


Related guides:
* [Resource Overview in Confluent Cloud](https://docs.confluent.io/cloud/current/networking/resource-overview.html).
* [Manage Networking on Confluent Cloud](https://docs.confluent.io/cloud/current/networking/overview.html).

#### `GET /endpoint/v1/endpoints` — List of Endpoints

Retrieve a sorted, filtered, paginated list of all endpoints.

**Parameters:**

- `cloud` · in: query · type: `SearchFilter` — Filter the results by exact match for cloud.
- `region` · in: query · type: `SearchFilter` — Filter the results by exact match for region.
- `service` · in: query · type: `SearchFilter` · required — Filter the results by exact match for service.
- `is_private` · in: query · type: `BooleanFilter` — Filter the results by whether the endpoint is private (true) or public (false). If not specified, returns both private and public endpoints.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `resource` · in: query · type: `SearchFilter` — Filter the results by exact match for resource.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Endpoint.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Real Time Context Engine (v1)

### Rtce Topics (rtce/v1)

An RtceTopic represents a customer's Kafka topic enabled for real-time context engine capabilities,
providing low-latency data access and lookups.

#### `GET /rtce/v1/rtce-topics` — List of Rtce Topics

Retrieve a sorted, filtered, paginated list of all rtce topics.

**Parameters:**

- `spec.cloud` · in: query · type: `SearchFilter` — Filter the results by exact match for spec.cloud.
- `spec.region` · in: query · type: `SearchFilter` — Filter the results by exact match for spec.region.
- `environment` · in: query · type: `SearchFilter` · required — Filter the results by exact match for environment.
- `spec.kafka_cluster` · in: query · type: `SearchFilter` · required — Filter the results by exact match for spec.kafka_cluster.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Rtce Topic.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `POST /rtce/v1/rtce-topics` — Create a Rtce Topic

Make a request to create a rtce topic.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `202` — A Rtce Topic is being created.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `DELETE /rtce/v1/rtce-topics/{topic_name}` — Delete a Rtce Topic

Make a request to delete a rtce topic.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `spec.kafka_cluster` · in: query · type: `SearchFilter` · required — Scope the operation to the given spec.kafka_cluster.
- `topic_name` · in: path · type: `string` · required — The Kafka topic name containing the data for the RTCE topic.



**Responses:**

- `204` — A Rtce Topic is being deleted.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /rtce/v1/rtce-topics/{topic_name}` — Read a Rtce Topic

Make a request to read a rtce topic.

**Parameters:**

- `environment` · in: query · type: `SearchFilter` · required — Scope the operation to the given environment.
- `spec.kafka_cluster` · in: query · type: `SearchFilter` · required — Scope the operation to the given spec.kafka_cluster.
- `topic_name` · in: path · type: `string` · required — The Kafka topic name containing the data for the RTCE topic.



**Responses:**

- `200` — Rtce Topic.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `PATCH /rtce/v1/rtce-topics/{topic_name}` — Update a Rtce Topic

Make a request to update a rtce topic.

**Parameters:**

- `topic_name` · in: path · type: `string` · required — The Kafka topic name containing the data for the RTCE topic.


**Request body:**

- `application/json` → (see schema)


**Responses:**

- `200` — Rtce Topic.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `409` → response: `ConflictError`
- `422` → response: `ValidationError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


### Regions (rtce/v1)

`Region` objects represent cloud provider regions where RtceTopics can be deployed.
This API allows you to list all supported RTCE regions.

#### `GET /rtce/v1/regions` — List of Regions

Retrieve a sorted, filtered, paginated list of all regions.

**Parameters:**

- `cloud` · in: query · type: `SearchFilter` — Filter the results by exact match for cloud.
- `region` · in: query · type: `SearchFilter` — Filter the results by exact match for region.
- `page_size` · in: query · type: `integer` — A pagination size for collection requests.
- `page_token` · in: query · type: `string` — An opaque pagination token for collection requests.



**Responses:**

- `200` — Region.
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## Analytics (v1alpha1)

### Statements (query/v1alpha1)

Execute SQL statements against queryable topics and read their results. A statement
that resolves quickly returns its results inline; a long-running one is assigned a
background job that can be polled for status.

#### `POST /query/v1alpha1` — Execute SQL Statement

Executes an arbitrary SQL query against the engine. If the query resolves in under 30 seconds and returns less than 25 MiB, the response will be an inline HTTP 200 OK.  Otherwise, a 202 Accepted response redirects the client to retrieve  results from a separate streamed data location. Rows are returned as JSON strings by default; set `options.result_format` to `ARROW_STREAM` to receive a base64-encoded Arrow IPC stream with native column types instead.


**Request body:** *required*

- `application/json` → `query.v1alpha1.QueryRequest`


**Responses:**

- `200` — Successful synchronous response containing fully inlined metadata and data results. — body: `query.v1alpha1.QueryResponseInline`
- `202` — Asynchronous request registration. Returned when data sets exceed 25 MiB or execution times cross the 30s processing barrier. — body: `query.v1alpha1.QueryResponseAsync`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `404` → response: `NotFoundError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


#### `GET /query/v1alpha1/jobs/{statement_id}/status` — Query Async Job Status

Returns status updates containing the explicit operational lifecycle states of an active background query.

**Parameters:**

- `statement_id` · in: path · type: `string` · required — The target unique identifier of the background operational query process.



**Responses:**

- `200` — State evaluated successfully. — body: `query.v1alpha1.JobStatusResponse`
- `400` → response: `BadRequestError`
- `401` → response: `UnauthenticatedError`
- `403` → response: `UnauthorizedError`
- `429` → response: `RateLimitError`
- `500` → response: `DefaultSystemError`


## SCIM API (v2)

### Users (scim/v2)

`Users` objects represent user accounts in your Confluent Cloud organization that are
managed through your SSO identity provider integration.

This API enables identity providers to automatically provision, update, and deprovision
user accounts in Confluent Cloud, maintaining synchronization between your identity
provider and Confluent Cloud user directory. Users created through this API will have
access to Confluent Cloud resources based on the configured SSO mapping and organization
role assignments.




## Quotas and Limits
This resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):

| Quota | Description |
| --- | --- |
| `users_per_org` | Users in one Confluent Cloud organization |

#### `GET /scim/v2/sso/{connection_name}/Users` — Search for Users

Make a request to find a user.

Search for users in the organization using SCIM filter expressions. This endpoint supports
filtering by user attributes such as userName to locate existing users or verify if a user
account already exists before provisioning.

**Parameters:**

- `filter` · in: query · type: `SearchFilter` · required — SCIM filter expression for searching users. Supports filtering by user attributes using SCIM filter syntax (e.g., `userName eq "user@example.com"` to find a user by email).
- `connection_name` · in: path · type: `string` · required — The Connection Name



**Responses:**

- `200` — OK
- `400` — Bad Request — body: `scim.v2.Error`
- `401` — Unauthorized — body: `scim.v2.Error`
- `403` — Forbidden — body: `scim.v2.Error`
- `429` — Rate Limit Exceeded — body: `scim.v2.Error`
- `500` — Internal Server Error — body: `scim.v2.Error`


#### `POST /scim/v2/sso/{connection_name}/Users` — Create a User

Make a request to create a user.

**Parameters:**

- `connection_name` · in: path · type: `string` · required — The Connection Name


**Request body:**

- `application/scim+json` → `object`


**Responses:**

- `201` — Created — body: `scim.v2.User`
- `400` — Bad Request — body: `scim.v2.Error`
- `401` — Unauthorized — body: `scim.v2.Error`
- `402` — Over Quota — body: `scim.v2.Error`
- `403` — Forbidden — body: `scim.v2.Error`
- `409` — Conflict — body: `scim.v2.Error`
- `429` — Rate Limit Exceeded — body: `scim.v2.Error`
- `500` — Internal Server Error — body: `scim.v2.Error`


#### `DELETE /scim/v2/sso/{connection_name}/Users/{id}` — Delete a User

Make a request to delete a user.

Permanently removes the user from the organization. This operation will also cascade delete
all of the user's associated resources, including API keys and any other user-specific configurations.
This action cannot be undone.

**Parameters:**

- `connection_name` · in: path · type: `string` · required — The Connection Name
- `id` · in: path · type: `string` · required — The unique identifier for the users.



**Responses:**

- `204` — No Content
- `400` — Bad Request — body: `scim.v2.Error`
- `401` — Unauthorized — body: `scim.v2.Error`
- `403` — Forbidden — body: `scim.v2.Error`
- `404` — Not Found — body: `scim.v2.Error`
- `429` — Rate Limit Exceeded — body: `scim.v2.Error`
- `500` — Internal Server Error — body: `scim.v2.Error`


#### `GET /scim/v2/sso/{connection_name}/Users/{id}` — Read a User

Make a request to read a user.

**Parameters:**

- `connection_name` · in: path · type: `string` · required — The Connection Name
- `id` · in: path · type: `string` · required — The unique identifier for the users.



**Responses:**

- `200` — OK — body: `scim.v2.User`
- `400` — Bad Request — body: `scim.v2.Error`
- `401` — Unauthorized — body: `scim.v2.Error`
- `403` — Forbidden — body: `scim.v2.Error`
- `404` — Not Found — body: `scim.v2.Error`
- `429` — Rate Limit Exceeded — body: `scim.v2.Error`
- `500` — Internal Server Error — body: `scim.v2.Error`


#### `PATCH /scim/v2/sso/{connection_name}/Users/{id}` — Patch a User

Make a request to patch a user.

**Parameters:**

- `connection_name` · in: path · type: `string` · required — The Connection Name
- `id` · in: path · type: `string` · required — The unique identifier for the users.


**Request body:**

- `application/scim+json` → (see schema)
- `application/json` → `scim.v2.PatchOp`


**Responses:**

- `200` — OK — body: `scim.v2.User`
- `400` — Bad Request — body: `scim.v2.Error`
- `401` — Unauthorized — body: `scim.v2.Error`
- `403` — Forbidden — body: `scim.v2.Error`
- `404` — Not Found — body: `scim.v2.Error`
- `429` — Rate Limit Exceeded — body: `scim.v2.Error`
- `500` — Internal Server Error — body: `scim.v2.Error`


#### `PUT /scim/v2/sso/{connection_name}/Users/{id}` — Update a User

Make a request to update a user.

**Parameters:**

- `connection_name` · in: path · type: `string` · required — The Connection Name
- `id` · in: path · type: `string` · required — The unique identifier for the users.


**Request body:**

- `application/scim+json` → (see schema)


**Responses:**

- `200` — OK — body: `scim.v2.User`
- `400` — Bad Request — body: `scim.v2.Error`
- `401` — Unauthorized — body: `scim.v2.Error`
- `403` — Forbidden — body: `scim.v2.Error`
- `404` — Not Found — body: `scim.v2.Error`
- `429` — Rate Limit Exceeded — body: `scim.v2.Error`
- `500` — Internal Server Error — body: `scim.v2.Error`


---

Schemas (~635 types) are not inlined — see the full machine-readable spec: [OpenAPI 3.0 (YAML)](https://docs.confluent.io/cloud/current/openapi.yaml).
