Headers:
Request Header => api_key api_version correlation_id client_id 
  api_key => INT16
  api_version => INT16
  correlation_id => INT32
  client_id => NULLABLE_STRING
| Field | 
Description | 
|---|
| api_key | The id of the request type. | 
| api_version | The version of the API. | 
| correlation_id | A user-supplied integer value that will be passed back with the response | 
| client_id | A user specified identifier for the client making the request. | 
Response Header => correlation_id 
  correlation_id => INT32
| Field | 
Description | 
|---|
| correlation_id | The user-supplied value passed in with the request | 
Produce API (Key: 0):
Requests:
Produce Request (Version: 0) => acks timeout [topic_data] 
  acks => INT16
  timeout => INT32
  topic_data => topic [data] 
    topic => STRING
    data => partition record_set 
      partition => INT32
      record_set => BYTES
| Field | 
Description | 
|---|
| acks | The number of acknowledgments the producer requires the leader to have received before considering a request complete. Allowed values: 0 for no acknowledgments, 1 for only the leader and -1 for the full ISR. | 
| timeout | The time to await a response in ms. | 
| topic_data |  | 
| topic |  | 
| data |  | 
| partition |  | 
| record_set |  | 
Produce Request (Version: 1) => acks timeout [topic_data] 
  acks => INT16
  timeout => INT32
  topic_data => topic [data] 
    topic => STRING
    data => partition record_set 
      partition => INT32
      record_set => BYTES
| Field | 
Description | 
|---|
| acks | The number of acknowledgments the producer requires the leader to have received before considering a request complete. Allowed values: 0 for no acknowledgments, 1 for only the leader and -1 for the full ISR. | 
| timeout | The time to await a response in ms. | 
| topic_data |  | 
| topic |  | 
| data |  | 
| partition |  | 
| record_set |  | 
Produce Request (Version: 2) => acks timeout [topic_data] 
  acks => INT16
  timeout => INT32
  topic_data => topic [data] 
    topic => STRING
    data => partition record_set 
      partition => INT32
      record_set => BYTES
| Field | 
Description | 
|---|
| acks | The number of acknowledgments the producer requires the leader to have received before considering a request complete. Allowed values: 0 for no acknowledgments, 1 for only the leader and -1 for the full ISR. | 
| timeout | The time to await a response in ms. | 
| topic_data |  | 
| topic |  | 
| data |  | 
| partition |  | 
| record_set |  | 
Responses:
Produce Response (Version: 0) => [responses] 
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition error_code base_offset 
      partition => INT32
      error_code => INT16
      base_offset => INT64
| Field | 
Description | 
|---|
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition |  | 
| error_code |  | 
| base_offset |  | 
Produce Response (Version: 1) => [responses] throttle_time_ms 
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition error_code base_offset 
      partition => INT32
      error_code => INT16
      base_offset => INT64
  throttle_time_ms => INT32
| Field | 
Description | 
|---|
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition |  | 
| error_code |  | 
| base_offset |  | 
| throttle_time_ms | Duration in milliseconds for which the request was throttled due to quota violation. (Zero if the request did not violate any quota.) | 
Produce Response (Version: 2) => [responses] throttle_time_ms 
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition error_code base_offset timestamp 
      partition => INT32
      error_code => INT16
      base_offset => INT64
      timestamp => INT64
  throttle_time_ms => INT32
| Field | 
Description | 
|---|
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition |  | 
| error_code |  | 
| base_offset |  | 
| timestamp | The timestamp returned by broker after appending the messages. If CreateTime is used for the topic, the timestamp will be -1. If LogAppendTime is used for the topic, the timestamp will be the broker local time when the messages are appended. | 
| throttle_time_ms | Duration in milliseconds for which the request was throttled due to quota violation. (Zero if the request did not violate any quota.) | 
Fetch API (Key: 1):
Requests:
Fetch Request (Version: 0) => replica_id max_wait_time min_bytes [topics] 
  replica_id => INT32
  max_wait_time => INT32
  min_bytes => INT32
  topics => topic [partitions] 
    topic => STRING
    partitions => partition fetch_offset max_bytes 
      partition => INT32
      fetch_offset => INT64
      max_bytes => INT32
| Field | 
Description | 
|---|
| replica_id | Broker id of the follower. For normal consumers, use -1. | 
| max_wait_time | Maximum time in ms to wait for the response. | 
| min_bytes | Minimum bytes to accumulate in the response. | 
| topics | Topics to fetch. | 
| topic | Topic to fetch. | 
| partitions | Partitions to fetch. | 
| partition | Topic partition id. | 
| fetch_offset | Message offset. | 
| max_bytes | Maximum bytes to fetch. | 
Fetch Request (Version: 1) => replica_id max_wait_time min_bytes [topics] 
  replica_id => INT32
  max_wait_time => INT32
  min_bytes => INT32
  topics => topic [partitions] 
    topic => STRING
    partitions => partition fetch_offset max_bytes 
      partition => INT32
      fetch_offset => INT64
      max_bytes => INT32
