code: def encode_offset_commit_request(cls, client_id, correlation_id,
                                       group, group_generation_id, consumer_id,
                                       payloads):
          
          grouped_payloads = group_by_topic_and_partition(payloads)
  
          message = cls._encode_message_header(
              client_id, correlation_id, KafkaCodec.OFFSET_COMMIT_KEY,
              api_version=1,
          )
  
          message += write_short_ascii(group)
          message += struct.pack('>i', group_generation_id)
          message += write_short_ascii(consumer_id)
          message += struct.pack('>i', len(grouped_payloads))
  
          for topic, topic_payloads in grouped_payloads.items():
              message += write_short_ascii(topic)
              message += struct.pack('>i', len(topic_payloads))
  
              for partition, payload in topic_payloads.items():
                  message += struct.pack('>iqq', partition, payload.offset,
                                         payload.timestamp)
                  message += write_short_bytes(payload.metadata)
  
          return message
docs: Encode some OffsetCommitRequest structs (v1)
  
          :param bytes client_id: string
          :param int correlation_id: int
          :param str group: the consumer group to which you are committing offsets
          :param int group_generation_id: int32, generation ID of the group
          :param str consumer_id: string, Identifier for the consumer
          :param list payloads: list of :class:`OffsetCommitRequest`