{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/confluent/main/json-schema/confluent-cmk-v2-cluster-list-schema.json",
"title": "cmk.v2.ClusterList",
"description": "`Clusters` objects represent Apache Kafka Clusters on Confluent Cloud.\n\nThe API allows you to list, create, read, update, and delete your Kafka clusters.\n\n\nRelated guide: [Confluent Cloud Cluster Management for Apache Kafka APIs](https://docs.confluent.io/cloud/current/clusters/cluster-api.html).\n\n## The Clusters Model\n\n\n## Quotas and Limits\nThis resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):\n\n| Quota | Description |\n| --- | --- |\n| `kafka_clusters_per_environment` | Number of clusters in one Confluent Cloud environment |",
"x-generated": "2026-10-04",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/confluent-clusters-cmk-v2-api-openapi.yml#/components/schemas/cmk.v2.ClusterList",
"type": "object",
"required": [
"api_version",
"kind",
"metadata",
"data"
],
"properties": {
"api_version": {
"type": "string",
"enum": [
"cmk/v2"
],
"description": "APIVersion defines the schema version of this representation of a resource.",
"readOnly": true
},
"kind": {
"type": "string",
"description": "Kind defines the object this REST resource represents.",
"readOnly": true,
"enum": [
"ClusterList"
]
},
"metadata": {
"allOf": [
{
"$ref": "#/$defs/ListMeta"
},
{
"properties": {
"first": {},
"last": {},
"prev": {},
"next": {}
}
}
]
},
"data": {
"type": "array",
"description": "A data property that contains an array of resource items. Each entry in the array is a separate resource.",
"items": {
"allOf": [
{
"$ref": "#/$defs/cmk.v2.Cluster"
},
{
"type": "object",
"required": [
"id",
"metadata",
"spec",
"status"
],
"properties": {
"spec": {
"type": "object",
"required": [
"display_name",
"availability",
"cloud",
"region",
"config",
"environment"
]
}
}
}
]
},
"uniqueItems": true
}
},
"$defs": {
"EnvScopedObjectReference": {
"type": "object",
"description": "ObjectReference provides information for you to locate the referred object",
"required": [
"id",
"related",
"resource_name"
],
"properties": {
"id": {
"type": "string",
"description": "ID of the referred resource",
"minLength": 1,
"maxLength": 255
},
"environment": {
"type": "string",
"description": "Environment of the referred resource, if env-scoped",
"minLength": 1,
"maxLength": 255
},
"related": {
"type": "string",
"format": "uri",
"description": "API URL for accessing or modifying the referred object",
"minLength": 1,
"readOnly": true
},
"resource_name": {
"type": "string",
"format": "uri",
"description": "CRN reference to the referred resource",
"minLength": 1,
"readOnly": true
}
}
},
"GlobalObjectReference": {
"type": "object",
"description": "ObjectReference provides information for you to locate the referred object",
"required": [
"id",
"related",
"resource_name"
],
"properties": {
"id": {
"type": "string",
"description": "ID of the referred resource",
"minLength": 1,
"maxLength": 255
},
"related": {
"type": "string",
"format": "uri",
"description": "API URL for accessing or modifying the referred object",
"minLength": 1,
"readOnly": true
},
"resource_name": {
"type": "string",
"format": "uri",
"description": "CRN reference to the referred resource",
"minLength": 1,
"readOnly": true
}
}
},
"ListMeta": {
"type": "object",
"description": "ListMeta describes metadata that resource collections may have",
"properties": {
"first": {
"description": "A link to the first page of results. If a response does not contain a first link, then direct navigation to the first page is not supported.",
"type": [
"string",
"null"
],
"format": "uri"
},
"last": {
"description": "A link to the last page of results. If a response does not contain a last link, then direct navigation to the last page is not supported.",
"type": [
"string",
"null"
],
"format": "uri"
},
"prev": {
"description": "A link to the previous page of results. If a response does not contain a prev link, then either there is no previous data or backwards traversal through the result set is not supported.",
"type": [
"string",
"null"
],
"format": "uri"
},
"next": {
"description": "A link to the next page of results. If a response does not contain a next link, then there is no more data available.",
"type": [
"string",
"null"
],
"format": "uri"
},
"total_size": {
"description": "Number of records in the full result set. This response may be paginated and have a smaller number of records.",
"type": "integer",
"format": "int32",
"minimum": 0
}
}
},
"ObjectMeta": {
"description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
"required": [
"self"
],
"properties": {
"self": {
"description": "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",
"type": "string",
"format": "uri",
"readOnly": true
},
"resource_name": {
"description": "Resource Name is a Uniform Resource Identifier (URI) that is globally unique across space and time. It is represented as a Confluent Resource Name",
"type": "string",
"format": "uri",
"readOnly": true
},
"created_at": {
"type": "string",
"format": "date-time",
"readOnly": true,
"description": "The date and time at which this object was created. It is represented in RFC3339 format and is in UTC."
},
"updated_at": {
"type": "string",
"format": "date-time",
"readOnly": true,
"description": "The date and time at which this object was last updated. It is represented in RFC3339 format and is in UTC."
},
"deleted_at": {
"type": "string",
"format": "date-time",
"readOnly": true,
"description": "The date and time at which this object was (or will be) deleted. It is represented in RFC3339 format and is in UTC."
}
},
"readOnly": true
},
"cmk.v2.Basic": {
"type": "object",
"description": "The basic cluster type.\n",
"properties": {
"kind": {
"description": "Basic cluster type.\n",
"type": "string",
"enum": [
"Basic"
]
},
"max_ecku": {
"description": "The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to.\nFor more details, see [Maximum eCKU requirements](https://docs.confluent.io/cloud/current/clusters/cluster-types.html#minimum-maximum-ecku-requirements).\n",
"type": "integer",
"format": "int32",
"minimum": 1
}
},
"required": [
"kind"
]
},
"cmk.v2.Cluster": {
"type": "object",
"description": "`Clusters` objects represent Apache Kafka Clusters on Confluent Cloud.\n\nThe API allows you to list, create, read, update, and delete your Kafka clusters.\n\n\nRelated guide: [Confluent Cloud Cluster Management for Apache Kafka APIs](https://docs.confluent.io/cloud/current/clusters/cluster-api.html).\n\n## The Clusters Model\n\n\n## Quotas and Limits\nThis resource is subject to the [following quotas](https://docs.confluent.io/cloud/current/quotas/overview.html):\n\n| Quota | Description |\n| --- | --- |\n| `kafka_clusters_per_environment` | Number of clusters in one Confluent Cloud environment |",
"properties": {
"api_version": {
"type": "string",
"enum": [
"cmk/v2"
],
"description": "APIVersion defines the schema version of this representation of a resource.",
"readOnly": true
},
"kind": {
"type": "string",
"description": "Kind defines the object this REST resource represents.",
"readOnly": true,
"enum": [
"Cluster"
]
},
"id": {
"description": "ID is the \"natural identifier\" for an object within its scope/namespace; it is normally unique across time but not space. That is, you can assume that the ID will not be reclaimed and reused after an object is deleted (\"time\"); however, it may collide with IDs for other object `kinds` or objects of the same `kind` within a different scope/namespace (\"space\").",
"type": "string",
"maxLength": 255,
"readOnly": true
},
"metadata": {
"allOf": [
{
"$ref": "#/$defs/ObjectMeta"
},
{
"properties": {
"self": {},
"resource_name": {}
}
}
]
},
"spec": {
"$ref": "#/$defs/cmk.v2.ClusterSpec"
},
"status": {
"$ref": "#/$defs/cmk.v2.ClusterStatus"
}
}
},
"cmk.v2.ClusterSpec": {
"type": "object",
"description": "The desired state of the Cluster",
"properties": {
"display_name": {
"type": "string",
"description": "The name of the cluster."
},
"availability": {
"type": "string",
"description": "The availability zone configuration of the cluster\n",
"x-extensible-enum": [
"MULTI_ZONE",
"SINGLE_ZONE",
"HIGH",
"LOW"
]
},
"cloud": {
"type": "string",
"description": "The cloud service provider in which the cluster is running.",
"x-extensible-enum": [
"AWS",
"GCP",
"AZURE"
],
"x-immutable": true
},
"region": {
"type": "string",
"description": "The cloud service provider region where the cluster is running.",
"x-immutable": true
},
"config": {
"description": "The configuration of the Kafka cluster.\n\nNote: Clusters can be upgraded from Basic to Standard, but cannot be downgraded from Standard to Basic.\n",
"default": {
"kind": "Basic"
},
"oneOf": [
{
"$ref": "#/$defs/cmk.v2.Basic"
},
{
"$ref": "#/$defs/cmk.v2.Standard"
},
{
"$ref": "#/$defs/cmk.v2.Dedicated"
},
{
"$ref": "#/$defs/cmk.v2.Enterprise"
},
{
"$ref": "#/$defs/cmk.v2.Freight"
}
]
},
"kafka_bootstrap_endpoint": {
"type": "string",
"description": "The bootstrap endpoint used by Kafka clients to connect to the cluster.\n\nDEPRECATED - Please use the `endpoints` attribute instead.\n",
"deprecated": true,
"x-immutable": true,
"readOnly": true
},
"http_endpoint": {
"type": "string",
"description": "The cluster HTTP request URL.\n\nDEPRECATED - Please use the `endpoints` attribute instead.\n",
"format": "uri",
"deprecated": true,
"x-immutable": true,
"readOnly": true
},
"api_endpoint": {
"type": "string",
"description": "The Kafka API cluster endpoint used by Kafka clients to connect to the cluster.\n\nDEPRECATED - Please use the `endpoints` attribute instead.\n",
"deprecated": true,
"x-immutable": true,
"readOnly": true
},
"endpoints": {
"description": "A map of endpoints for connecting to the Kafka cluster,\nkeyed by access_point_id. Access Point ID 'PUBLIC' and 'PRIVATE_LINK' are reserved.\nThese can be used for different network access methods or regions.\n",
"allOf": [
{
"$ref": "#/$defs/cmk.v2.EndpointsMap"
}
],
"readOnly": true
},
"deletion_protection": {
"type": "boolean",
"description": "Enable deletion protection for the cluster"
},
"environment": {
"allOf": [
{
"$ref": "#/$defs/EnvScopedObjectReference"
}
],
"description": "The environment to which this belongs."
},
"network": {
"allOf": [
{
"$ref": "#/$defs/EnvScopedObjectReference"
}
],
"description": "The network associated with this object.",
"x-immutable": true
},
"byok": {
"allOf": [
{
"$ref": "#/$defs/GlobalObjectReference"
}
],
"description": "Note: For Pre-BYOK v1 clusters, API responses might show both\n`encryption_key` and `byok`.\nTo manage Pre-BYOK v1 keys, refer to:\nhttps://docs.confluent.io/cloud/current/security/encrypt/byok/legacy-byok.html\n#manage-pre-byok-api-v1-self-managed-encryption-keys\n",
"x-immutable": true
}
},
"x-enable-id": true,
"x-enable-listmeta": true,
"x-enable-objectmeta": true
},
"cmk.v2.ClusterStatus": {
"type": "object",
"required": [
"phase"
],
"description": "The status of the Cluster",
"properties": {
"phase": {
"type": "string",
"x-extensible-enum": [
"PROVISIONING",
"PROVISIONED",
"FAILED"
],
"description": "The lifecyle phase of the cluster:\n PROVISIONED: cluster is provisioned;\n PROVISIONING: cluster provisioning is in progress;\n FAILED: provisioning failed\n",
"readOnly": true
},
"cku": {
"description": "The number of Confluent Kafka Units (CKUs) the Dedicated cluster currently has.\n",
"readOnly": true,
"type": "integer",
"format": "int32",
"minimum": 1
}
},
"readOnly": true
},
"cmk.v2.Dedicated": {
"type": "object",
"description": "A dedicated cluster with its parameters.\n",
"properties": {
"kind": {
"type": "string",
"enum": [
"Dedicated"
],
"description": "Dedicated cluster type.\n"
},
"cku": {
"description": "The number of Confluent Kafka Units (CKUs) for Dedicated cluster types.\nMULTI_ZONE dedicated clusters must have at least two CKUs.\n",
"type": "integer",
"format": "int32",
"minimum": 1
},
"encryption_key": {
"type": "string",
"description": "The id of the encryption key that is used to encrypt the data in the Kafka cluster.\n(e.g. for Amazon Web Services, the Amazon Resource Name of the key).\n",
"deprecated": true,
"x-immutable": true
},
"zones": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"minItems": 1,
"maxItems": 3,
"description": "The list of zones the cluster is in.\n\nOn AWS, zones are AWS [AZ IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html)\n (e.g. use1-az3)\n\nOn GCP, zones are GCP [zones](https://cloud.google.com/compute/docs/regions-zones)\n (e.g. us-central1-c).\n",
"readOnly": false,
"x-immutable": true
},
"release_priority": {
"type": "string",
"x-extensible-enum": [
"REGULAR",
"PRIORITY"
],
"description": "Specifies the release priority for cluster updates. Defaults to REGULAR. Clusters with PRIORITY are updated before clusters with REGULAR.\n",
"default": "REGULAR"
}
},
"required": [
"kind",
"cku"
]
},
"cmk.v2.Endpoints": {
"type": "object",
"description": "Given a gateway type, endpoints to connect to the Kafka cluster.\n",
"properties": {
"kafka_bootstrap_endpoint": {
"type": "string",
"description": "The bootstrap endpoint used by Kafka clients to connect to the cluster.\n"
},
"http_endpoint": {
"type": "string",
"description": "The REST endpoint for the Kafka cluster.\n",
"format": "uri"
},
"connection_type": {
"type": "string",
"description": "The type of connection used for the endpoint.\n",
"x-extensible-enum": [
"PUBLIC",
"PRIVATE_LINK",
"PRIVATE_NETWORK_INTERFACE"
]
}
},
"required": [
"kafka_bootstrap_endpoint",
"http_endpoint",
"connection_type"
],
"readOnly": true
},
"cmk.v2.EndpointsMap": {
"type": "object",
"description": "Map of endpoints for a Kafka cluster, keyed by access point ID.\n",
"additionalProperties": {
"$ref": "#/$defs/cmk.v2.Endpoints"
},
"readOnly": true
},
"cmk.v2.Enterprise": {
"type": "object",
"description": "The enterprise cluster type.\n",
"properties": {
"kind": {
"description": "Enterprise cluster type.\n",
"type": "string",
"enum": [
"Enterprise"
]
},
"max_ecku": {
"description": "The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to.\nKafka clusters with `HIGH` availability must have at least two eCKUs.\nFor more details, see [Maximum eCKU requirements](https://docs.confluent.io/cloud/current/clusters/cluster-types.html#minimum-maximum-ecku-requirements).\n",
"type": "integer",
"format": "int32",
"minimum": 1
}
},
"required": [
"kind"
]
},
"cmk.v2.Freight": {
"type": "object",
"description": "A freight cluster with its parameters.\n",
"properties": {
"kind": {
"type": "string",
"enum": [
"Freight"
],
"description": "Freight cluster type.\n"
},
"max_ecku": {
"description": "The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to.\nKafka clusters with `HIGH` availability must have at least two eCKUs.\nFor more details, see [Maximum eCKU requirements](https://docs.confluent.io/cloud/current/clusters/cluster-types.html#minimum-maximum-ecku-requirements).\n",
"type": "integer",
"format": "int32",
"minimum": 1
},
"zones": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"minItems": 1,
"maxItems": 3,
"description": "The list of zones the cluster is in.\n\nOn AWS, zones are AWS [AZ IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html)\n (e.g. use1-az3)\n\nOn GCP, zones are GCP [zones](https://cloud.google.com/compute/docs/regions-zones)\n (e.g. us-central1-c).\n",
"readOnly": true,
"x-immutable": true
}
},
"required": [
"kind"
]
},
"cmk.v2.Standard": {
"type": "object",
"description": "The standard cluster type.\n",
"properties": {
"kind": {
"description": "Standard cluster type.\n",
"type": "string",
"enum": [
"Standard"
]
},
"max_ecku": {
"description": "The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to.\nKafka clusters with `HIGH` availability must have at least two eCKUs.\nFor more details, see [Maximum eCKU requirements](https://docs.confluent.io/cloud/current/clusters/cluster-types.html#minimum-maximum-ecku-requirements).\n",
"type": "integer",
"format": "int32",
"minimum": 1
}
},
"required": [
"kind"
]
}
}
}