| Field | 
Description | 
|---|
| replica_id | Broker id of the follower. For normal consumers, use -1. | 
| max_wait_time | Maximum time in ms to wait for the response. | 
| min_bytes | Minimum bytes to accumulate in the response. | 
| topics | Topics to fetch. | 
| topic | Topic to fetch. | 
| partitions | Partitions to fetch. | 
| partition | Topic partition id. | 
| fetch_offset | Message offset. | 
| max_bytes | Maximum bytes to fetch. | 
Fetch Request (Version: 2) => replica_id max_wait_time min_bytes [topics] 
  replica_id => INT32
  max_wait_time => INT32
  min_bytes => INT32
  topics => topic [partitions] 
    topic => STRING
    partitions => partition fetch_offset max_bytes 
      partition => INT32
      fetch_offset => INT64
      max_bytes => INT32
| Field | 
Description | 
|---|
| replica_id | Broker id of the follower. For normal consumers, use -1. | 
| max_wait_time | Maximum time in ms to wait for the response. | 
| min_bytes | Minimum bytes to accumulate in the response. | 
| topics | Topics to fetch. | 
| topic | Topic to fetch. | 
| partitions | Partitions to fetch. | 
| partition | Topic partition id. | 
| fetch_offset | Message offset. | 
| max_bytes | Maximum bytes to fetch. | 
Fetch Request (Version: 3) => replica_id max_wait_time min_bytes max_bytes [topics] 
  replica_id => INT32
  max_wait_time => INT32
  min_bytes => INT32
  max_bytes => INT32
  topics => topic [partitions] 
    topic => STRING
    partitions => partition fetch_offset max_bytes 
      partition => INT32
      fetch_offset => INT64
      max_bytes => INT32
| Field | 
Description | 
|---|
| replica_id | Broker id of the follower. For normal consumers, use -1. | 
| max_wait_time | Maximum time in ms to wait for the response. | 
| min_bytes | Minimum bytes to accumulate in the response. | 
| max_bytes | Maximum bytes to accumulate in the response. Note that this is not an absolute maximum, if the first message in the first non-empty partition of the fetch is larger than this value, the message will still be returned to ensure that progress can be made. | 
| topics | Topics to fetch in the order provided. | 
| topic | Topic to fetch. | 
| partitions | Partitions to fetch. | 
| partition | Topic partition id. | 
| fetch_offset | Message offset. | 
| max_bytes | Maximum bytes to fetch. | 
Responses:
Fetch Response (Version: 0) => [responses] 
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition error_code high_watermark record_set 
      partition => INT32
      error_code => INT16
      high_watermark => INT64
      record_set => BYTES
| Field | 
Description | 
|---|
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition | Topic partition id. | 
| error_code |  | 
| high_watermark | Last committed offset. | 
| record_set |  | 
Fetch Response (Version: 1) => throttle_time_ms [responses] 
  throttle_time_ms => INT32
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition error_code high_watermark record_set 
      partition => INT32
      error_code => INT16
      high_watermark => INT64
      record_set => BYTES
| Field | 
Description | 
|---|
| throttle_time_ms | Duration in milliseconds for which the request was throttled due to quota violation. (Zero if the request did not violate any quota.) | 
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition | Topic partition id. | 
| error_code |  | 
| high_watermark | Last committed offset. | 
| record_set |  | 
Fetch Response (Version: 2) => throttle_time_ms [responses] 
  throttle_time_ms => INT32
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition error_code high_watermark record_set 
      partition => INT32
      error_code => INT16
      high_watermark => INT64
      record_set => BYTES
| Field | 
Description | 
|---|
| throttle_time_ms | Duration in milliseconds for which the request was throttled due to quota violation. (Zero if the request did not violate any quota.) | 
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition | Topic partition id. | 
| error_code |  | 
| high_watermark | Last committed offset. | 
| record_set |  | 
Fetch Response (Version: 3) => throttle_time_ms [responses] 
  throttle_time_ms => INT32
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition error_code high_watermark record_set 
      partition => INT32
      error_code => INT16
      high_watermark => INT64
      record_set => BYTES
| Field | 
Description | 
|---|
| throttle_time_ms | Duration in milliseconds for which the request was throttled due to quota violation. (Zero if the request did not violate any quota.) | 
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition | Topic partition id. | 
| error_code |  | 
| high_watermark | Last committed offset. | 
| record_set |  | 
Offsets API (Key: 2):
Requests:
Offsets Request (Version: 0) => replica_id [topics] 
  replica_id => INT32
  topics => topic [partitions] 
    topic => STRING
    partitions => partition timestamp max_num_offsets 
      partition => INT32
      timestamp => INT64
      max_num_offsets => INT32
