Skip to content
m manifester.io
All Kafka APIs

ConsumerGroupDescribe

This page encodes the smallest legal instance of the request and the response: numeric fields are zero, strings and byte arrays are empty, every array carries exactly one sample element, and any records field holds one empty 61-byte RecordBatch v2. Version 1 is a flexible version, so every struct is terminated by a uvarint tagged-field count and strings and arrays carry compact length-plus-one prefixes. Sizes below include the leading int32 size prefix.

API key
69
Encoded at
v1
Flexible versions
0+
Headers
req v2, resp v1
Request versions
0-1
Response versions
0-1
Request size
19 bytes
Response size
99 bytes
framerpc headerrequest bodyRecordBatchRecordresponse bodytagged_fields

Request

ConsumerGroupDescribeRequest v1, request header v2, 19 bytes on the wire

byte layout (19 bytes, 16 bytes per row)

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0000
0010

object tree

ConsumerGroupDescribeRequest         message v1                                     [0x0000, 19B]
+-- Frame                                                                           [0x0000, 4B]   length-delimited framing
|   +-- size                         int32            = 15                          [0x0000, 4B]   number of bytes that follow, patched after encoding
+-- RequestHeader                    v2                                             [0x0004, 11B]  common request header
|   +-- request_api_key              int16            = 69 (ConsumerGroupDescribe)  [0x0004, 2B]   numeric id of the API being invoked
|   +-- request_api_version          int16            = 1                           [0x0006, 2B]   version of the API being invoked
|   +-- correlation_id               int32            = 0                           [0x0008, 4B]   echoed back by the broker in the response
|   +-- client_id                    nullable_string  = "" (int16 len=0)            [0x000c, 2B]   always a non-flexible int16-prefixed string
|   +-- tagged_fields                uvarint          = 0                           [0x000e, 1B]   number of tagged fields in the header
+-- ConsumerGroupDescribeRequest     struct                                         [0x000f, 4B]   message body, version 1
    +-- GroupIds                     []string         = 1 element                   [0x000f, 2B]   The ids of the groups to describe.
    |   +-- length                   uvarint          = 2 (compact, n+1)            [0x000f, 1B]   one sample element follows
    |   +-- string[0]                string           = "" (compact, len+1=1)       [0x0010, 1B]
    +-- IncludeAuthorizedOperations  bool             = false                       [0x0011, 1B]   Whether to include authorized operations.
    +-- tagged_fields                uvarint          = 0                           [0x0012, 1B]   number of tagged fields in this struct

kafka message schema (.json)

{
  "apiKey": 69,
  "type": "request",
  "listeners": ["broker"],
  "name": "ConsumerGroupDescribeRequest",
  // Version 1 adds MemberType field to ConsumerGroupDescribeResponse (KIP-1099).
  // For ConsumerGroupDescribeRequest, version 1 is same as version 0.
  "validVersions": "0-1",
  "flexibleVersions": "0+",
  "fields": [
    { "name": "GroupIds", "type": "[]string", "versions": "0+", "entityType": "groupId",
      "about": "The ids of the groups to describe." },
    { "name": "IncludeAuthorizedOperations", "type": "bool", "versions": "0+",
      "about": "Whether to include authorized operations." }
  ]
}

Response

ConsumerGroupDescribeResponse v1, response header v1, 99 bytes on the wire

byte layout (99 bytes, 16 bytes per row)

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0000
0010
0020
0030
0040
0050
0060

object tree

