> ## Documentation Index
> Fetch the complete documentation index at: https://docs.streamnative.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Kafka Protocol and Features

## Supported Kafka Requests

The current implementation of the Apache Kafka protocol in StreamNative Cloud supports all the functionalities in Classic Engine and limited functionalities in the Ursa Engine. Specifically, the following Apache Kafka requests are currently supported:

| API Key | Message                 | Classic Engine | Ursa Engine |
| ------- | ----------------------- | -------------- | ----------- |
| 0       | Produce                 | Y              | Y           |
| 1       | Fetch                   | Y              | Y           |
| 2       | ListOffsets             | Y              | Y           |
| 3       | Metadata                | Y              | Y           |
| 8       | OffsetCommit            | Y              | Y           |
| 9       | OffsetFetch             | Y              | Y           |
| 10      | FindCoordinator         | Y              | Y           |
| 11      | JoinGroup               | Y              | Y           |
| 12      | Heartbeat               | Y              | Y           |
| 13      | LeaveGroup              | Y              | Y           |
| 14      | SyncGroup               | Y              | Y           |
| 15      | DescribeGroups          | Y              | Y           |
| 16      | ListGroups              | Y              | Y           |
| 18      | ApiVersions             | Y              | Y           |
| 19      | CreateTopics            | Y              | Y           |
| 20      | DeleteTopics            | Y              | Y           |
| 21      | DeleteRecords           | Y              | Y           |
| 22      | InitProducerId          | Y              | Y (\*)      |
| 24      | AddPartitionsToTxn      | Y              | N           |
| 25      | AddOffsetsToTxn         | Y              | N           |
| 26      | EndTxn                  | Y              | N           |
| 28      | TxnOffsetCommit         | Y              | Y           |
| 32      | AlterConfigs            | Y              | Y           |
| 32      | DescribeConfigs         | Y              | Y           |
| 37      | CreatePartitions        | Y              | Y           |
| 44      | IncrementalAlterConfigs | Y              | Y           |
| 47      | OffsetDelete            | Y              | Y           |
| 51      | DeleteGroups            | Y              | Y           |
| 60      | DescribeCluster         | Y              | Y           |
| 61      | DescribeProducers       | Y              | N           |
| 65      | DescribeTransactions    | Y              | N           |
| 66      | ListTransactions        | Y              | N           |

**Notes**

* `InitProducerId` in Ursa Engine is partially supported when the `transactional.id` is **NOT** specified.

We're actively working on adding support for more Kafka features and more Kafka requests to both Classic Engine and Ursa Engine. Please [contact us](https://streamnative.io/contact) for specific feature requests or if you notice any discrepancies.

## Unsupported Kafka Requests

Because the Kafka protocol implementation in StreamNative Cloud is based on Pulsar for Classic Engine and Ursa for Ursa Engine, the following Kafka requests are irrelevant and not supports. For example, requests like:

### Kafka metadata or storage related

These requests are irrelevant to StreamNative Cloud since data storage and replication are handled differently - either in BookKeeper or in the underlying object storage. Therefore, these requests are unlikely to be supported.

| API Key | Request Name                |
| ------- | --------------------------- |
| 4       | LeaderAndIsr                |
| 5       | StopReplica                 |
| 6       | UpdateMetadata              |
| 7       | ControlledShutdown          |
| 23      | OffsetForLeaderEpoch        |
| 34      | AlterReplicaLogDirs         |
| 35      | DescribeLogDirs             |
| 43      | ElectLeaders                |
| 45      | AlterPartitionReassignments |
| 46      | ListPartitionReassignments  |
| 55      | DescribeQuorum              |
| 56      | AlterPartition              |
| 57      | UpdateFeatures              |
| 58      | Envelope                    |
| 64      | UnregisterBroker            |
| 67      | AllocateProducerIds         |
| 80      | AddRaftVoter                |
| 81      | RemoveRaftVoter             |

### Security related

