conduktor.io ↗

Kafka DescribeTopicPartitions Response Wire Format v0 — Binary Protocol Layout

What is DescribeTopicPartitions?

Provides detailed partition metadata with cursor-based pagination for clusters with thousands of topics (KIP-966). This addresses the scalability limits of the Metadata API when listing all topics in large clusters, as Metadata was never designed for bulk enumeration.

Wire Diagram

Response Header · flexible
message_size int32 · 4B
correlation_id int32 · 4B
tagged var
DescribeTopicPartitionsResponse v0
ThrottleTimeMs int32 · 4B
Topics array
NextCursor? struct
tagged var
ErrorCode int16 · 2B
Name? string (compact)
TopicId uuid · 16B
IsInternal bool · 1B
Partitions array
TopicAuthorizedOperations int32 · 4B
tagged var
ErrorCode int16 · 2B
PartitionIndex int32 · 4B
LeaderId int32 · 4B
LeaderEpoch int32 · 4B
ReplicaNodes []int32
IsrNodes []int32
EligibleLeaderReplicas? []int32
LastKnownElr? []int32
OfflineReplicas []int32
tagged var
TopicName string (compact)
PartitionIndex int32 · 4B
tagged var

Schema & Example

Schema
{
  "ThrottleTimeMs": int32,
  "Topics": [{
      "ErrorCode": int16,
      "Name": string?,
      "TopicId": uuid,
      "IsInternal": bool,
      "Partitions": [{
          "ErrorCode": int16,
          "PartitionIndex": int32,
          "LeaderId": int32,
          "LeaderEpoch": int32,
          "ReplicaNodes": [int32],
          "IsrNodes": [int32],
          "EligibleLeaderReplicas": [int32]?,
          "LastKnownElr": [int32]?,
          "OfflineReplicas": [int32]
      }],
      "TopicAuthorizedOperations": int32
  }],
  "NextCursor": {
    "TopicName": string,
    "PartitionIndex": int32
  }?
}
Example
{
  "ThrottleTimeMs": 0,
  "Topics": [{
      "ErrorCode": 0,
      "Name": "orders",
      "TopicId": "550e8400-e29b-41d4-a716-446655440000",
      "IsInternal": false,
      "Partitions": [{
          "ErrorCode": 0,
          "PartitionIndex": 3,
          "LeaderId": 1,
          "LeaderEpoch": 17,
          "ReplicaNodes": [0, 1, 2],
          "IsrNodes": [0, 1, 2],
          "EligibleLeaderReplicas": [0, 1, 2],
          "LastKnownElr": [1, 2, 3],
          "OfflineReplicas": [0, 1, 2]
      }],
      "TopicAuthorizedOperations": 2
  }],
  "NextCursor": {
    "TopicName": "orders",
    "PartitionIndex": 3
  }?
}