ConsumerGroupDescribeResponse                       message v1                                                 [0x0000, 99B]
+-- Frame                                                                                                      [0x0000, 4B]   length-delimited framing
|   +-- size                                        int32              = 95                                    [0x0000, 4B]   number of bytes that follow, patched after encoding
+-- ResponseHeader                                  v1                                                         [0x0004, 5B]   common response header
|   +-- correlation_id                              int32              = 0                                     [0x0004, 4B]   matches the correlation_id of the request
|   +-- tagged_fields                               uvarint            = 0                                     [0x0008, 1B]   number of tagged fields in the header
+-- ConsumerGroupDescribeResponse                   struct                                                     [0x0009, 90B]  message body, version 1
    +-- ThrottleTimeMs                              int32              = 0                                     [0x0009, 4B]   The duration in milliseconds for which the request was throttled due to a q...
    +-- Groups                                      []DescribedGroup   = 1 element                             [0x000d, 85B]  Each described group.
    |   +-- length                                  uvarint            = 2 (compact, n+1)                      [0x000d, 1B]   one sample element follows
    |   +-- DescribedGroup[0]                       DescribedGroup     = struct                                [0x000e, 84B]
    |       +-- ErrorCode                           int16              = 0                                     [0x000e, 2B]   The describe error, or 0 if there was no error.
    |       +-- ErrorMessage                        string             = "" (compact, len+1=1)                 [0x0010, 1B]   The top-level error message, or null if there was no error.
    |       +-- GroupId                             string             = "" (compact, len+1=1)                 [0x0011, 1B]   The group ID string.
    |       +-- GroupState                          string             = "" (compact, len+1=1)                 [0x0012, 1B]   The group state string, or the empty string.
    |       +-- GroupEpoch                          int32              = 0                                     [0x0013, 4B]   The group epoch.
    |       +-- AssignmentEpoch                     int32              = 0                                     [0x0017, 4B]   The assignment epoch.
    |       +-- AssignorName                        string             = "" (compact, len+1=1)                 [0x001b, 1B]   The selected assignor.
    |       +-- Members                             []Member           = 1 element                             [0x001c, 65B]  The members.
    |       |   +-- length                          uvarint            = 2 (compact, n+1)                      [0x001c, 1B]   one sample element follows
    |       |   +-- Member[0]                       Member             = struct                                [0x001d, 64B]
    |       |       +-- MemberId                    string             = "" (compact, len+1=1)                 [0x001d, 1B]   The member ID.
    |       |       +-- InstanceId                  string             = "" (compact, len+1=1)                 [0x001e, 1B]   The member instance ID.
    |       |       +-- RackId                      string             = "" (compact, len+1=1)                 [0x001f, 1B]   The member rack ID.
    |       |       +-- MemberEpoch                 int32              = 0                                     [0x0020, 4B]   The current member epoch.
    |       |       +-- ClientId                    string             = "" (compact, len+1=1)                 [0x0024, 1B]   The client ID.
    |       |       +-- ClientHost                  string             = "" (compact, len+1=1)                 [0x0025, 1B]   The client host.
    |       |       +-- SubscribedTopicNames        []string           = 1 element                             [0x0026, 2B]   The subscribed topic names.
    |       |       |   +-- length                  uvarint            = 2 (compact, n+1)                      [0x0026, 1B]   one sample element follows
    |       |       |   +-- string[0]               string             = "" (compact, len+1=1)                 [0x0027, 1B]
    |       |       +-- SubscribedTopicRegex        string             = "" (compact, len+1=1)                 [0x0028, 1B]   the subscribed topic regex otherwise or null of not provided.
    |       |       +-- Assignment                  Assignment         = struct                                [0x0029, 25B]  The current assignment.
    |       |       |   +-- TopicPartitions         []TopicPartitions  = 1 element                             [0x0029, 24B]  The assigned topic-partitions to the member.
    |       |       |   |   +-- length              uvarint            = 2 (compact, n+1)                      [0x0029, 1B]   one sample element follows
    |       |       |   |   +-- TopicPartitions[0]  TopicPartitions    = struct                                [0x002a, 23B]
    |       |       |   |       +-- TopicId         uuid               = 00000000-0000-0000-0000-000000000000  [0x002a, 16B]  The topic ID.
    |       |       |   |       +-- TopicName       string             = "" (compact, len+1=1)                 [0x003a, 1B]   The topic name.
    |       |       |   |       +-- Partitions      []int32            = 1 element                             [0x003b, 5B]   The partitions.
    |       |       |   |       |   +-- length      uvarint            = 2 (compact, n+1)                      [0x003b, 1B]   one sample element follows
    |       |       |   |       |   +-- int32[0]    int32              = 0                                     [0x003c, 4B]
    |       |       |   |       +-- tagged_fields   uvarint            = 0                                     [0x0040, 1B]   number of tagged fields in this struct
    |       |       |   +-- tagged_fields           uvarint            = 0                                     [0x0041, 1B]   number of tagged fields in this struct
    |       |       +-- TargetAssignment            Assignment         = struct                                [0x0042, 25B]  The target assignment.
    |       |       |   +-- TopicPartitions         []TopicPartitions  = 1 element                             [0x0042, 24B]  The assigned topic-partitions to the member.
    |       |       |   |   +-- length              uvarint            = 2 (compact, n+1)                      [0x0042, 1B]   one sample element follows
    |       |       |   |   +-- TopicPartitions[0]  TopicPartitions    = struct                                [0x0043, 23B]
    |       |       |   |       +-- TopicId         uuid               = 00000000-0000-0000-0000-000000000000  [0x0043, 16B]  The topic ID.
    |       |       |   |       +-- TopicName       string             = "" (compact, len+1=1)                 [0x0053, 1B]   The topic name.
    |       |       |   |       +-- Partitions      []int32            = 1 element                             [0x0054, 5B]   The partitions.
    |       |       |   |       |   +-- length      uvarint            = 2 (compact, n+1)                      [0x0054, 1B]   one sample element follows
    |       |       |   |       |   +-- int32[0]    int32              = 0                                     [0x0055, 4B]
    |       |       |   |       +-- tagged_fields   uvarint            = 0                                     [0x0059, 1B]   number of tagged fields in this struct
    |       |       |   +-- tagged_fields           uvarint            = 0                                     [0x005a, 1B]   number of tagged fields in this struct
    |       |       +-- MemberType                  int8               = 0                                     [0x005b, 1B]   -1 for unknown. 0 for classic member. +1 for consumer member.
    |       |       +-- tagged_fields               uvarint            = 0                                     [0x005c, 1B]   number of tagged fields in this struct
    |       +-- AuthorizedOperations                int32              = 0                                     [0x005d, 4B]   32-bit bitfield to represent authorized operations for this group.
    |       +-- tagged_fields                       uvarint            = 0                                     [0x0061, 1B]   number of tagged fields in this struct
    +-- tagged_fields                               uvarint            = 0                                     [0x0062, 1B]   number of tagged fields in this struct