| Field | 
Description | 
|---|
| replica_id | Broker id of the follower. For normal consumers, use -1. | 
| topics | Topics to list offsets. | 
| topic | Topic to list offset. | 
| partitions | Partitions to list offset. | 
| partition | Topic partition id. | 
| timestamp | Timestamp. | 
| max_num_offsets | Maximum offsets to return. | 
Offsets Request (Version: 1) => replica_id [topics] 
  replica_id => INT32
  topics => topic [partitions] 
    topic => STRING
    partitions => partition timestamp 
      partition => INT32
      timestamp => INT64
| Field | 
Description | 
|---|
| replica_id | Broker id of the follower. For normal consumers, use -1. | 
| topics | Topics to list offsets. | 
| topic | Topic to list offset. | 
| partitions | Partitions to list offset. | 
| partition | Topic partition id. | 
| timestamp | The target timestamp for the partition. | 
Responses:
Offsets Response (Version: 0) => [responses] 
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition error_code [offsets] 
      partition => INT32
      error_code => INT16
      offsets => INT64
| Field | 
Description | 
|---|
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition | Topic partition id. | 
| error_code |  | 
| offsets | A list of offsets. | 
Offsets Response (Version: 1) => [responses] 
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition error_code timestamp offset 
      partition => INT32
      error_code => INT16
      timestamp => INT64
      offset => INT64
| Field | 
Description | 
|---|
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition | Topic partition id. | 
| error_code |  | 
| timestamp | The timestamp associated with the returned offset | 
| offset | offset found | 
Metadata API (Key: 3):
Requests:
Metadata Request (Version: 0) => [topics] 
  topics => STRING
| Field | 
Description | 
|---|
| topics | An array of topics to fetch metadata for. If no topics are specified fetch metadata for all topics. | 
Metadata Request (Version: 1) => [topics] 
  topics => STRING
| Field | 
Description | 
|---|
| topics | An array of topics to fetch metadata for. If the topics array is null fetch metadata for all topics. | 
Metadata Request (Version: 2) => [topics] 
  topics => STRING
| Field | 
Description | 
|---|
| topics | An array of topics to fetch metadata for. If the topics array is null fetch metadata for all topics. | 
Responses:
Metadata Response (Version: 0) => [brokers] [topic_metadata] 
  brokers => node_id host port 
    node_id => INT32
    host => STRING
    port => INT32
  topic_metadata => topic_error_code topic [partition_metadata] 
    topic_error_code => INT16
    topic => STRING
    partition_metadata => partition_error_code partition_id leader [replicas] [isr] 
      partition_error_code => INT16
      partition_id => INT32
      leader => INT32
      replicas => INT32
      isr => INT32
| Field | 
Description | 
|---|
| brokers | Host and port information for all brokers. | 
| node_id | The broker id. | 
| host | The hostname of the broker. | 
| port | The port on which the broker accepts requests. | 
| topic_metadata |  | 
| topic_error_code | The error code for the given topic. | 
| topic | The name of the topic | 
| partition_metadata | Metadata for each partition of the topic. | 
| partition_error_code | The error code for the partition, if any. | 
| partition_id | The id of the partition. | 
| leader | The id of the broker acting as leader for this partition. | 
| replicas | The set of all nodes that host this partition. | 
| isr | The set of nodes that are in sync with the leader for this partition. | 
Metadata Response (Version: 1) => [brokers] controller_id [topic_metadata] 
  brokers => node_id host port rack 
    node_id => INT32
    host => STRING
    port => INT32
    rack => NULLABLE_STRING
  controller_id => INT32
  topic_metadata => topic_error_code topic is_internal [partition_metadata] 
    topic_error_code => INT16
    topic => STRING
    is_internal => BOOLEAN
    partition_metadata => partition_error_code partition_id leader [replicas] [isr] 
      partition_error_code => INT16
      partition_id => INT32
      leader => INT32
      replicas => INT32
      isr => INT32
| Field | 
Description | 
|---|
| brokers | Host and port information for all brokers. | 
| node_id | The broker id. | 
| host | The hostname of the broker. | 
| port | The port on which the broker accepts requests. | 
| rack | The rack of the broker. | 
| controller_id | The broker id of the controller broker. | 
| topic_metadata |  | 
| topic_error_code | The error code for the given topic. | 
| topic | The name of the topic | 
| is_internal | Indicates if the topic is considered a Kafka internal topic | 
| partition_metadata | Metadata for each partition of the topic. | 
| partition_error_code | The error code for the partition, if any. | 
| partition_id | The id of the partition. | 
| leader | The id of the broker acting as leader for this partition. | 
| replicas | The set of all nodes that host this partition. | 
| isr | The set of nodes that are in sync with the leader for this partition. | 
Metadata Response (Version: 2) => [brokers] cluster_id controller_id [topic_metadata] 
  brokers => node_id host port rack 
    node_id => INT32
    host => STRING
    port => INT32
    rack => NULLABLE_STRING
  cluster_id => NULLABLE_STRING
  controller_id => INT32
  topic_metadata => topic_error_code topic is_internal [partition_metadata] 
    topic_error_code => INT16
    topic => STRING
    is_internal => BOOLEAN
    partition_metadata => partition_error_code partition_id leader [replicas] [isr] 
      partition_error_code => INT16
      partition_id => INT32
      leader => INT32
      replicas => INT32
      isr => INT32