These security and ACL-related requests are not supported because StreamNative Cloud provides more comprehensive security mechanisms, including OAuth2 and Role-Based Access Control (RBAC). For information about using Kafka ACLs in StreamNative Cloud, see [Manage Kafka ACLs](/cloud/security/access/access-control-lists/kafka-acls) to learn how to map Kafka ACLs to Pulsar ACLs.

| API Key | Request Name                 |
| ------- | ---------------------------- |
| 29      | DescribeAcls                 |
| 30      | CreateAcls                   |
| 31      | DeleteAcls                   |
| 38      | CreateDelegationToken        |
| 39      | RenewDelegationToken         |
| 40      | ExpireDelegationToken        |
| 41      | DescribeDelegationToken      |
| 50      | DescribeUserScramCredentials |
| 51      | AlterUserScramCredentials    |

### Quotas related

Kafka's quota feature is not supported. Please use Pulsar's quota management instead.

| API Key | Request Name         |
| ------- | -------------------- |
| 48      | DescribeClientQuotas |
| 49      | AlterClientQuotas    |

### API from latest KIPs

The API requests introduced from the latest KIPs are not yet supported. We are actively evaluating the feasibility of supporting them. If you have any specific feature requests, please [contact us](https://streamnative.io/contact).

| API Key | Request Name               | KIP                                                                                                                                                                                    |
| ------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 68      | ConsumerGroupHeartbeat     | [KIP-848: The Next Generation of the Consumer Rebalance Protocol](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol) |
| 69      | ConsumerGroupDescribe      | [KIP-848: The Next Generation of the Consumer Rebalance Protocol](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol) |
| 71      | GetTelemetrySubscriptions  | [KIP-714: Client metrics and observability](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability)                                             |
| 72      | PushTelemetry              | [KIP-714: Client metrics and observability](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability)                                             |
| 74      | ListClientMetricsResources | [KIP-1000: List Client Metrics Configuration Resources](https://cwiki.apache.org/confluence/display/KAFKA/KIP-1000%3A+List+Client+Metrics+Configuration+Resources)                     |
| 75      | DescribeTopicPartitions    | [KIP-966: Eligible Leader Replicas](https://cwiki.apache.org/confluence/display/KAFKA/KIP-966%3A+Eligible+Leader+Replicas)                                                             |

## Supported topic configs

StreamNative Cloud supports the following topic configurations:

* `cleanup.policy`: This configuration can be set to either `compact` or `compact,delete`. The policy controls topic compaction and is only effective when `compact` is included in the setting. Due to StreamNative Cloud's storage architecture, which preserves both raw and compacted segments rather than replacing individual log segments with compacted ones, we currently only support the values `compact` and `compact,delete`.

## Supported Schema Registry APIs

StreamNative's Kafka Schema Registry is compatible with [Confluent Schema Registry](https://docs.confluent.io/platform/current/schema-registry/develop/api.html).

Following are the supported APIs:

### Schemas

```bash theme={null}
GET /schemas/ids/{int: id}
GET /schemas/ids/{int: id}/subjects
GET /schemas/ids/{int: id}/schema
GET /schemas/ids/{int: id}/versions
GET /schemas/types
```

### Subjects

```bash theme={null}
GET /subjects
GET /subjects/(string: subject)/versions
GET /subjects/(string: subject)/versions/(versionId: version)
GET /subjects/(string: subject)/versions/(versionId: version)/schema
GET /subjects/(string: subject)/versions/(string: versionId)/referencedby
POST /subjects/(string: subject)
POST /subjects/(string: subject)/versions?normalize=(boolean: normalize)
DELETE /subjects/(string: subject)?permanent=(boolean: permanent)
DELETE /subjects/(string: subject)/versions/(string: versionId)
```

### Mode

```bash theme={null}
GET /mode
```

### Compatibility

```bash theme={null}
GET /compatibility/subjects/${subject}/versions/latest
```

### Config

```bash theme={null}
GET /config
GET /config/${subject}
PUT /config/${subject}
```