kafka message schema (.json)

{
  "apiKey": 69,
  "type": "response",
  "name": "ConsumerGroupDescribeResponse",
  // Version 1 adds MemberType field (KIP-1099).
  "validVersions": "0-1",
  "flexibleVersions": "0+",
  // Supported errors:
  // - GROUP_AUTHORIZATION_FAILED (version 0+)
  // - NOT_COORDINATOR (version 0+)
  // - COORDINATOR_NOT_AVAILABLE (version 0+)
  // - COORDINATOR_LOAD_IN_PROGRESS (version 0+)
  // - INVALID_REQUEST (version 0+)
  // - INVALID_GROUP_ID (version 0+)
  // - GROUP_ID_NOT_FOUND (version 0+)
  // - TOPIC_AUTHORIZATION_FAILED (version 0+)
  "fields": [
    { "name": "ThrottleTimeMs", "type": "int32", "versions": "0+",
      "about": "The duration in milliseconds for which the request was throttled due to a quota violation, or zero if the request did not violate any quota." },
    { "name": "Groups", "type": "[]DescribedGroup", "versions": "0+",
      "about": "Each described group.",
      "fields": [
        { "name": "ErrorCode", "type": "int16", "versions": "0+",
          "about": "The describe error, or 0 if there was no error." },
        { "name": "ErrorMessage", "type": "string", "versions": "0+", "nullableVersions": "0+", "default": "null",
          "about": "The top-level error message, or null if there was no error." },
        { "name": "GroupId", "type": "string", "versions": "0+", "entityType": "groupId",
          "about": "The group ID string." },
        { "name": "GroupState", "type": "string", "versions": "0+",
          "about": "The group state string, or the empty string." },
        { "name": "GroupEpoch", "type": "int32", "versions": "0+",
          "about": "The group epoch." },
        { "name": "AssignmentEpoch", "type": "int32", "versions": "0+",
          "about": "The assignment epoch." },
        { "name": "AssignorName", "type": "string", "versions": "0+",
          "about": "The selected assignor." },
        { "name": "Members", "type": "[]Member", "versions": "0+",
          "about": "The members.",
          "fields": [
            { "name": "MemberId", "type": "string", "versions": "0+",
              "about": "The member ID." },
            { "name": "InstanceId", "type": "string", "versions": "0+", "nullableVersions": "0+", "default": "null",
              "about": "The member instance ID." },
            { "name": "RackId", "type": "string", "versions": "0+", "nullableVersions": "0+", "default": "null",
              "about": "The member rack ID." },
            { "name": "MemberEpoch", "type": "int32", "versions": "0+",
              "about": "The current member epoch." },
            { "name": "ClientId", "type": "string", "versions": "0+",
              "about": "The client ID." },
            { "name": "ClientHost", "type": "string", "versions": "0+",
              "about": "The client host." },
            { "name": "SubscribedTopicNames", "type": "[]string", "versions": "0+", "entityType": "topicName",
              "about": "The subscribed topic names." },
            { "name": "SubscribedTopicRegex", "type": "string", "versions": "0+", "nullableVersions": "0+", "default": "null",
              "about": "the subscribed topic regex otherwise or null of not provided." },
            { "name": "Assignment", "type": "Assignment", "versions": "0+",
              "about": "The current assignment." },
            { "name": "TargetAssignment", "type": "Assignment", "versions": "0+",
              "about": "The target assignment." },
            { "name": "MemberType", "type": "int8", "versions": "1+", "default": "-1", "ignorable": true,
              "about": "-1 for unknown. 0 for classic member. +1 for consumer member." }
          ]},
        { "name": "AuthorizedOperations", "type": "int32", "versions": "0+", "default": "-2147483648",
          "about": "32-bit bitfield to represent authorized operations for this group." }
      ]
    }
  ],
  "commonStructs": [
    { "name": "TopicPartitions", "versions": "0+", "fields": [
      { "name": "TopicId", "type": "uuid", "versions": "0+",
        "about": "The topic ID." },
      { "name": "TopicName", "type": "string", "versions": "0+", "entityType": "topicName",
        "about": "The topic name." },
      { "name": "Partitions", "type": "[]int32", "versions": "0+",
        "about": "The partitions." }
    ]},
    { "name": "Assignment", "versions": "0+", "fields": [
      { "name": "TopicPartitions", "type": "[]TopicPartitions", "versions": "0+",
        "about": "The assigned topic-partitions to the member." }
    ]}
  ]
}