| Field | 
Description | 
|---|
| brokers | Host and port information for all brokers. | 
| node_id | The broker id. | 
| host | The hostname of the broker. | 
| port | The port on which the broker accepts requests. | 
| rack | The rack of the broker. | 
| cluster_id | The cluster id that this broker belongs to. | 
| controller_id | The broker id of the controller broker. | 
| topic_metadata |  | 
| topic_error_code | The error code for the given topic. | 
| topic | The name of the topic | 
| is_internal | Indicates if the topic is considered a Kafka internal topic | 
| partition_metadata | Metadata for each partition of the topic. | 
| partition_error_code | The error code for the partition, if any. | 
| partition_id | The id of the partition. | 
| leader | The id of the broker acting as leader for this partition. | 
| replicas | The set of all nodes that host this partition. | 
| isr | The set of nodes that are in sync with the leader for this partition. | 
LeaderAndIsr API (Key: 4):
Requests:
LeaderAndIsr Request (Version: 0) => controller_id controller_epoch [partition_states] [live_leaders] 
  controller_id => INT32
  controller_epoch => INT32
  partition_states => topic partition controller_epoch leader leader_epoch [isr] zk_version [replicas] 
    topic => STRING
    partition => INT32
    controller_epoch => INT32
    leader => INT32
    leader_epoch => INT32
    isr => INT32
    zk_version => INT32
    replicas => INT32
  live_leaders => id host port 
    id => INT32
    host => STRING
    port => INT32
| Field | 
Description | 
|---|
| controller_id | The controller id. | 
| controller_epoch | The controller epoch. | 
| partition_states |  | 
| topic | Topic name. | 
| partition | Topic partition id. | 
| controller_epoch | The controller epoch. | 
| leader | The broker id for the leader. | 
| leader_epoch | The leader epoch. | 
| isr | The in sync replica ids. | 
| zk_version | The ZK version. | 
| replicas | The replica ids. | 
| live_leaders |  | 
| id | The broker id. | 
| host | The hostname of the broker. | 
| port | The port on which the broker accepts requests. | 
Responses:
LeaderAndIsr Response (Version: 0) => error_code [partitions] 
  error_code => INT16
  partitions => topic partition error_code 
    topic => STRING
    partition => INT32
    error_code => INT16
| Field | 
Description | 
|---|
| error_code | Error code. | 
| partitions |  | 
| topic | Topic name. | 
| partition | Topic partition id. | 
| error_code | Error code. | 
StopReplica API (Key: 5):
Requests:
StopReplica Request (Version: 0) => controller_id controller_epoch delete_partitions [partitions] 
  controller_id => INT32
  controller_epoch => INT32
  delete_partitions => BOOLEAN
  partitions => topic partition 
    topic => STRING
    partition => INT32
| Field | 
Description | 
|---|
| controller_id | The controller id. | 
| controller_epoch | The controller epoch. | 
| delete_partitions | Boolean which indicates if replica's partitions must be deleted. | 
| partitions |  | 
| topic | Topic name. | 
| partition | Topic partition id. | 
Responses:
StopReplica Response (Version: 0) => error_code [partitions] 
  error_code => INT16
  partitions => topic partition error_code 
    topic => STRING
    partition => INT32
    error_code => INT16
| Field | 
Description | 
|---|
| error_code | Error code. | 
| partitions |  | 
| topic | Topic name. | 
| partition | Topic partition id. | 
| error_code | Error code. | 
UpdateMetadata API (Key: 6):
Requests:
UpdateMetadata Request (Version: 0) => controller_id controller_epoch [partition_states] [live_brokers] 
  controller_id => INT32
  controller_epoch => INT32
  partition_states => topic partition controller_epoch leader leader_epoch [isr] zk_version [replicas] 
    topic => STRING
    partition => INT32
    controller_epoch => INT32
    leader => INT32
    leader_epoch => INT32
    isr => INT32
    zk_version => INT32
    replicas => INT32
  live_brokers => id host port 
    id => INT32
    host => STRING
    port => INT32
| Field | 
Description | 
|---|
| controller_id | The controller id. | 
| controller_epoch | The controller epoch. | 
| partition_states |  | 
| topic | Topic name. | 
| partition | Topic partition id. | 
| controller_epoch | The controller epoch. | 
| leader | The broker id for the leader. | 
| leader_epoch | The leader epoch. | 
| isr | The in sync replica ids. | 
| zk_version | The ZK version. | 
| replicas | The replica ids. | 
| live_brokers |  | 
| id | The broker id. | 
| host | The hostname of the broker. | 
| port | The port on which the broker accepts requests. | 
UpdateMetadata Request (Version: 1) => controller_id controller_epoch [partition_states] [live_brokers] 
  controller_id => INT32
  controller_epoch => INT32
  partition_states => topic partition controller_epoch leader leader_epoch [isr] zk_version [replicas] 
    topic => STRING
    partition => INT32
    controller_epoch => INT32
    leader => INT32
    leader_epoch => INT32
    isr => INT32
    zk_version => INT32
    replicas => INT32
  live_brokers => id [end_points] 
    id => INT32
    end_points => port host security_protocol_type 
      port => INT32
      host => STRING
      security_protocol_type => INT16
| Field | 
Description | 
|---|
| controller_id | The controller id. | 
| controller_epoch | The controller epoch. | 
| partition_states |  | 
| topic | Topic name. | 
| partition | Topic partition id. | 
| controller_epoch | The controller epoch. | 
| leader | The broker id for the leader. | 
| leader_epoch | The leader epoch. | 
| isr | The in sync replica ids. | 
| zk_version | The ZK version. | 
| replicas | The replica ids. | 
| live_brokers |  | 
| id | The broker id. | 
| end_points |  | 
| port | The port on which the broker accepts requests. | 
| host | The hostname of the broker. | 
| security_protocol_type | The security protocol type. | 
UpdateMetadata Request (Version: 2) => controller_id controller_epoch [partition_states] [live_brokers] 
  controller_id => INT32
  controller_epoch => INT32
  partition_states => topic partition controller_epoch leader leader_epoch [isr] zk_version [replicas] 
    topic => STRING
    partition => INT32
    controller_epoch => INT32
    leader => INT32
    leader_epoch => INT32
    isr => INT32
    zk_version => INT32
    replicas => INT32
  live_brokers => id [end_points] rack 
    id => INT32
    end_points => port host security_protocol_type 
      port => INT32
      host => STRING
      security_protocol_type => INT16
    rack => NULLABLE_STRING
| Field | 
Description | 
|---|
| controller_id | The controller id. | 
| controller_epoch | The controller epoch. | 
| partition_states |  | 
| topic | Topic name. | 
| partition | Topic partition id. | 
| controller_epoch | The controller epoch. | 
| leader | The broker id for the leader. | 
| leader_epoch | The leader epoch. | 
| isr | The in sync replica ids. | 
| zk_version | The ZK version. | 
| replicas | The replica ids. | 
| live_brokers |  | 
| id | The broker id. | 
| end_points |  | 
| port | The port on which the broker accepts requests. | 
| host | The hostname of the broker. | 
| security_protocol_type | The security protocol type. | 
| rack | The rack | 
Responses:
UpdateMetadata Response (Version: 0) => error_code 
  error_code => INT16
| Field | 
Description | 
|---|
| error_code | Error code. | 
UpdateMetadata Response (Version: 1) => error_code 
  error_code => INT16
| Field | 
Description | 
|---|
| error_code | Error code. | 
UpdateMetadata Response (Version: 2) => error_code 
  error_code => INT16
| Field | 
Description | 
|---|
| error_code | Error code. | 
ControlledShutdown API (Key: 7):
Requests:
ControlledShutdown Request (Version: 1) => broker_id 
  broker_id => INT32
| Field | 
Description | 
|---|
| broker_id | The id of the broker for which controlled shutdown has been requested. | 
Responses:
ControlledShutdown Response (Version: 1) => error_code [partitions_remaining] 
  error_code => INT16
  partitions_remaining => topic partition 
    topic => STRING
    partition => INT32
| Field | 
Description | 
|---|
| error_code |  | 
| partitions_remaining | The partitions that the broker still leads. | 
| topic |  | 
| partition | Topic partition id. | 
OffsetCommit API (Key: 8):
Requests:
OffsetCommit Request (Version: 0) => group_id [topics] 
  group_id => STRING
  topics => topic [partitions] 
    topic => STRING
    partitions => partition offset metadata 
      partition => INT32
      offset => INT64
      metadata => NULLABLE_STRING
| Field | 
Description | 
|---|
| group_id | The group id. | 
| topics | Topics to commit offsets. | 
| topic | Topic to commit. | 
| partitions | Partitions to commit offsets. | 
| partition | Topic partition id. | 
| offset | Message offset to be committed. | 
| metadata | Any associated metadata the client wants to keep. | 
OffsetCommit Request (Version: 1) => group_id group_generation_id member_id [topics] 
  group_id => STRING
  group_generation_id => INT32
  member_id => STRING
  topics => topic [partitions] 
    topic => STRING
    partitions => partition offset timestamp metadata 
      partition => INT32
      offset => INT64
      timestamp => INT64
      metadata => NULLABLE_STRING
| Field | 
Description | 
|---|
| group_id | The group id. | 
| group_generation_id | The generation of the group. | 
| member_id | The member id assigned by the group coordinator. | 
| topics | Topics to commit offsets. | 
| topic | Topic to commit. | 
| partitions | Partitions to commit offsets. | 
| partition | Topic partition id. | 
| offset | Message offset to be committed. | 
| timestamp | Timestamp of the commit | 
| metadata | Any associated metadata the client wants to keep. | 
OffsetCommit Request (Version: 2) => group_id group_generation_id member_id retention_time [topics] 
  group_id => STRING
  group_generation_id => INT32
  member_id => STRING
  retention_time => INT64
  topics => topic [partitions] 
    topic => STRING
    partitions => partition offset metadata 
      partition => INT32
      offset => INT64
      metadata => NULLABLE_STRING
| Field | 
Description | 
|---|
| group_id | The group id. | 
| group_generation_id | The generation of the consumer group. | 
| member_id | The consumer id assigned by the group coordinator. | 
| retention_time | Time period in ms to retain the offset. | 
| topics | Topics to commit offsets. | 
| topic | Topic to commit. | 
| partitions | Partitions to commit offsets. | 
| partition | Topic partition id. | 
| offset | Message offset to be committed. | 
| metadata | Any associated metadata the client wants to keep. | 
Responses:
OffsetCommit Response (Version: 0) => [responses] 
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition error_code 
      partition => INT32
      error_code => INT16
| Field | 
Description | 
|---|
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition | Topic partition id. | 
| error_code |  | 
OffsetCommit Response (Version: 1) => [responses] 
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition error_code 
      partition => INT32
      error_code => INT16
| Field | 
Description | 
|---|
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition | Topic partition id. | 
| error_code |  | 
OffsetCommit Response (Version: 2) => [responses] 
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition error_code 
      partition => INT32
      error_code => INT16
| Field | 
Description | 
|---|
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition | Topic partition id. | 
| error_code |  | 
OffsetFetch API (Key: 9):
Requests:
OffsetFetch Request (Version: 0) => group_id [topics] 
  group_id => STRING
  topics => topic [partitions] 
    topic => STRING
    partitions => partition 
      partition => INT32
| Field | 
Description | 
|---|
| group_id | The consumer group id. | 
| topics | Topics to fetch offsets. | 
| topic | Topic to fetch offset. | 
| partitions | Partitions to fetch offsets. | 
| partition | Topic partition id. | 
OffsetFetch Request (Version: 1) => group_id [topics] 
  group_id => STRING
  topics => topic [partitions] 
    topic => STRING
    partitions => partition 
      partition => INT32
| Field | 
Description | 
|---|
| group_id | The consumer group id. | 
| topics | Topics to fetch offsets. | 
| topic | Topic to fetch offset. | 
| partitions | Partitions to fetch offsets. | 
| partition | Topic partition id. | 
Responses:
OffsetFetch Response (Version: 0) => [responses] 
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition offset metadata error_code 
      partition => INT32
      offset => INT64
      metadata => NULLABLE_STRING
      error_code => INT16
| Field | 
Description | 
|---|
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition | Topic partition id. | 
| offset | Last committed message offset. | 
| metadata | Any associated metadata the client wants to keep. | 
| error_code |  | 
OffsetFetch Response (Version: 1) => [responses] 
  responses => topic [partition_responses] 
    topic => STRING
    partition_responses => partition offset metadata error_code 
      partition => INT32
      offset => INT64
      metadata => NULLABLE_STRING
      error_code => INT16
| Field | 
Description | 
|---|
| responses |  | 
| topic |  | 
| partition_responses |  | 
| partition | Topic partition id. | 
| offset | Last committed message offset. | 
| metadata | Any associated metadata the client wants to keep. | 
| error_code |  | 
GroupCoordinator API (Key: 10):
Requests:
GroupCoordinator Request (Version: 0) => group_id 
  group_id => STRING
| Field | 
Description | 
|---|
| group_id | The unique group id. | 
Responses:
GroupCoordinator Response (Version: 0) => error_code coordinator 
  error_code => INT16
  coordinator => node_id host port 
    node_id => INT32
    host => STRING
    port => INT32
| Field | 
Description | 
|---|
| error_code |  | 
| coordinator | Host and port information for the coordinator for a consumer group. | 
| node_id | The broker id. | 
| host | The hostname of the broker. | 
| port | The port on which the broker accepts requests. | 
JoinGroup API (Key: 11):
Requests:
JoinGroup Request (Version: 0) => group_id session_timeout member_id protocol_type [group_protocols] 
  group_id => STRING
  session_timeout => INT32
  member_id => STRING
  protocol_type => STRING
  group_protocols => protocol_name protocol_metadata 
    protocol_name => STRING
    protocol_metadata => BYTES
| Field | 
Description | 
|---|
| group_id | The group id. | 
| session_timeout | The coordinator considers the consumer dead if it receives no heartbeat after this timeout in ms. | 
| member_id | The assigned consumer id or an empty string for a new consumer. | 
| protocol_type | Unique name for class of protocols implemented by group | 
| group_protocols | List of protocols that the member supports | 
| protocol_name |  | 
| protocol_metadata |  | 
JoinGroup Request (Version: 1) => group_id session_timeout rebalance_timeout member_id protocol_type [group_protocols] 
  group_id => STRING
  session_timeout => INT32
  rebalance_timeout => INT32
  member_id => STRING
  protocol_type => STRING
  group_protocols => protocol_name protocol_metadata 
    protocol_name => STRING
    protocol_metadata => BYTES
| Field | 
Description | 
|---|
| group_id | The group id. | 
| session_timeout | The coordinator considers the consumer dead if it receives no heartbeat after this timeout in ms. | 
| rebalance_timeout | The maximum time that the coordinator will wait for each member to rejoin when rebalancing the group | 
| member_id | The assigned consumer id or an empty string for a new consumer. | 
| protocol_type | Unique name for class of protocols implemented by group | 
| group_protocols | List of protocols that the member supports | 
| protocol_name |  | 
| protocol_metadata |  | 
Responses:
JoinGroup Response (Version: 0) => error_code generation_id group_protocol leader_id member_id [members] 
  error_code => INT16
  generation_id => INT32
  group_protocol => STRING
  leader_id => STRING
  member_id => STRING
  members => member_id member_metadata 
    member_id => STRING
    member_metadata => BYTES
| Field | 
Description | 
|---|
| error_code |  | 
| generation_id | The generation of the consumer group. | 
| group_protocol | The group protocol selected by the coordinator | 
| leader_id | The leader of the group | 
| member_id | The consumer id assigned by the group coordinator. | 
| members |  | 
| member_id |  | 
| member_metadata |  | 
JoinGroup Response (Version: 1) => error_code generation_id group_protocol leader_id member_id [members] 
  error_code => INT16
  generation_id => INT32
  group_protocol => STRING
  leader_id => STRING
  member_id => STRING
  members => member_id member_metadata 
    member_id => STRING
    member_metadata => BYTES
| Field | 
Description | 
|---|
| error_code |  | 
| generation_id | The generation of the consumer group. | 
| group_protocol | The group protocol selected by the coordinator | 
| leader_id | The leader of the group | 
| member_id | The consumer id assigned by the group coordinator. | 
| members |  | 
| member_id |  | 
| member_metadata |  | 
Heartbeat API (Key: 12):
Requests:
Heartbeat Request (Version: 0) => group_id group_generation_id member_id 
  group_id => STRING
  group_generation_id => INT32
  member_id => STRING
| Field | 
Description | 
|---|
| group_id | The group id. | 
| group_generation_id | The generation of the group. | 
| member_id | The member id assigned by the group coordinator. | 
Responses:
Heartbeat Response (Version: 0) => error_code 
  error_code => INT16
| Field | 
Description | 
|---|
| error_code |  | 
LeaveGroup API (Key: 13):
Requests:
LeaveGroup Request (Version: 0) => group_id member_id 
  group_id => STRING
  member_id => STRING
| Field | 
Description | 
|---|
| group_id | The group id. | 
| member_id | The member id assigned by the group coordinator. | 
Responses:
LeaveGroup Response (Version: 0) => error_code 
  error_code => INT16
| Field | 
Description | 
|---|
| error_code |  | 
SyncGroup API (Key: 14):
Requests:
SyncGroup Request (Version: 0) => group_id generation_id member_id [group_assignment] 
  group_id => STRING
  generation_id => INT32
  member_id => STRING
  group_assignment => member_id member_assignment 
    member_id => STRING
    member_assignment => BYTES
| Field | 
Description | 
|---|
| group_id |  | 
| generation_id |  | 
| member_id |  | 
| group_assignment |  | 
| member_id |  | 
| member_assignment |  | 
Responses:
SyncGroup Response (Version: 0) => error_code member_assignment 
  error_code => INT16
  member_assignment => BYTES
| Field | 
Description | 
|---|
| error_code |  | 
| member_assignment |  | 
DescribeGroups API (Key: 15):
Requests:
DescribeGroups Request (Version: 0) => [group_ids] 
  group_ids => STRING
| Field | 
Description | 
|---|
| group_ids | List of groupIds to request metadata for (an empty groupId array will return empty group metadata). | 
Responses:
DescribeGroups Response (Version: 0) => [groups] 
  groups => error_code group_id state protocol_type protocol [members] 
    error_code => INT16
    group_id => STRING
    state => STRING
    protocol_type => STRING
    protocol => STRING
    members => member_id client_id client_host member_metadata member_assignment 
      member_id => STRING
      client_id => STRING
      client_host => STRING
      member_metadata => BYTES
      member_assignment => BYTES
| Field | 
Description | 
|---|
| groups |  | 
| error_code |  | 
| group_id |  | 
| state | The current state of the group (one of: Dead, Stable, AwaitingSync, or PreparingRebalance, or empty if there is no active group) | 
| protocol_type | The current group protocol type (will be empty if there is no active group) | 
| protocol | The current group protocol (only provided if the group is Stable) | 
| members | Current group members (only provided if the group is not Dead) | 
| member_id | The memberId assigned by the coordinator | 
| client_id | The client id used in the member's latest join group request | 
| client_host | The client host used in the request session corresponding to the member's join group. | 
| member_metadata | The metadata corresponding to the current group protocol in use (will only be present if the group is stable). | 
| member_assignment | The current assignment provided by the group leader (will only be present if the group is stable). | 
ListGroups API (Key: 16):
Requests:
ListGroups Request (Version: 0) => 
Responses:
ListGroups Response (Version: 0) => error_code [groups] 
  error_code => INT16
  groups => group_id protocol_type 
    group_id => STRING
    protocol_type => STRING
| Field | 
Description | 
|---|
| error_code |  | 
| groups |  | 
| group_id |  | 
| protocol_type |  | 
SaslHandshake API (Key: 17):
Requests:
SaslHandshake Request (Version: 0) => mechanism 
  mechanism => STRING
| Field | 
Description | 
|---|
| mechanism | SASL Mechanism chosen by the client. | 
Responses:
SaslHandshake Response (Version: 0) => error_code [enabled_mechanisms] 
  error_code => INT16
  enabled_mechanisms => STRING
| Field | 
Description | 
|---|
| error_code |  | 
| enabled_mechanisms | Array of mechanisms enabled in the server. | 
ApiVersions API (Key: 18):
Requests:
ApiVersions Request (Version: 0) => 
Responses:
ApiVersions Response (Version: 0) => error_code [api_versions] 
  error_code => INT16
  api_versions => api_key min_version max_version 
    api_key => INT16
    min_version => INT16
    max_version => INT16
| Field | 
Description | 
|---|
| error_code | Error code. | 
| api_versions | API versions supported by the broker. | 
| api_key | API key. | 
| min_version | Minimum supported version. | 
| max_version | Maximum supported version. | 
CreateTopics API (Key: 19):
Requests:
CreateTopics Request (Version: 0) => [create_topic_requests] timeout 
  create_topic_requests => topic num_partitions replication_factor [replica_assignment] [configs] 
    topic => STRING
    num_partitions => INT32
    replication_factor => INT16
    replica_assignment => partition_id [replicas] 
      partition_id => INT32
      replicas => INT32
    configs => config_key config_value 
      config_key => STRING
      config_value => STRING
  timeout => INT32
| Field | 
Description | 
|---|
| create_topic_requests | An array of single topic creation requests. Can not have multiple entries for the same topic. | 
| topic | Name for newly created topic. | 
| num_partitions | Number of partitions to be created. -1 indicates unset. | 
| replication_factor | Replication factor for the topic. -1 indicates unset. | 
| replica_assignment | Replica assignment among kafka brokers for this topic partitions. If this is set num_partitions and replication_factor must be unset. | 
| partition_id |  | 
| replicas | The set of all nodes that should host this partition. The first replica in the list is the preferred leader. | 
| configs | Topic level configuration for topic to be set. | 
| config_key | Configuration key name | 
| config_value | Configuration value | 
| timeout | The time in ms to wait for a topic to be completely created on the controller node. Values <= 0 will trigger topic creation and return immediately | 
Responses:
CreateTopics Response (Version: 0) => [topic_error_codes] 
  topic_error_codes => topic error_code 
    topic => STRING
    error_code => INT16
| Field | 
Description | 
|---|
| topic_error_codes | An array of per topic error codes. | 
| topic |  | 
| error_code |  | 
DeleteTopics API (Key: 20):
Requests:
DeleteTopics Request (Version: 0) => [topics] timeout 
  topics => STRING
  timeout => INT32
| Field | 
Description | 
|---|
| topics | An array of topics to be deleted. | 
| timeout | The time in ms to wait for a topic to be completely deleted on the controller node. Values <= 0 will trigger topic deletion and return immediately | 
Responses:
DeleteTopics Response (Version: 0) => [topic_error_codes] 
  topic_error_codes => topic error_code 
    topic => STRING
    error_code => INT16
| Field | 
Description | 
|---|
| topic_error_codes | An array of per topic error codes. | 
| topic |  | 
| error_code |  |