kafka_protocol/
messages.rs

1//! Messages used by the Kafka protocol.
2//!
3//! These messages are generated programmatically. See the [Kafka's protocol documentation](https://kafka.apache.org/protocol.html) for more information about a given message type.
4// WARNING: the items of this module are generated and should not be edited directly.
5
6#[cfg(feature = "messages_enums")]
7#[cfg(any(feature = "client", feature = "broker"))]
8use crate::protocol::Decodable;
9#[cfg(feature = "messages_enums")]
10#[cfg(any(feature = "client", feature = "broker"))]
11use crate::protocol::Encodable;
12#[cfg(all(feature = "client", feature = "broker"))]
13use crate::protocol::Request;
14use crate::protocol::VersionRange;
15use crate::protocol::{HeaderVersion, NewType, StrBytes};
16#[cfg(feature = "messages_enums")]
17#[cfg(any(feature = "client", feature = "broker"))]
18use anyhow::Context;
19use anyhow::Result;
20use std::convert::TryFrom;
21
22pub mod consumer_protocol_assignment;
23pub use consumer_protocol_assignment::ConsumerProtocolAssignment;
24
25pub mod consumer_protocol_subscription;
26pub use consumer_protocol_subscription::ConsumerProtocolSubscription;
27
28pub mod default_principal_data;
29pub use default_principal_data::DefaultPrincipalData;
30
31pub mod end_txn_marker;
32pub use end_txn_marker::EndTxnMarker;
33
34pub mod k_raft_version_record;
35pub use k_raft_version_record::KRaftVersionRecord;
36
37pub mod leader_change_message;
38pub use leader_change_message::LeaderChangeMessage;
39
40pub mod request_header;
41pub use request_header::RequestHeader;
42
43pub mod response_header;
44pub use response_header::ResponseHeader;
45
46pub mod snapshot_footer_record;
47pub use snapshot_footer_record::SnapshotFooterRecord;
48
49pub mod snapshot_header_record;
50pub use snapshot_header_record::SnapshotHeaderRecord;
51
52pub mod voters_record;
53pub use voters_record::VotersRecord;
54
55pub mod produce_request;
56pub use produce_request::ProduceRequest;
57
58pub mod fetch_request;
59pub use fetch_request::FetchRequest;
60
61pub mod list_offsets_request;
62pub use list_offsets_request::ListOffsetsRequest;
63
64pub mod metadata_request;
65pub use metadata_request::MetadataRequest;
66
67pub mod offset_commit_request;
68pub use offset_commit_request::OffsetCommitRequest;
69
70pub mod offset_fetch_request;
71pub use offset_fetch_request::OffsetFetchRequest;
72
73pub mod find_coordinator_request;
74pub use find_coordinator_request::FindCoordinatorRequest;
75
76pub mod join_group_request;
77pub use join_group_request::JoinGroupRequest;
78
79pub mod heartbeat_request;
80pub use heartbeat_request::HeartbeatRequest;
81
82pub mod leave_group_request;
83pub use leave_group_request::LeaveGroupRequest;
84
85pub mod sync_group_request;
86pub use sync_group_request::SyncGroupRequest;
87
88pub mod describe_groups_request;
89pub use describe_groups_request::DescribeGroupsRequest;
90
91pub mod list_groups_request;
92pub use list_groups_request::ListGroupsRequest;
93
94pub mod sasl_handshake_request;
95pub use sasl_handshake_request::SaslHandshakeRequest;
96
97pub mod api_versions_request;
98pub use api_versions_request::ApiVersionsRequest;
99
100pub mod create_topics_request;
101pub use create_topics_request::CreateTopicsRequest;
102
103pub mod delete_topics_request;
104pub use delete_topics_request::DeleteTopicsRequest;
105
106pub mod delete_records_request;
107pub use delete_records_request::DeleteRecordsRequest;
108
109pub mod init_producer_id_request;
110pub use init_producer_id_request::InitProducerIdRequest;
111
112pub mod offset_for_leader_epoch_request;
113pub use offset_for_leader_epoch_request::OffsetForLeaderEpochRequest;
114
115pub mod add_partitions_to_txn_request;
116pub use add_partitions_to_txn_request::AddPartitionsToTxnRequest;
117
118pub mod add_offsets_to_txn_request;
119pub use add_offsets_to_txn_request::AddOffsetsToTxnRequest;
120
121pub mod end_txn_request;
122pub use end_txn_request::EndTxnRequest;
123
124pub mod write_txn_markers_request;
125pub use write_txn_markers_request::WriteTxnMarkersRequest;
126
127pub mod txn_offset_commit_request;
128pub use txn_offset_commit_request::TxnOffsetCommitRequest;
129
130pub mod describe_acls_request;
131pub use describe_acls_request::DescribeAclsRequest;
132
133pub mod create_acls_request;
134pub use create_acls_request::CreateAclsRequest;
135
136pub mod delete_acls_request;
137pub use delete_acls_request::DeleteAclsRequest;
138
139pub mod describe_configs_request;
140pub use describe_configs_request::DescribeConfigsRequest;
141
142pub mod alter_configs_request;
143pub use alter_configs_request::AlterConfigsRequest;
144
145pub mod alter_replica_log_dirs_request;
146pub use alter_replica_log_dirs_request::AlterReplicaLogDirsRequest;
147
148pub mod describe_log_dirs_request;
149pub use describe_log_dirs_request::DescribeLogDirsRequest;
150
151pub mod sasl_authenticate_request;
152pub use sasl_authenticate_request::SaslAuthenticateRequest;
153
154pub mod create_partitions_request;
155pub use create_partitions_request::CreatePartitionsRequest;
156
157pub mod create_delegation_token_request;
158pub use create_delegation_token_request::CreateDelegationTokenRequest;
159
160pub mod renew_delegation_token_request;
161pub use renew_delegation_token_request::RenewDelegationTokenRequest;
162
163pub mod expire_delegation_token_request;
164pub use expire_delegation_token_request::ExpireDelegationTokenRequest;
165
166pub mod describe_delegation_token_request;
167pub use describe_delegation_token_request::DescribeDelegationTokenRequest;
168
169pub mod delete_groups_request;
170pub use delete_groups_request::DeleteGroupsRequest;
171
172pub mod elect_leaders_request;
173pub use elect_leaders_request::ElectLeadersRequest;
174
175pub mod incremental_alter_configs_request;
176pub use incremental_alter_configs_request::IncrementalAlterConfigsRequest;
177
178pub mod alter_partition_reassignments_request;
179pub use alter_partition_reassignments_request::AlterPartitionReassignmentsRequest;
180
181pub mod list_partition_reassignments_request;
182pub use list_partition_reassignments_request::ListPartitionReassignmentsRequest;
183
184pub mod offset_delete_request;
185pub use offset_delete_request::OffsetDeleteRequest;
186
187pub mod describe_client_quotas_request;
188pub use describe_client_quotas_request::DescribeClientQuotasRequest;
189
190pub mod alter_client_quotas_request;
191pub use alter_client_quotas_request::AlterClientQuotasRequest;
192
193pub mod describe_user_scram_credentials_request;
194pub use describe_user_scram_credentials_request::DescribeUserScramCredentialsRequest;
195
196pub mod alter_user_scram_credentials_request;
197pub use alter_user_scram_credentials_request::AlterUserScramCredentialsRequest;
198
199pub mod vote_request;
200pub use vote_request::VoteRequest;
201
202pub mod begin_quorum_epoch_request;
203pub use begin_quorum_epoch_request::BeginQuorumEpochRequest;
204
205pub mod end_quorum_epoch_request;
206pub use end_quorum_epoch_request::EndQuorumEpochRequest;
207
208pub mod describe_quorum_request;
209pub use describe_quorum_request::DescribeQuorumRequest;
210
211pub mod alter_partition_request;
212pub use alter_partition_request::AlterPartitionRequest;
213
214pub mod update_features_request;
215pub use update_features_request::UpdateFeaturesRequest;
216
217pub mod envelope_request;
218pub use envelope_request::EnvelopeRequest;
219
220pub mod fetch_snapshot_request;
221pub use fetch_snapshot_request::FetchSnapshotRequest;
222
223pub mod describe_cluster_request;
224pub use describe_cluster_request::DescribeClusterRequest;
225
226pub mod describe_producers_request;
227pub use describe_producers_request::DescribeProducersRequest;
228
229pub mod broker_registration_request;
230pub use broker_registration_request::BrokerRegistrationRequest;
231
232pub mod broker_heartbeat_request;
233pub use broker_heartbeat_request::BrokerHeartbeatRequest;
234
235pub mod unregister_broker_request;
236pub use unregister_broker_request::UnregisterBrokerRequest;
237
238pub mod describe_transactions_request;
239pub use describe_transactions_request::DescribeTransactionsRequest;
240
241pub mod list_transactions_request;
242pub use list_transactions_request::ListTransactionsRequest;
243
244pub mod allocate_producer_ids_request;
245pub use allocate_producer_ids_request::AllocateProducerIdsRequest;
246
247pub mod consumer_group_heartbeat_request;
248pub use consumer_group_heartbeat_request::ConsumerGroupHeartbeatRequest;
249
250pub mod consumer_group_describe_request;
251pub use consumer_group_describe_request::ConsumerGroupDescribeRequest;
252
253pub mod controller_registration_request;
254pub use controller_registration_request::ControllerRegistrationRequest;
255
256pub mod get_telemetry_subscriptions_request;
257pub use get_telemetry_subscriptions_request::GetTelemetrySubscriptionsRequest;
258
259pub mod push_telemetry_request;
260pub use push_telemetry_request::PushTelemetryRequest;
261
262pub mod assign_replicas_to_dirs_request;
263pub use assign_replicas_to_dirs_request::AssignReplicasToDirsRequest;
264
265pub mod list_config_resources_request;
266pub use list_config_resources_request::ListConfigResourcesRequest;
267
268pub mod describe_topic_partitions_request;
269pub use describe_topic_partitions_request::DescribeTopicPartitionsRequest;
270
271pub mod share_group_heartbeat_request;
272pub use share_group_heartbeat_request::ShareGroupHeartbeatRequest;
273
274pub mod share_group_describe_request;
275pub use share_group_describe_request::ShareGroupDescribeRequest;
276
277pub mod share_fetch_request;
278pub use share_fetch_request::ShareFetchRequest;
279
280pub mod share_acknowledge_request;
281pub use share_acknowledge_request::ShareAcknowledgeRequest;
282
283pub mod add_raft_voter_request;
284pub use add_raft_voter_request::AddRaftVoterRequest;
285
286pub mod remove_raft_voter_request;
287pub use remove_raft_voter_request::RemoveRaftVoterRequest;
288
289pub mod update_raft_voter_request;
290pub use update_raft_voter_request::UpdateRaftVoterRequest;
291
292pub mod initialize_share_group_state_request;
293pub use initialize_share_group_state_request::InitializeShareGroupStateRequest;
294
295pub mod read_share_group_state_request;
296pub use read_share_group_state_request::ReadShareGroupStateRequest;
297
298pub mod write_share_group_state_request;
299pub use write_share_group_state_request::WriteShareGroupStateRequest;
300
301pub mod delete_share_group_state_request;
302pub use delete_share_group_state_request::DeleteShareGroupStateRequest;
303
304pub mod read_share_group_state_summary_request;
305pub use read_share_group_state_summary_request::ReadShareGroupStateSummaryRequest;
306
307pub mod describe_share_group_offsets_request;
308pub use describe_share_group_offsets_request::DescribeShareGroupOffsetsRequest;
309
310pub mod alter_share_group_offsets_request;
311pub use alter_share_group_offsets_request::AlterShareGroupOffsetsRequest;
312
313pub mod delete_share_group_offsets_request;
314pub use delete_share_group_offsets_request::DeleteShareGroupOffsetsRequest;
315
316pub mod produce_response;
317pub use produce_response::ProduceResponse;
318
319pub mod fetch_response;
320pub use fetch_response::FetchResponse;
321
322pub mod list_offsets_response;
323pub use list_offsets_response::ListOffsetsResponse;
324
325pub mod metadata_response;
326pub use metadata_response::MetadataResponse;
327
328pub mod offset_commit_response;
329pub use offset_commit_response::OffsetCommitResponse;
330
331pub mod offset_fetch_response;
332pub use offset_fetch_response::OffsetFetchResponse;
333
334pub mod find_coordinator_response;
335pub use find_coordinator_response::FindCoordinatorResponse;
336
337pub mod join_group_response;
338pub use join_group_response::JoinGroupResponse;
339
340pub mod heartbeat_response;
341pub use heartbeat_response::HeartbeatResponse;
342
343pub mod leave_group_response;
344pub use leave_group_response::LeaveGroupResponse;
345
346pub mod sync_group_response;
347pub use sync_group_response::SyncGroupResponse;
348
349pub mod describe_groups_response;
350pub use describe_groups_response::DescribeGroupsResponse;
351
352pub mod list_groups_response;
353pub use list_groups_response::ListGroupsResponse;
354
355pub mod sasl_handshake_response;
356pub use sasl_handshake_response::SaslHandshakeResponse;
357
358pub mod api_versions_response;
359pub use api_versions_response::ApiVersionsResponse;
360
361pub mod create_topics_response;
362pub use create_topics_response::CreateTopicsResponse;
363
364pub mod delete_topics_response;
365pub use delete_topics_response::DeleteTopicsResponse;
366
367pub mod delete_records_response;
368pub use delete_records_response::DeleteRecordsResponse;
369
370pub mod init_producer_id_response;
371pub use init_producer_id_response::InitProducerIdResponse;
372
373pub mod offset_for_leader_epoch_response;
374pub use offset_for_leader_epoch_response::OffsetForLeaderEpochResponse;
375
376pub mod add_partitions_to_txn_response;
377pub use add_partitions_to_txn_response::AddPartitionsToTxnResponse;
378
379pub mod add_offsets_to_txn_response;
380pub use add_offsets_to_txn_response::AddOffsetsToTxnResponse;
381
382pub mod end_txn_response;
383pub use end_txn_response::EndTxnResponse;
384
385pub mod write_txn_markers_response;
386pub use write_txn_markers_response::WriteTxnMarkersResponse;
387
388pub mod txn_offset_commit_response;
389pub use txn_offset_commit_response::TxnOffsetCommitResponse;
390
391pub mod describe_acls_response;
392pub use describe_acls_response::DescribeAclsResponse;
393
394pub mod create_acls_response;
395pub use create_acls_response::CreateAclsResponse;
396
397pub mod delete_acls_response;
398pub use delete_acls_response::DeleteAclsResponse;
399
400pub mod describe_configs_response;
401pub use describe_configs_response::DescribeConfigsResponse;
402
403pub mod alter_configs_response;
404pub use alter_configs_response::AlterConfigsResponse;
405
406pub mod alter_replica_log_dirs_response;
407pub use alter_replica_log_dirs_response::AlterReplicaLogDirsResponse;
408
409pub mod describe_log_dirs_response;
410pub use describe_log_dirs_response::DescribeLogDirsResponse;
411
412pub mod sasl_authenticate_response;
413pub use sasl_authenticate_response::SaslAuthenticateResponse;
414
415pub mod create_partitions_response;
416pub use create_partitions_response::CreatePartitionsResponse;
417
418pub mod create_delegation_token_response;
419pub use create_delegation_token_response::CreateDelegationTokenResponse;
420
421pub mod renew_delegation_token_response;
422pub use renew_delegation_token_response::RenewDelegationTokenResponse;
423
424pub mod expire_delegation_token_response;
425pub use expire_delegation_token_response::ExpireDelegationTokenResponse;
426
427pub mod describe_delegation_token_response;
428pub use describe_delegation_token_response::DescribeDelegationTokenResponse;
429
430pub mod delete_groups_response;
431pub use delete_groups_response::DeleteGroupsResponse;
432
433pub mod elect_leaders_response;
434pub use elect_leaders_response::ElectLeadersResponse;
435
436pub mod incremental_alter_configs_response;
437pub use incremental_alter_configs_response::IncrementalAlterConfigsResponse;
438
439pub mod alter_partition_reassignments_response;
440pub use alter_partition_reassignments_response::AlterPartitionReassignmentsResponse;
441
442pub mod list_partition_reassignments_response;
443pub use list_partition_reassignments_response::ListPartitionReassignmentsResponse;
444
445pub mod offset_delete_response;
446pub use offset_delete_response::OffsetDeleteResponse;
447
448pub mod describe_client_quotas_response;
449pub use describe_client_quotas_response::DescribeClientQuotasResponse;
450
451pub mod alter_client_quotas_response;
452pub use alter_client_quotas_response::AlterClientQuotasResponse;
453
454pub mod describe_user_scram_credentials_response;
455pub use describe_user_scram_credentials_response::DescribeUserScramCredentialsResponse;
456
457pub mod alter_user_scram_credentials_response;
458pub use alter_user_scram_credentials_response::AlterUserScramCredentialsResponse;
459
460pub mod vote_response;
461pub use vote_response::VoteResponse;
462
463pub mod begin_quorum_epoch_response;
464pub use begin_quorum_epoch_response::BeginQuorumEpochResponse;
465
466pub mod end_quorum_epoch_response;
467pub use end_quorum_epoch_response::EndQuorumEpochResponse;
468
469pub mod describe_quorum_response;
470pub use describe_quorum_response::DescribeQuorumResponse;
471
472pub mod alter_partition_response;
473pub use alter_partition_response::AlterPartitionResponse;
474
475pub mod update_features_response;
476pub use update_features_response::UpdateFeaturesResponse;
477
478pub mod envelope_response;
479pub use envelope_response::EnvelopeResponse;
480
481pub mod fetch_snapshot_response;
482pub use fetch_snapshot_response::FetchSnapshotResponse;
483
484pub mod describe_cluster_response;
485pub use describe_cluster_response::DescribeClusterResponse;
486
487pub mod describe_producers_response;
488pub use describe_producers_response::DescribeProducersResponse;
489
490pub mod broker_registration_response;
491pub use broker_registration_response::BrokerRegistrationResponse;
492
493pub mod broker_heartbeat_response;
494pub use broker_heartbeat_response::BrokerHeartbeatResponse;
495
496pub mod unregister_broker_response;
497pub use unregister_broker_response::UnregisterBrokerResponse;
498
499pub mod describe_transactions_response;
500pub use describe_transactions_response::DescribeTransactionsResponse;
501
502pub mod list_transactions_response;
503pub use list_transactions_response::ListTransactionsResponse;
504
505pub mod allocate_producer_ids_response;
506pub use allocate_producer_ids_response::AllocateProducerIdsResponse;
507
508pub mod consumer_group_heartbeat_response;
509pub use consumer_group_heartbeat_response::ConsumerGroupHeartbeatResponse;
510
511pub mod consumer_group_describe_response;
512pub use consumer_group_describe_response::ConsumerGroupDescribeResponse;
513
514pub mod controller_registration_response;
515pub use controller_registration_response::ControllerRegistrationResponse;
516
517pub mod get_telemetry_subscriptions_response;
518pub use get_telemetry_subscriptions_response::GetTelemetrySubscriptionsResponse;
519
520pub mod push_telemetry_response;
521pub use push_telemetry_response::PushTelemetryResponse;
522
523pub mod assign_replicas_to_dirs_response;
524pub use assign_replicas_to_dirs_response::AssignReplicasToDirsResponse;
525
526pub mod list_config_resources_response;
527pub use list_config_resources_response::ListConfigResourcesResponse;
528
529pub mod describe_topic_partitions_response;
530pub use describe_topic_partitions_response::DescribeTopicPartitionsResponse;
531
532pub mod share_group_heartbeat_response;
533pub use share_group_heartbeat_response::ShareGroupHeartbeatResponse;
534
535pub mod share_group_describe_response;
536pub use share_group_describe_response::ShareGroupDescribeResponse;
537
538pub mod share_fetch_response;
539pub use share_fetch_response::ShareFetchResponse;
540
541pub mod share_acknowledge_response;
542pub use share_acknowledge_response::ShareAcknowledgeResponse;
543
544pub mod add_raft_voter_response;
545pub use add_raft_voter_response::AddRaftVoterResponse;
546
547pub mod remove_raft_voter_response;
548pub use remove_raft_voter_response::RemoveRaftVoterResponse;
549
550pub mod update_raft_voter_response;
551pub use update_raft_voter_response::UpdateRaftVoterResponse;
552
553pub mod initialize_share_group_state_response;
554pub use initialize_share_group_state_response::InitializeShareGroupStateResponse;
555
556pub mod read_share_group_state_response;
557pub use read_share_group_state_response::ReadShareGroupStateResponse;
558
559pub mod write_share_group_state_response;
560pub use write_share_group_state_response::WriteShareGroupStateResponse;
561
562pub mod delete_share_group_state_response;
563pub use delete_share_group_state_response::DeleteShareGroupStateResponse;
564
565pub mod read_share_group_state_summary_response;
566pub use read_share_group_state_summary_response::ReadShareGroupStateSummaryResponse;
567
568pub mod describe_share_group_offsets_response;
569pub use describe_share_group_offsets_response::DescribeShareGroupOffsetsResponse;
570
571pub mod alter_share_group_offsets_response;
572pub use alter_share_group_offsets_response::AlterShareGroupOffsetsResponse;
573
574pub mod delete_share_group_offsets_response;
575pub use delete_share_group_offsets_response::DeleteShareGroupOffsetsResponse;
576
577#[cfg(all(feature = "client", feature = "broker"))]
578impl Request for ProduceRequest {
579    const KEY: i16 = 0;
580    type Response = ProduceResponse;
581}
582
583#[cfg(all(feature = "client", feature = "broker"))]
584impl Request for FetchRequest {
585    const KEY: i16 = 1;
586    type Response = FetchResponse;
587}
588
589#[cfg(all(feature = "client", feature = "broker"))]
590impl Request for ListOffsetsRequest {
591    const KEY: i16 = 2;
592    type Response = ListOffsetsResponse;
593}
594
595#[cfg(all(feature = "client", feature = "broker"))]
596impl Request for MetadataRequest {
597    const KEY: i16 = 3;
598    type Response = MetadataResponse;
599}
600
601#[cfg(all(feature = "client", feature = "broker"))]
602impl Request for OffsetCommitRequest {
603    const KEY: i16 = 8;
604    type Response = OffsetCommitResponse;
605}
606
607#[cfg(all(feature = "client", feature = "broker"))]
608impl Request for OffsetFetchRequest {
609    const KEY: i16 = 9;
610    type Response = OffsetFetchResponse;
611}
612
613#[cfg(all(feature = "client", feature = "broker"))]
614impl Request for FindCoordinatorRequest {
615    const KEY: i16 = 10;
616    type Response = FindCoordinatorResponse;
617}
618
619#[cfg(all(feature = "client", feature = "broker"))]
620impl Request for JoinGroupRequest {
621    const KEY: i16 = 11;
622    type Response = JoinGroupResponse;
623}
624
625#[cfg(all(feature = "client", feature = "broker"))]
626impl Request for HeartbeatRequest {
627    const KEY: i16 = 12;
628    type Response = HeartbeatResponse;
629}
630
631#[cfg(all(feature = "client", feature = "broker"))]
632impl Request for LeaveGroupRequest {
633    const KEY: i16 = 13;
634    type Response = LeaveGroupResponse;
635}
636
637#[cfg(all(feature = "client", feature = "broker"))]
638impl Request for SyncGroupRequest {
639    const KEY: i16 = 14;
640    type Response = SyncGroupResponse;
641}
642
643#[cfg(all(feature = "client", feature = "broker"))]
644impl Request for DescribeGroupsRequest {
645    const KEY: i16 = 15;
646    type Response = DescribeGroupsResponse;
647}
648
649#[cfg(all(feature = "client", feature = "broker"))]
650impl Request for ListGroupsRequest {
651    const KEY: i16 = 16;
652    type Response = ListGroupsResponse;
653}
654
655#[cfg(all(feature = "client", feature = "broker"))]
656impl Request for SaslHandshakeRequest {
657    const KEY: i16 = 17;
658    type Response = SaslHandshakeResponse;
659}
660
661#[cfg(all(feature = "client", feature = "broker"))]
662impl Request for ApiVersionsRequest {
663    const KEY: i16 = 18;
664    type Response = ApiVersionsResponse;
665}
666
667#[cfg(all(feature = "client", feature = "broker"))]
668impl Request for CreateTopicsRequest {
669    const KEY: i16 = 19;
670    type Response = CreateTopicsResponse;
671}
672
673#[cfg(all(feature = "client", feature = "broker"))]
674impl Request for DeleteTopicsRequest {
675    const KEY: i16 = 20;
676    type Response = DeleteTopicsResponse;
677}
678
679#[cfg(all(feature = "client", feature = "broker"))]
680impl Request for DeleteRecordsRequest {
681    const KEY: i16 = 21;
682    type Response = DeleteRecordsResponse;
683}
684
685#[cfg(all(feature = "client", feature = "broker"))]
686impl Request for InitProducerIdRequest {
687    const KEY: i16 = 22;
688    type Response = InitProducerIdResponse;
689}
690
691#[cfg(all(feature = "client", feature = "broker"))]
692impl Request for OffsetForLeaderEpochRequest {
693    const KEY: i16 = 23;
694    type Response = OffsetForLeaderEpochResponse;
695}
696
697#[cfg(all(feature = "client", feature = "broker"))]
698impl Request for AddPartitionsToTxnRequest {
699    const KEY: i16 = 24;
700    type Response = AddPartitionsToTxnResponse;
701}
702
703#[cfg(all(feature = "client", feature = "broker"))]
704impl Request for AddOffsetsToTxnRequest {
705    const KEY: i16 = 25;
706    type Response = AddOffsetsToTxnResponse;
707}
708
709#[cfg(all(feature = "client", feature = "broker"))]
710impl Request for EndTxnRequest {
711    const KEY: i16 = 26;
712    type Response = EndTxnResponse;
713}
714
715#[cfg(all(feature = "client", feature = "broker"))]
716impl Request for WriteTxnMarkersRequest {
717    const KEY: i16 = 27;
718    type Response = WriteTxnMarkersResponse;
719}
720
721#[cfg(all(feature = "client", feature = "broker"))]
722impl Request for TxnOffsetCommitRequest {
723    const KEY: i16 = 28;
724    type Response = TxnOffsetCommitResponse;
725}
726
727#[cfg(all(feature = "client", feature = "broker"))]
728impl Request for DescribeAclsRequest {
729    const KEY: i16 = 29;
730    type Response = DescribeAclsResponse;
731}
732
733#[cfg(all(feature = "client", feature = "broker"))]
734impl Request for CreateAclsRequest {
735    const KEY: i16 = 30;
736    type Response = CreateAclsResponse;
737}
738
739#[cfg(all(feature = "client", feature = "broker"))]
740impl Request for DeleteAclsRequest {
741    const KEY: i16 = 31;
742    type Response = DeleteAclsResponse;
743}
744
745#[cfg(all(feature = "client", feature = "broker"))]
746impl Request for DescribeConfigsRequest {
747    const KEY: i16 = 32;
748    type Response = DescribeConfigsResponse;
749}
750
751#[cfg(all(feature = "client", feature = "broker"))]
752impl Request for AlterConfigsRequest {
753    const KEY: i16 = 33;
754    type Response = AlterConfigsResponse;
755}
756
757#[cfg(all(feature = "client", feature = "broker"))]
758impl Request for AlterReplicaLogDirsRequest {
759    const KEY: i16 = 34;
760    type Response = AlterReplicaLogDirsResponse;
761}
762
763#[cfg(all(feature = "client", feature = "broker"))]
764impl Request for DescribeLogDirsRequest {
765    const KEY: i16 = 35;
766    type Response = DescribeLogDirsResponse;
767}
768
769#[cfg(all(feature = "client", feature = "broker"))]
770impl Request for SaslAuthenticateRequest {
771    const KEY: i16 = 36;
772    type Response = SaslAuthenticateResponse;
773}
774
775#[cfg(all(feature = "client", feature = "broker"))]
776impl Request for CreatePartitionsRequest {
777    const KEY: i16 = 37;
778    type Response = CreatePartitionsResponse;
779}
780
781#[cfg(all(feature = "client", feature = "broker"))]
782impl Request for CreateDelegationTokenRequest {
783    const KEY: i16 = 38;
784    type Response = CreateDelegationTokenResponse;
785}
786
787#[cfg(all(feature = "client", feature = "broker"))]
788impl Request for RenewDelegationTokenRequest {
789    const KEY: i16 = 39;
790    type Response = RenewDelegationTokenResponse;
791}
792
793#[cfg(all(feature = "client", feature = "broker"))]
794impl Request for ExpireDelegationTokenRequest {
795    const KEY: i16 = 40;
796    type Response = ExpireDelegationTokenResponse;
797}
798
799#[cfg(all(feature = "client", feature = "broker"))]
800impl Request for DescribeDelegationTokenRequest {
801    const KEY: i16 = 41;
802    type Response = DescribeDelegationTokenResponse;
803}
804
805#[cfg(all(feature = "client", feature = "broker"))]
806impl Request for DeleteGroupsRequest {
807    const KEY: i16 = 42;
808    type Response = DeleteGroupsResponse;
809}
810
811#[cfg(all(feature = "client", feature = "broker"))]
812impl Request for ElectLeadersRequest {
813    const KEY: i16 = 43;
814    type Response = ElectLeadersResponse;
815}
816
817#[cfg(all(feature = "client", feature = "broker"))]
818impl Request for IncrementalAlterConfigsRequest {
819    const KEY: i16 = 44;
820    type Response = IncrementalAlterConfigsResponse;
821}
822
823#[cfg(all(feature = "client", feature = "broker"))]
824impl Request for AlterPartitionReassignmentsRequest {
825    const KEY: i16 = 45;
826    type Response = AlterPartitionReassignmentsResponse;
827}
828
829#[cfg(all(feature = "client", feature = "broker"))]
830impl Request for ListPartitionReassignmentsRequest {
831    const KEY: i16 = 46;
832    type Response = ListPartitionReassignmentsResponse;
833}
834
835#[cfg(all(feature = "client", feature = "broker"))]
836impl Request for OffsetDeleteRequest {
837    const KEY: i16 = 47;
838    type Response = OffsetDeleteResponse;
839}
840
841#[cfg(all(feature = "client", feature = "broker"))]
842impl Request for DescribeClientQuotasRequest {
843    const KEY: i16 = 48;
844    type Response = DescribeClientQuotasResponse;
845}
846
847#[cfg(all(feature = "client", feature = "broker"))]
848impl Request for AlterClientQuotasRequest {
849    const KEY: i16 = 49;
850    type Response = AlterClientQuotasResponse;
851}
852
853#[cfg(all(feature = "client", feature = "broker"))]
854impl Request for DescribeUserScramCredentialsRequest {
855    const KEY: i16 = 50;
856    type Response = DescribeUserScramCredentialsResponse;
857}
858
859#[cfg(all(feature = "client", feature = "broker"))]
860impl Request for AlterUserScramCredentialsRequest {
861    const KEY: i16 = 51;
862    type Response = AlterUserScramCredentialsResponse;
863}
864
865#[cfg(all(feature = "client", feature = "broker"))]
866impl Request for VoteRequest {
867    const KEY: i16 = 52;
868    type Response = VoteResponse;
869}
870
871#[cfg(all(feature = "client", feature = "broker"))]
872impl Request for BeginQuorumEpochRequest {
873    const KEY: i16 = 53;
874    type Response = BeginQuorumEpochResponse;
875}
876
877#[cfg(all(feature = "client", feature = "broker"))]
878impl Request for EndQuorumEpochRequest {
879    const KEY: i16 = 54;
880    type Response = EndQuorumEpochResponse;
881}
882
883#[cfg(all(feature = "client", feature = "broker"))]
884impl Request for DescribeQuorumRequest {
885    const KEY: i16 = 55;
886    type Response = DescribeQuorumResponse;
887}
888
889#[cfg(all(feature = "client", feature = "broker"))]
890impl Request for AlterPartitionRequest {
891    const KEY: i16 = 56;
892    type Response = AlterPartitionResponse;
893}
894
895#[cfg(all(feature = "client", feature = "broker"))]
896impl Request for UpdateFeaturesRequest {
897    const KEY: i16 = 57;
898    type Response = UpdateFeaturesResponse;
899}
900
901#[cfg(all(feature = "client", feature = "broker"))]
902impl Request for EnvelopeRequest {
903    const KEY: i16 = 58;
904    type Response = EnvelopeResponse;
905}
906
907#[cfg(all(feature = "client", feature = "broker"))]
908impl Request for FetchSnapshotRequest {
909    const KEY: i16 = 59;
910    type Response = FetchSnapshotResponse;
911}
912
913#[cfg(all(feature = "client", feature = "broker"))]
914impl Request for DescribeClusterRequest {
915    const KEY: i16 = 60;
916    type Response = DescribeClusterResponse;
917}
918
919#[cfg(all(feature = "client", feature = "broker"))]
920impl Request for DescribeProducersRequest {
921    const KEY: i16 = 61;
922    type Response = DescribeProducersResponse;
923}
924
925#[cfg(all(feature = "client", feature = "broker"))]
926impl Request for BrokerRegistrationRequest {
927    const KEY: i16 = 62;
928    type Response = BrokerRegistrationResponse;
929}
930
931#[cfg(all(feature = "client", feature = "broker"))]
932impl Request for BrokerHeartbeatRequest {
933    const KEY: i16 = 63;
934    type Response = BrokerHeartbeatResponse;
935}
936
937#[cfg(all(feature = "client", feature = "broker"))]
938impl Request for UnregisterBrokerRequest {
939    const KEY: i16 = 64;
940    type Response = UnregisterBrokerResponse;
941}
942
943#[cfg(all(feature = "client", feature = "broker"))]
944impl Request for DescribeTransactionsRequest {
945    const KEY: i16 = 65;
946    type Response = DescribeTransactionsResponse;
947}
948
949#[cfg(all(feature = "client", feature = "broker"))]
950impl Request for ListTransactionsRequest {
951    const KEY: i16 = 66;
952    type Response = ListTransactionsResponse;
953}
954
955#[cfg(all(feature = "client", feature = "broker"))]
956impl Request for AllocateProducerIdsRequest {
957    const KEY: i16 = 67;
958    type Response = AllocateProducerIdsResponse;
959}
960
961#[cfg(all(feature = "client", feature = "broker"))]
962impl Request for ConsumerGroupHeartbeatRequest {
963    const KEY: i16 = 68;
964    type Response = ConsumerGroupHeartbeatResponse;
965}
966
967#[cfg(all(feature = "client", feature = "broker"))]
968impl Request for ConsumerGroupDescribeRequest {
969    const KEY: i16 = 69;
970    type Response = ConsumerGroupDescribeResponse;
971}
972
973#[cfg(all(feature = "client", feature = "broker"))]
974impl Request for ControllerRegistrationRequest {
975    const KEY: i16 = 70;
976    type Response = ControllerRegistrationResponse;
977}
978
979#[cfg(all(feature = "client", feature = "broker"))]
980impl Request for GetTelemetrySubscriptionsRequest {
981    const KEY: i16 = 71;
982    type Response = GetTelemetrySubscriptionsResponse;
983}
984
985#[cfg(all(feature = "client", feature = "broker"))]
986impl Request for PushTelemetryRequest {
987    const KEY: i16 = 72;
988    type Response = PushTelemetryResponse;
989}
990
991#[cfg(all(feature = "client", feature = "broker"))]
992impl Request for AssignReplicasToDirsRequest {
993    const KEY: i16 = 73;
994    type Response = AssignReplicasToDirsResponse;
995}
996
997#[cfg(all(feature = "client", feature = "broker"))]
998impl Request for ListConfigResourcesRequest {
999    const KEY: i16 = 74;
1000    type Response = ListConfigResourcesResponse;
1001}
1002
1003#[cfg(all(feature = "client", feature = "broker"))]
1004impl Request for DescribeTopicPartitionsRequest {
1005    const KEY: i16 = 75;
1006    type Response = DescribeTopicPartitionsResponse;
1007}
1008
1009#[cfg(all(feature = "client", feature = "broker"))]
1010impl Request for ShareGroupHeartbeatRequest {
1011    const KEY: i16 = 76;
1012    type Response = ShareGroupHeartbeatResponse;
1013}
1014
1015#[cfg(all(feature = "client", feature = "broker"))]
1016impl Request for ShareGroupDescribeRequest {
1017    const KEY: i16 = 77;
1018    type Response = ShareGroupDescribeResponse;
1019}
1020
1021#[cfg(all(feature = "client", feature = "broker"))]
1022impl Request for ShareFetchRequest {
1023    const KEY: i16 = 78;
1024    type Response = ShareFetchResponse;
1025}
1026
1027#[cfg(all(feature = "client", feature = "broker"))]
1028impl Request for ShareAcknowledgeRequest {
1029    const KEY: i16 = 79;
1030    type Response = ShareAcknowledgeResponse;
1031}
1032
1033#[cfg(all(feature = "client", feature = "broker"))]
1034impl Request for AddRaftVoterRequest {
1035    const KEY: i16 = 80;
1036    type Response = AddRaftVoterResponse;
1037}
1038
1039#[cfg(all(feature = "client", feature = "broker"))]
1040impl Request for RemoveRaftVoterRequest {
1041    const KEY: i16 = 81;
1042    type Response = RemoveRaftVoterResponse;
1043}
1044
1045#[cfg(all(feature = "client", feature = "broker"))]
1046impl Request for UpdateRaftVoterRequest {
1047    const KEY: i16 = 82;
1048    type Response = UpdateRaftVoterResponse;
1049}
1050
1051#[cfg(all(feature = "client", feature = "broker"))]
1052impl Request for InitializeShareGroupStateRequest {
1053    const KEY: i16 = 83;
1054    type Response = InitializeShareGroupStateResponse;
1055}
1056
1057#[cfg(all(feature = "client", feature = "broker"))]
1058impl Request for ReadShareGroupStateRequest {
1059    const KEY: i16 = 84;
1060    type Response = ReadShareGroupStateResponse;
1061}
1062
1063#[cfg(all(feature = "client", feature = "broker"))]
1064impl Request for WriteShareGroupStateRequest {
1065    const KEY: i16 = 85;
1066    type Response = WriteShareGroupStateResponse;
1067}
1068
1069#[cfg(all(feature = "client", feature = "broker"))]
1070impl Request for DeleteShareGroupStateRequest {
1071    const KEY: i16 = 86;
1072    type Response = DeleteShareGroupStateResponse;
1073}
1074
1075#[cfg(all(feature = "client", feature = "broker"))]
1076impl Request for ReadShareGroupStateSummaryRequest {
1077    const KEY: i16 = 87;
1078    type Response = ReadShareGroupStateSummaryResponse;
1079}
1080
1081#[cfg(all(feature = "client", feature = "broker"))]
1082impl Request for DescribeShareGroupOffsetsRequest {
1083    const KEY: i16 = 90;
1084    type Response = DescribeShareGroupOffsetsResponse;
1085}
1086
1087#[cfg(all(feature = "client", feature = "broker"))]
1088impl Request for AlterShareGroupOffsetsRequest {
1089    const KEY: i16 = 91;
1090    type Response = AlterShareGroupOffsetsResponse;
1091}
1092
1093#[cfg(all(feature = "client", feature = "broker"))]
1094impl Request for DeleteShareGroupOffsetsRequest {
1095    const KEY: i16 = 92;
1096    type Response = DeleteShareGroupOffsetsResponse;
1097}
1098
1099/// Valid API keys in the Kafka protocol.
1100#[derive(Debug, Clone, Copy, PartialEq, Eq)]
1101pub enum ApiKey {
1102    /// API key for request ProduceRequest
1103    Produce = 0,
1104    /// API key for request FetchRequest
1105    Fetch = 1,
1106    /// API key for request ListOffsetsRequest
1107    ListOffsets = 2,
1108    /// API key for request MetadataRequest
1109    Metadata = 3,
1110    /// API key for request OffsetCommitRequest
1111    OffsetCommit = 8,
1112    /// API key for request OffsetFetchRequest
1113    OffsetFetch = 9,
1114    /// API key for request FindCoordinatorRequest
1115    FindCoordinator = 10,
1116    /// API key for request JoinGroupRequest
1117    JoinGroup = 11,
1118    /// API key for request HeartbeatRequest
1119    Heartbeat = 12,
1120    /// API key for request LeaveGroupRequest
1121    LeaveGroup = 13,
1122    /// API key for request SyncGroupRequest
1123    SyncGroup = 14,
1124    /// API key for request DescribeGroupsRequest
1125    DescribeGroups = 15,
1126    /// API key for request ListGroupsRequest
1127    ListGroups = 16,
1128    /// API key for request SaslHandshakeRequest
1129    SaslHandshake = 17,
1130    /// API key for request ApiVersionsRequest
1131    ApiVersions = 18,
1132    /// API key for request CreateTopicsRequest
1133    CreateTopics = 19,
1134    /// API key for request DeleteTopicsRequest
1135    DeleteTopics = 20,
1136    /// API key for request DeleteRecordsRequest
1137    DeleteRecords = 21,
1138    /// API key for request InitProducerIdRequest
1139    InitProducerId = 22,
1140    /// API key for request OffsetForLeaderEpochRequest
1141    OffsetForLeaderEpoch = 23,
1142    /// API key for request AddPartitionsToTxnRequest
1143    AddPartitionsToTxn = 24,
1144    /// API key for request AddOffsetsToTxnRequest
1145    AddOffsetsToTxn = 25,
1146    /// API key for request EndTxnRequest
1147    EndTxn = 26,
1148    /// API key for request WriteTxnMarkersRequest
1149    WriteTxnMarkers = 27,
1150    /// API key for request TxnOffsetCommitRequest
1151    TxnOffsetCommit = 28,
1152    /// API key for request DescribeAclsRequest
1153    DescribeAcls = 29,
1154    /// API key for request CreateAclsRequest
1155    CreateAcls = 30,
1156    /// API key for request DeleteAclsRequest
1157    DeleteAcls = 31,
1158    /// API key for request DescribeConfigsRequest
1159    DescribeConfigs = 32,
1160    /// API key for request AlterConfigsRequest
1161    AlterConfigs = 33,
1162    /// API key for request AlterReplicaLogDirsRequest
1163    AlterReplicaLogDirs = 34,
1164    /// API key for request DescribeLogDirsRequest
1165    DescribeLogDirs = 35,
1166    /// API key for request SaslAuthenticateRequest
1167    SaslAuthenticate = 36,
1168    /// API key for request CreatePartitionsRequest
1169    CreatePartitions = 37,
1170    /// API key for request CreateDelegationTokenRequest
1171    CreateDelegationToken = 38,
1172    /// API key for request RenewDelegationTokenRequest
1173    RenewDelegationToken = 39,
1174    /// API key for request ExpireDelegationTokenRequest
1175    ExpireDelegationToken = 40,
1176    /// API key for request DescribeDelegationTokenRequest
1177    DescribeDelegationToken = 41,
1178    /// API key for request DeleteGroupsRequest
1179    DeleteGroups = 42,
1180    /// API key for request ElectLeadersRequest
1181    ElectLeaders = 43,
1182    /// API key for request IncrementalAlterConfigsRequest
1183    IncrementalAlterConfigs = 44,
1184    /// API key for request AlterPartitionReassignmentsRequest
1185    AlterPartitionReassignments = 45,
1186    /// API key for request ListPartitionReassignmentsRequest
1187    ListPartitionReassignments = 46,
1188    /// API key for request OffsetDeleteRequest
1189    OffsetDelete = 47,
1190    /// API key for request DescribeClientQuotasRequest
1191    DescribeClientQuotas = 48,
1192    /// API key for request AlterClientQuotasRequest
1193    AlterClientQuotas = 49,
1194    /// API key for request DescribeUserScramCredentialsRequest
1195    DescribeUserScramCredentials = 50,
1196    /// API key for request AlterUserScramCredentialsRequest
1197    AlterUserScramCredentials = 51,
1198    /// API key for request VoteRequest
1199    Vote = 52,
1200    /// API key for request BeginQuorumEpochRequest
1201    BeginQuorumEpoch = 53,
1202    /// API key for request EndQuorumEpochRequest
1203    EndQuorumEpoch = 54,
1204    /// API key for request DescribeQuorumRequest
1205    DescribeQuorum = 55,
1206    /// API key for request AlterPartitionRequest
1207    AlterPartition = 56,
1208    /// API key for request UpdateFeaturesRequest
1209    UpdateFeatures = 57,
1210    /// API key for request EnvelopeRequest
1211    Envelope = 58,
1212    /// API key for request FetchSnapshotRequest
1213    FetchSnapshot = 59,
1214    /// API key for request DescribeClusterRequest
1215    DescribeCluster = 60,
1216    /// API key for request DescribeProducersRequest
1217    DescribeProducers = 61,
1218    /// API key for request BrokerRegistrationRequest
1219    BrokerRegistration = 62,
1220    /// API key for request BrokerHeartbeatRequest
1221    BrokerHeartbeat = 63,
1222    /// API key for request UnregisterBrokerRequest
1223    UnregisterBroker = 64,
1224    /// API key for request DescribeTransactionsRequest
1225    DescribeTransactions = 65,
1226    /// API key for request ListTransactionsRequest
1227    ListTransactions = 66,
1228    /// API key for request AllocateProducerIdsRequest
1229    AllocateProducerIds = 67,
1230    /// API key for request ConsumerGroupHeartbeatRequest
1231    ConsumerGroupHeartbeat = 68,
1232    /// API key for request ConsumerGroupDescribeRequest
1233    ConsumerGroupDescribe = 69,
1234    /// API key for request ControllerRegistrationRequest
1235    ControllerRegistration = 70,
1236    /// API key for request GetTelemetrySubscriptionsRequest
1237    GetTelemetrySubscriptions = 71,
1238    /// API key for request PushTelemetryRequest
1239    PushTelemetry = 72,
1240    /// API key for request AssignReplicasToDirsRequest
1241    AssignReplicasToDirs = 73,
1242    /// API key for request ListConfigResourcesRequest
1243    ListConfigResources = 74,
1244    /// API key for request DescribeTopicPartitionsRequest
1245    DescribeTopicPartitions = 75,
1246    /// API key for request ShareGroupHeartbeatRequest
1247    ShareGroupHeartbeat = 76,
1248    /// API key for request ShareGroupDescribeRequest
1249    ShareGroupDescribe = 77,
1250    /// API key for request ShareFetchRequest
1251    ShareFetch = 78,
1252    /// API key for request ShareAcknowledgeRequest
1253    ShareAcknowledge = 79,
1254    /// API key for request AddRaftVoterRequest
1255    AddRaftVoter = 80,
1256    /// API key for request RemoveRaftVoterRequest
1257    RemoveRaftVoter = 81,
1258    /// API key for request UpdateRaftVoterRequest
1259    UpdateRaftVoter = 82,
1260    /// API key for request InitializeShareGroupStateRequest
1261    InitializeShareGroupState = 83,
1262    /// API key for request ReadShareGroupStateRequest
1263    ReadShareGroupState = 84,
1264    /// API key for request WriteShareGroupStateRequest
1265    WriteShareGroupState = 85,
1266    /// API key for request DeleteShareGroupStateRequest
1267    DeleteShareGroupState = 86,
1268    /// API key for request ReadShareGroupStateSummaryRequest
1269    ReadShareGroupStateSummary = 87,
1270    /// API key for request DescribeShareGroupOffsetsRequest
1271    DescribeShareGroupOffsets = 90,
1272    /// API key for request AlterShareGroupOffsetsRequest
1273    AlterShareGroupOffsets = 91,
1274    /// API key for request DeleteShareGroupOffsetsRequest
1275    DeleteShareGroupOffsets = 92,
1276}
1277
1278impl ApiKey {
1279    /// Get the version of request header that needs to be prepended to this message
1280    pub fn request_header_version(&self, version: i16) -> i16 {
1281        match self {
1282            ApiKey::Produce => ProduceRequest::header_version(version),
1283            ApiKey::Fetch => FetchRequest::header_version(version),
1284            ApiKey::ListOffsets => ListOffsetsRequest::header_version(version),
1285            ApiKey::Metadata => MetadataRequest::header_version(version),
1286            ApiKey::OffsetCommit => OffsetCommitRequest::header_version(version),
1287            ApiKey::OffsetFetch => OffsetFetchRequest::header_version(version),
1288            ApiKey::FindCoordinator => FindCoordinatorRequest::header_version(version),
1289            ApiKey::JoinGroup => JoinGroupRequest::header_version(version),
1290            ApiKey::Heartbeat => HeartbeatRequest::header_version(version),
1291            ApiKey::LeaveGroup => LeaveGroupRequest::header_version(version),
1292            ApiKey::SyncGroup => SyncGroupRequest::header_version(version),
1293            ApiKey::DescribeGroups => DescribeGroupsRequest::header_version(version),
1294            ApiKey::ListGroups => ListGroupsRequest::header_version(version),
1295            ApiKey::SaslHandshake => SaslHandshakeRequest::header_version(version),
1296            ApiKey::ApiVersions => ApiVersionsRequest::header_version(version),
1297            ApiKey::CreateTopics => CreateTopicsRequest::header_version(version),
1298            ApiKey::DeleteTopics => DeleteTopicsRequest::header_version(version),
1299            ApiKey::DeleteRecords => DeleteRecordsRequest::header_version(version),
1300            ApiKey::InitProducerId => InitProducerIdRequest::header_version(version),
1301            ApiKey::OffsetForLeaderEpoch => OffsetForLeaderEpochRequest::header_version(version),
1302            ApiKey::AddPartitionsToTxn => AddPartitionsToTxnRequest::header_version(version),
1303            ApiKey::AddOffsetsToTxn => AddOffsetsToTxnRequest::header_version(version),
1304            ApiKey::EndTxn => EndTxnRequest::header_version(version),
1305            ApiKey::WriteTxnMarkers => WriteTxnMarkersRequest::header_version(version),
1306            ApiKey::TxnOffsetCommit => TxnOffsetCommitRequest::header_version(version),
1307            ApiKey::DescribeAcls => DescribeAclsRequest::header_version(version),
1308            ApiKey::CreateAcls => CreateAclsRequest::header_version(version),
1309            ApiKey::DeleteAcls => DeleteAclsRequest::header_version(version),
1310            ApiKey::DescribeConfigs => DescribeConfigsRequest::header_version(version),
1311            ApiKey::AlterConfigs => AlterConfigsRequest::header_version(version),
1312            ApiKey::AlterReplicaLogDirs => AlterReplicaLogDirsRequest::header_version(version),
1313            ApiKey::DescribeLogDirs => DescribeLogDirsRequest::header_version(version),
1314            ApiKey::SaslAuthenticate => SaslAuthenticateRequest::header_version(version),
1315            ApiKey::CreatePartitions => CreatePartitionsRequest::header_version(version),
1316            ApiKey::CreateDelegationToken => CreateDelegationTokenRequest::header_version(version),
1317            ApiKey::RenewDelegationToken => RenewDelegationTokenRequest::header_version(version),
1318            ApiKey::ExpireDelegationToken => ExpireDelegationTokenRequest::header_version(version),
1319            ApiKey::DescribeDelegationToken => {
1320                DescribeDelegationTokenRequest::header_version(version)
1321            }
1322            ApiKey::DeleteGroups => DeleteGroupsRequest::header_version(version),
1323            ApiKey::ElectLeaders => ElectLeadersRequest::header_version(version),
1324            ApiKey::IncrementalAlterConfigs => {
1325                IncrementalAlterConfigsRequest::header_version(version)
1326            }
1327            ApiKey::AlterPartitionReassignments => {
1328                AlterPartitionReassignmentsRequest::header_version(version)
1329            }
1330            ApiKey::ListPartitionReassignments => {
1331                ListPartitionReassignmentsRequest::header_version(version)
1332            }
1333            ApiKey::OffsetDelete => OffsetDeleteRequest::header_version(version),
1334            ApiKey::DescribeClientQuotas => DescribeClientQuotasRequest::header_version(version),
1335            ApiKey::AlterClientQuotas => AlterClientQuotasRequest::header_version(version),
1336            ApiKey::DescribeUserScramCredentials => {
1337                DescribeUserScramCredentialsRequest::header_version(version)
1338            }
1339            ApiKey::AlterUserScramCredentials => {
1340                AlterUserScramCredentialsRequest::header_version(version)
1341            }
1342            ApiKey::Vote => VoteRequest::header_version(version),
1343            ApiKey::BeginQuorumEpoch => BeginQuorumEpochRequest::header_version(version),
1344            ApiKey::EndQuorumEpoch => EndQuorumEpochRequest::header_version(version),
1345            ApiKey::DescribeQuorum => DescribeQuorumRequest::header_version(version),
1346            ApiKey::AlterPartition => AlterPartitionRequest::header_version(version),
1347            ApiKey::UpdateFeatures => UpdateFeaturesRequest::header_version(version),
1348            ApiKey::Envelope => EnvelopeRequest::header_version(version),
1349            ApiKey::FetchSnapshot => FetchSnapshotRequest::header_version(version),
1350            ApiKey::DescribeCluster => DescribeClusterRequest::header_version(version),
1351            ApiKey::DescribeProducers => DescribeProducersRequest::header_version(version),
1352            ApiKey::BrokerRegistration => BrokerRegistrationRequest::header_version(version),
1353            ApiKey::BrokerHeartbeat => BrokerHeartbeatRequest::header_version(version),
1354            ApiKey::UnregisterBroker => UnregisterBrokerRequest::header_version(version),
1355            ApiKey::DescribeTransactions => DescribeTransactionsRequest::header_version(version),
1356            ApiKey::ListTransactions => ListTransactionsRequest::header_version(version),
1357            ApiKey::AllocateProducerIds => AllocateProducerIdsRequest::header_version(version),
1358            ApiKey::ConsumerGroupHeartbeat => {
1359                ConsumerGroupHeartbeatRequest::header_version(version)
1360            }
1361            ApiKey::ConsumerGroupDescribe => ConsumerGroupDescribeRequest::header_version(version),
1362            ApiKey::ControllerRegistration => {
1363                ControllerRegistrationRequest::header_version(version)
1364            }
1365            ApiKey::GetTelemetrySubscriptions => {
1366                GetTelemetrySubscriptionsRequest::header_version(version)
1367            }
1368            ApiKey::PushTelemetry => PushTelemetryRequest::header_version(version),
1369            ApiKey::AssignReplicasToDirs => AssignReplicasToDirsRequest::header_version(version),
1370            ApiKey::ListConfigResources => ListConfigResourcesRequest::header_version(version),
1371            ApiKey::DescribeTopicPartitions => {
1372                DescribeTopicPartitionsRequest::header_version(version)
1373            }
1374            ApiKey::ShareGroupHeartbeat => ShareGroupHeartbeatRequest::header_version(version),
1375            ApiKey::ShareGroupDescribe => ShareGroupDescribeRequest::header_version(version),
1376            ApiKey::ShareFetch => ShareFetchRequest::header_version(version),
1377            ApiKey::ShareAcknowledge => ShareAcknowledgeRequest::header_version(version),
1378            ApiKey::AddRaftVoter => AddRaftVoterRequest::header_version(version),
1379            ApiKey::RemoveRaftVoter => RemoveRaftVoterRequest::header_version(version),
1380            ApiKey::UpdateRaftVoter => UpdateRaftVoterRequest::header_version(version),
1381            ApiKey::InitializeShareGroupState => {
1382                InitializeShareGroupStateRequest::header_version(version)
1383            }
1384            ApiKey::ReadShareGroupState => ReadShareGroupStateRequest::header_version(version),
1385            ApiKey::WriteShareGroupState => WriteShareGroupStateRequest::header_version(version),
1386            ApiKey::DeleteShareGroupState => DeleteShareGroupStateRequest::header_version(version),
1387            ApiKey::ReadShareGroupStateSummary => {
1388                ReadShareGroupStateSummaryRequest::header_version(version)
1389            }
1390            ApiKey::DescribeShareGroupOffsets => {
1391                DescribeShareGroupOffsetsRequest::header_version(version)
1392            }
1393            ApiKey::AlterShareGroupOffsets => {
1394                AlterShareGroupOffsetsRequest::header_version(version)
1395            }
1396            ApiKey::DeleteShareGroupOffsets => {
1397                DeleteShareGroupOffsetsRequest::header_version(version)
1398            }
1399        }
1400    }
1401    /// Get the version of response header that needs to be prepended to this message
1402    pub fn response_header_version(&self, version: i16) -> i16 {
1403        match self {
1404            ApiKey::Produce => ProduceResponse::header_version(version),
1405            ApiKey::Fetch => FetchResponse::header_version(version),
1406            ApiKey::ListOffsets => ListOffsetsResponse::header_version(version),
1407            ApiKey::Metadata => MetadataResponse::header_version(version),
1408            ApiKey::OffsetCommit => OffsetCommitResponse::header_version(version),
1409            ApiKey::OffsetFetch => OffsetFetchResponse::header_version(version),
1410            ApiKey::FindCoordinator => FindCoordinatorResponse::header_version(version),
1411            ApiKey::JoinGroup => JoinGroupResponse::header_version(version),
1412            ApiKey::Heartbeat => HeartbeatResponse::header_version(version),
1413            ApiKey::LeaveGroup => LeaveGroupResponse::header_version(version),
1414            ApiKey::SyncGroup => SyncGroupResponse::header_version(version),
1415            ApiKey::DescribeGroups => DescribeGroupsResponse::header_version(version),
1416            ApiKey::ListGroups => ListGroupsResponse::header_version(version),
1417            ApiKey::SaslHandshake => SaslHandshakeResponse::header_version(version),
1418            ApiKey::ApiVersions => ApiVersionsResponse::header_version(version),
1419            ApiKey::CreateTopics => CreateTopicsResponse::header_version(version),
1420            ApiKey::DeleteTopics => DeleteTopicsResponse::header_version(version),
1421            ApiKey::DeleteRecords => DeleteRecordsResponse::header_version(version),
1422            ApiKey::InitProducerId => InitProducerIdResponse::header_version(version),
1423            ApiKey::OffsetForLeaderEpoch => OffsetForLeaderEpochResponse::header_version(version),
1424            ApiKey::AddPartitionsToTxn => AddPartitionsToTxnResponse::header_version(version),
1425            ApiKey::AddOffsetsToTxn => AddOffsetsToTxnResponse::header_version(version),
1426            ApiKey::EndTxn => EndTxnResponse::header_version(version),
1427            ApiKey::WriteTxnMarkers => WriteTxnMarkersResponse::header_version(version),
1428            ApiKey::TxnOffsetCommit => TxnOffsetCommitResponse::header_version(version),
1429            ApiKey::DescribeAcls => DescribeAclsResponse::header_version(version),
1430            ApiKey::CreateAcls => CreateAclsResponse::header_version(version),
1431            ApiKey::DeleteAcls => DeleteAclsResponse::header_version(version),
1432            ApiKey::DescribeConfigs => DescribeConfigsResponse::header_version(version),
1433            ApiKey::AlterConfigs => AlterConfigsResponse::header_version(version),
1434            ApiKey::AlterReplicaLogDirs => AlterReplicaLogDirsResponse::header_version(version),
1435            ApiKey::DescribeLogDirs => DescribeLogDirsResponse::header_version(version),
1436            ApiKey::SaslAuthenticate => SaslAuthenticateResponse::header_version(version),
1437            ApiKey::CreatePartitions => CreatePartitionsResponse::header_version(version),
1438            ApiKey::CreateDelegationToken => CreateDelegationTokenResponse::header_version(version),
1439            ApiKey::RenewDelegationToken => RenewDelegationTokenResponse::header_version(version),
1440            ApiKey::ExpireDelegationToken => ExpireDelegationTokenResponse::header_version(version),
1441            ApiKey::DescribeDelegationToken => {
1442                DescribeDelegationTokenResponse::header_version(version)
1443            }
1444            ApiKey::DeleteGroups => DeleteGroupsResponse::header_version(version),
1445            ApiKey::ElectLeaders => ElectLeadersResponse::header_version(version),
1446            ApiKey::IncrementalAlterConfigs => {
1447                IncrementalAlterConfigsResponse::header_version(version)
1448            }
1449            ApiKey::AlterPartitionReassignments => {
1450                AlterPartitionReassignmentsResponse::header_version(version)
1451            }
1452            ApiKey::ListPartitionReassignments => {
1453                ListPartitionReassignmentsResponse::header_version(version)
1454            }
1455            ApiKey::OffsetDelete => OffsetDeleteResponse::header_version(version),
1456            ApiKey::DescribeClientQuotas => DescribeClientQuotasResponse::header_version(version),
1457            ApiKey::AlterClientQuotas => AlterClientQuotasResponse::header_version(version),
1458            ApiKey::DescribeUserScramCredentials => {
1459                DescribeUserScramCredentialsResponse::header_version(version)
1460            }
1461            ApiKey::AlterUserScramCredentials => {
1462                AlterUserScramCredentialsResponse::header_version(version)
1463            }
1464            ApiKey::Vote => VoteResponse::header_version(version),
1465            ApiKey::BeginQuorumEpoch => BeginQuorumEpochResponse::header_version(version),
1466            ApiKey::EndQuorumEpoch => EndQuorumEpochResponse::header_version(version),
1467            ApiKey::DescribeQuorum => DescribeQuorumResponse::header_version(version),
1468            ApiKey::AlterPartition => AlterPartitionResponse::header_version(version),
1469            ApiKey::UpdateFeatures => UpdateFeaturesResponse::header_version(version),
1470            ApiKey::Envelope => EnvelopeResponse::header_version(version),
1471            ApiKey::FetchSnapshot => FetchSnapshotResponse::header_version(version),
1472            ApiKey::DescribeCluster => DescribeClusterResponse::header_version(version),
1473            ApiKey::DescribeProducers => DescribeProducersResponse::header_version(version),
1474            ApiKey::BrokerRegistration => BrokerRegistrationResponse::header_version(version),
1475            ApiKey::BrokerHeartbeat => BrokerHeartbeatResponse::header_version(version),
1476            ApiKey::UnregisterBroker => UnregisterBrokerResponse::header_version(version),
1477            ApiKey::DescribeTransactions => DescribeTransactionsResponse::header_version(version),
1478            ApiKey::ListTransactions => ListTransactionsResponse::header_version(version),
1479            ApiKey::AllocateProducerIds => AllocateProducerIdsResponse::header_version(version),
1480            ApiKey::ConsumerGroupHeartbeat => {
1481                ConsumerGroupHeartbeatResponse::header_version(version)
1482            }
1483            ApiKey::ConsumerGroupDescribe => ConsumerGroupDescribeResponse::header_version(version),
1484            ApiKey::ControllerRegistration => {
1485                ControllerRegistrationResponse::header_version(version)
1486            }
1487            ApiKey::GetTelemetrySubscriptions => {
1488                GetTelemetrySubscriptionsResponse::header_version(version)
1489            }
1490            ApiKey::PushTelemetry => PushTelemetryResponse::header_version(version),
1491            ApiKey::AssignReplicasToDirs => AssignReplicasToDirsResponse::header_version(version),
1492            ApiKey::ListConfigResources => ListConfigResourcesResponse::header_version(version),
1493            ApiKey::DescribeTopicPartitions => {
1494                DescribeTopicPartitionsResponse::header_version(version)
1495            }
1496            ApiKey::ShareGroupHeartbeat => ShareGroupHeartbeatResponse::header_version(version),
1497            ApiKey::ShareGroupDescribe => ShareGroupDescribeResponse::header_version(version),
1498            ApiKey::ShareFetch => ShareFetchResponse::header_version(version),
1499            ApiKey::ShareAcknowledge => ShareAcknowledgeResponse::header_version(version),
1500            ApiKey::AddRaftVoter => AddRaftVoterResponse::header_version(version),
1501            ApiKey::RemoveRaftVoter => RemoveRaftVoterResponse::header_version(version),
1502            ApiKey::UpdateRaftVoter => UpdateRaftVoterResponse::header_version(version),
1503            ApiKey::InitializeShareGroupState => {
1504                InitializeShareGroupStateResponse::header_version(version)
1505            }
1506            ApiKey::ReadShareGroupState => ReadShareGroupStateResponse::header_version(version),
1507            ApiKey::WriteShareGroupState => WriteShareGroupStateResponse::header_version(version),
1508            ApiKey::DeleteShareGroupState => DeleteShareGroupStateResponse::header_version(version),
1509            ApiKey::ReadShareGroupStateSummary => {
1510                ReadShareGroupStateSummaryResponse::header_version(version)
1511            }
1512            ApiKey::DescribeShareGroupOffsets => {
1513                DescribeShareGroupOffsetsResponse::header_version(version)
1514            }
1515            ApiKey::AlterShareGroupOffsets => {
1516                AlterShareGroupOffsetsResponse::header_version(version)
1517            }
1518            ApiKey::DeleteShareGroupOffsets => {
1519                DeleteShareGroupOffsetsResponse::header_version(version)
1520            }
1521        }
1522    }
1523    /// Returns the valid versions that can be used with this ApiKey
1524    pub fn valid_versions(&self) -> VersionRange {
1525        match self {
1526            ApiKey::Produce => VersionRange { min: 3, max: 13 },
1527            ApiKey::Fetch => VersionRange { min: 4, max: 18 },
1528            ApiKey::ListOffsets => VersionRange { min: 1, max: 10 },
1529            ApiKey::Metadata => VersionRange { min: 0, max: 13 },
1530            ApiKey::OffsetCommit => VersionRange { min: 2, max: 10 },
1531            ApiKey::OffsetFetch => VersionRange { min: 1, max: 10 },
1532            ApiKey::FindCoordinator => VersionRange { min: 0, max: 6 },
1533            ApiKey::JoinGroup => VersionRange { min: 0, max: 9 },
1534            ApiKey::Heartbeat => VersionRange { min: 0, max: 4 },
1535            ApiKey::LeaveGroup => VersionRange { min: 0, max: 5 },
1536            ApiKey::SyncGroup => VersionRange { min: 0, max: 5 },
1537            ApiKey::DescribeGroups => VersionRange { min: 0, max: 6 },
1538            ApiKey::ListGroups => VersionRange { min: 0, max: 5 },
1539            ApiKey::SaslHandshake => VersionRange { min: 0, max: 1 },
1540            ApiKey::ApiVersions => VersionRange { min: 0, max: 4 },
1541            ApiKey::CreateTopics => VersionRange { min: 2, max: 7 },
1542            ApiKey::DeleteTopics => VersionRange { min: 1, max: 6 },
1543            ApiKey::DeleteRecords => VersionRange { min: 0, max: 2 },
1544            ApiKey::InitProducerId => VersionRange { min: 0, max: 6 },
1545            ApiKey::OffsetForLeaderEpoch => VersionRange { min: 2, max: 4 },
1546            ApiKey::AddPartitionsToTxn => VersionRange { min: 0, max: 5 },
1547            ApiKey::AddOffsetsToTxn => VersionRange { min: 0, max: 4 },
1548            ApiKey::EndTxn => VersionRange { min: 0, max: 5 },
1549            ApiKey::WriteTxnMarkers => VersionRange { min: 1, max: 1 },
1550            ApiKey::TxnOffsetCommit => VersionRange { min: 0, max: 5 },
1551            ApiKey::DescribeAcls => VersionRange { min: 1, max: 3 },
1552            ApiKey::CreateAcls => VersionRange { min: 1, max: 3 },
1553            ApiKey::DeleteAcls => VersionRange { min: 1, max: 3 },
1554            ApiKey::DescribeConfigs => VersionRange { min: 1, max: 4 },
1555            ApiKey::AlterConfigs => VersionRange { min: 0, max: 2 },
1556            ApiKey::AlterReplicaLogDirs => VersionRange { min: 1, max: 2 },
1557            ApiKey::DescribeLogDirs => VersionRange { min: 1, max: 4 },
1558            ApiKey::SaslAuthenticate => VersionRange { min: 0, max: 2 },
1559            ApiKey::CreatePartitions => VersionRange { min: 0, max: 3 },
1560            ApiKey::CreateDelegationToken => VersionRange { min: 1, max: 3 },
1561            ApiKey::RenewDelegationToken => VersionRange { min: 1, max: 2 },
1562            ApiKey::ExpireDelegationToken => VersionRange { min: 1, max: 2 },
1563            ApiKey::DescribeDelegationToken => VersionRange { min: 1, max: 3 },
1564            ApiKey::DeleteGroups => VersionRange { min: 0, max: 2 },
1565            ApiKey::ElectLeaders => VersionRange { min: 0, max: 2 },
1566            ApiKey::IncrementalAlterConfigs => VersionRange { min: 0, max: 1 },
1567            ApiKey::AlterPartitionReassignments => VersionRange { min: 0, max: 1 },
1568            ApiKey::ListPartitionReassignments => VersionRange { min: 0, max: 0 },
1569            ApiKey::OffsetDelete => VersionRange { min: 0, max: 0 },
1570            ApiKey::DescribeClientQuotas => VersionRange { min: 0, max: 1 },
1571            ApiKey::AlterClientQuotas => VersionRange { min: 0, max: 1 },
1572            ApiKey::DescribeUserScramCredentials => VersionRange { min: 0, max: 0 },
1573            ApiKey::AlterUserScramCredentials => VersionRange { min: 0, max: 0 },
1574            ApiKey::Vote => VersionRange { min: 0, max: 2 },
1575            ApiKey::BeginQuorumEpoch => VersionRange { min: 0, max: 1 },
1576            ApiKey::EndQuorumEpoch => VersionRange { min: 0, max: 1 },
1577            ApiKey::DescribeQuorum => VersionRange { min: 0, max: 2 },
1578            ApiKey::AlterPartition => VersionRange { min: 2, max: 3 },
1579            ApiKey::UpdateFeatures => VersionRange { min: 0, max: 2 },
1580            ApiKey::Envelope => VersionRange { min: 0, max: 0 },
1581            ApiKey::FetchSnapshot => VersionRange { min: 0, max: 1 },
1582            ApiKey::DescribeCluster => VersionRange { min: 0, max: 2 },
1583            ApiKey::DescribeProducers => VersionRange { min: 0, max: 0 },
1584            ApiKey::BrokerRegistration => VersionRange { min: 0, max: 4 },
1585            ApiKey::BrokerHeartbeat => VersionRange { min: 0, max: 1 },
1586            ApiKey::UnregisterBroker => VersionRange { min: 0, max: 0 },
1587            ApiKey::DescribeTransactions => VersionRange { min: 0, max: 0 },
1588            ApiKey::ListTransactions => VersionRange { min: 0, max: 2 },
1589            ApiKey::AllocateProducerIds => VersionRange { min: 0, max: 0 },
1590            ApiKey::ConsumerGroupHeartbeat => VersionRange { min: 0, max: 1 },
1591            ApiKey::ConsumerGroupDescribe => VersionRange { min: 0, max: 1 },
1592            ApiKey::ControllerRegistration => VersionRange { min: 0, max: 0 },
1593            ApiKey::GetTelemetrySubscriptions => VersionRange { min: 0, max: 0 },
1594            ApiKey::PushTelemetry => VersionRange { min: 0, max: 0 },
1595            ApiKey::AssignReplicasToDirs => VersionRange { min: 0, max: 0 },
1596            ApiKey::ListConfigResources => VersionRange { min: 0, max: 1 },
1597            ApiKey::DescribeTopicPartitions => VersionRange { min: 0, max: 0 },
1598            ApiKey::ShareGroupHeartbeat => VersionRange { min: 1, max: 1 },
1599            ApiKey::ShareGroupDescribe => VersionRange { min: 1, max: 1 },
1600            ApiKey::ShareFetch => VersionRange { min: 1, max: 1 },
1601            ApiKey::ShareAcknowledge => VersionRange { min: 1, max: 1 },
1602            ApiKey::AddRaftVoter => VersionRange { min: 0, max: 0 },
1603            ApiKey::RemoveRaftVoter => VersionRange { min: 0, max: 0 },
1604            ApiKey::UpdateRaftVoter => VersionRange { min: 0, max: 0 },
1605            ApiKey::InitializeShareGroupState => VersionRange { min: 0, max: 0 },
1606            ApiKey::ReadShareGroupState => VersionRange { min: 0, max: 0 },
1607            ApiKey::WriteShareGroupState => VersionRange { min: 0, max: 0 },
1608            ApiKey::DeleteShareGroupState => VersionRange { min: 0, max: 0 },
1609            ApiKey::ReadShareGroupStateSummary => VersionRange { min: 0, max: 0 },
1610            ApiKey::DescribeShareGroupOffsets => VersionRange { min: 0, max: 0 },
1611            ApiKey::AlterShareGroupOffsets => VersionRange { min: 0, max: 0 },
1612            ApiKey::DeleteShareGroupOffsets => VersionRange { min: 0, max: 0 },
1613        }
1614    }
1615
1616    /// Iterate through every ApiKey variant in the order of the internal code.
1617    pub fn iter() -> impl Iterator<Item = ApiKey> {
1618        (0..i16::MAX).map_while(|i| ApiKey::try_from(i).ok())
1619    }
1620}
1621impl TryFrom<i16> for ApiKey {
1622    type Error = ();
1623
1624    fn try_from(v: i16) -> Result<Self, Self::Error> {
1625        match v {
1626            x if x == ApiKey::Produce as i16 => Ok(ApiKey::Produce),
1627            x if x == ApiKey::Fetch as i16 => Ok(ApiKey::Fetch),
1628            x if x == ApiKey::ListOffsets as i16 => Ok(ApiKey::ListOffsets),
1629            x if x == ApiKey::Metadata as i16 => Ok(ApiKey::Metadata),
1630            x if x == ApiKey::OffsetCommit as i16 => Ok(ApiKey::OffsetCommit),
1631            x if x == ApiKey::OffsetFetch as i16 => Ok(ApiKey::OffsetFetch),
1632            x if x == ApiKey::FindCoordinator as i16 => Ok(ApiKey::FindCoordinator),
1633            x if x == ApiKey::JoinGroup as i16 => Ok(ApiKey::JoinGroup),
1634            x if x == ApiKey::Heartbeat as i16 => Ok(ApiKey::Heartbeat),
1635            x if x == ApiKey::LeaveGroup as i16 => Ok(ApiKey::LeaveGroup),
1636            x if x == ApiKey::SyncGroup as i16 => Ok(ApiKey::SyncGroup),
1637            x if x == ApiKey::DescribeGroups as i16 => Ok(ApiKey::DescribeGroups),
1638            x if x == ApiKey::ListGroups as i16 => Ok(ApiKey::ListGroups),
1639            x if x == ApiKey::SaslHandshake as i16 => Ok(ApiKey::SaslHandshake),
1640            x if x == ApiKey::ApiVersions as i16 => Ok(ApiKey::ApiVersions),
1641            x if x == ApiKey::CreateTopics as i16 => Ok(ApiKey::CreateTopics),
1642            x if x == ApiKey::DeleteTopics as i16 => Ok(ApiKey::DeleteTopics),
1643            x if x == ApiKey::DeleteRecords as i16 => Ok(ApiKey::DeleteRecords),
1644            x if x == ApiKey::InitProducerId as i16 => Ok(ApiKey::InitProducerId),
1645            x if x == ApiKey::OffsetForLeaderEpoch as i16 => Ok(ApiKey::OffsetForLeaderEpoch),
1646            x if x == ApiKey::AddPartitionsToTxn as i16 => Ok(ApiKey::AddPartitionsToTxn),
1647            x if x == ApiKey::AddOffsetsToTxn as i16 => Ok(ApiKey::AddOffsetsToTxn),
1648            x if x == ApiKey::EndTxn as i16 => Ok(ApiKey::EndTxn),
1649            x if x == ApiKey::WriteTxnMarkers as i16 => Ok(ApiKey::WriteTxnMarkers),
1650            x if x == ApiKey::TxnOffsetCommit as i16 => Ok(ApiKey::TxnOffsetCommit),
1651            x if x == ApiKey::DescribeAcls as i16 => Ok(ApiKey::DescribeAcls),
1652            x if x == ApiKey::CreateAcls as i16 => Ok(ApiKey::CreateAcls),
1653            x if x == ApiKey::DeleteAcls as i16 => Ok(ApiKey::DeleteAcls),
1654            x if x == ApiKey::DescribeConfigs as i16 => Ok(ApiKey::DescribeConfigs),
1655            x if x == ApiKey::AlterConfigs as i16 => Ok(ApiKey::AlterConfigs),
1656            x if x == ApiKey::AlterReplicaLogDirs as i16 => Ok(ApiKey::AlterReplicaLogDirs),
1657            x if x == ApiKey::DescribeLogDirs as i16 => Ok(ApiKey::DescribeLogDirs),
1658            x if x == ApiKey::SaslAuthenticate as i16 => Ok(ApiKey::SaslAuthenticate),
1659            x if x == ApiKey::CreatePartitions as i16 => Ok(ApiKey::CreatePartitions),
1660            x if x == ApiKey::CreateDelegationToken as i16 => Ok(ApiKey::CreateDelegationToken),
1661            x if x == ApiKey::RenewDelegationToken as i16 => Ok(ApiKey::RenewDelegationToken),
1662            x if x == ApiKey::ExpireDelegationToken as i16 => Ok(ApiKey::ExpireDelegationToken),
1663            x if x == ApiKey::DescribeDelegationToken as i16 => Ok(ApiKey::DescribeDelegationToken),
1664            x if x == ApiKey::DeleteGroups as i16 => Ok(ApiKey::DeleteGroups),
1665            x if x == ApiKey::ElectLeaders as i16 => Ok(ApiKey::ElectLeaders),
1666            x if x == ApiKey::IncrementalAlterConfigs as i16 => Ok(ApiKey::IncrementalAlterConfigs),
1667            x if x == ApiKey::AlterPartitionReassignments as i16 => {
1668                Ok(ApiKey::AlterPartitionReassignments)
1669            }
1670            x if x == ApiKey::ListPartitionReassignments as i16 => {
1671                Ok(ApiKey::ListPartitionReassignments)
1672            }
1673            x if x == ApiKey::OffsetDelete as i16 => Ok(ApiKey::OffsetDelete),
1674            x if x == ApiKey::DescribeClientQuotas as i16 => Ok(ApiKey::DescribeClientQuotas),
1675            x if x == ApiKey::AlterClientQuotas as i16 => Ok(ApiKey::AlterClientQuotas),
1676            x if x == ApiKey::DescribeUserScramCredentials as i16 => {
1677                Ok(ApiKey::DescribeUserScramCredentials)
1678            }
1679            x if x == ApiKey::AlterUserScramCredentials as i16 => {
1680                Ok(ApiKey::AlterUserScramCredentials)
1681            }
1682            x if x == ApiKey::Vote as i16 => Ok(ApiKey::Vote),
1683            x if x == ApiKey::BeginQuorumEpoch as i16 => Ok(ApiKey::BeginQuorumEpoch),
1684            x if x == ApiKey::EndQuorumEpoch as i16 => Ok(ApiKey::EndQuorumEpoch),
1685            x if x == ApiKey::DescribeQuorum as i16 => Ok(ApiKey::DescribeQuorum),
1686            x if x == ApiKey::AlterPartition as i16 => Ok(ApiKey::AlterPartition),
1687            x if x == ApiKey::UpdateFeatures as i16 => Ok(ApiKey::UpdateFeatures),
1688            x if x == ApiKey::Envelope as i16 => Ok(ApiKey::Envelope),
1689            x if x == ApiKey::FetchSnapshot as i16 => Ok(ApiKey::FetchSnapshot),
1690            x if x == ApiKey::DescribeCluster as i16 => Ok(ApiKey::DescribeCluster),
1691            x if x == ApiKey::DescribeProducers as i16 => Ok(ApiKey::DescribeProducers),
1692            x if x == ApiKey::BrokerRegistration as i16 => Ok(ApiKey::BrokerRegistration),
1693            x if x == ApiKey::BrokerHeartbeat as i16 => Ok(ApiKey::BrokerHeartbeat),
1694            x if x == ApiKey::UnregisterBroker as i16 => Ok(ApiKey::UnregisterBroker),
1695            x if x == ApiKey::DescribeTransactions as i16 => Ok(ApiKey::DescribeTransactions),
1696            x if x == ApiKey::ListTransactions as i16 => Ok(ApiKey::ListTransactions),
1697            x if x == ApiKey::AllocateProducerIds as i16 => Ok(ApiKey::AllocateProducerIds),
1698            x if x == ApiKey::ConsumerGroupHeartbeat as i16 => Ok(ApiKey::ConsumerGroupHeartbeat),
1699            x if x == ApiKey::ConsumerGroupDescribe as i16 => Ok(ApiKey::ConsumerGroupDescribe),
1700            x if x == ApiKey::ControllerRegistration as i16 => Ok(ApiKey::ControllerRegistration),
1701            x if x == ApiKey::GetTelemetrySubscriptions as i16 => {
1702                Ok(ApiKey::GetTelemetrySubscriptions)
1703            }
1704            x if x == ApiKey::PushTelemetry as i16 => Ok(ApiKey::PushTelemetry),
1705            x if x == ApiKey::AssignReplicasToDirs as i16 => Ok(ApiKey::AssignReplicasToDirs),
1706            x if x == ApiKey::ListConfigResources as i16 => Ok(ApiKey::ListConfigResources),
1707            x if x == ApiKey::DescribeTopicPartitions as i16 => Ok(ApiKey::DescribeTopicPartitions),
1708            x if x == ApiKey::ShareGroupHeartbeat as i16 => Ok(ApiKey::ShareGroupHeartbeat),
1709            x if x == ApiKey::ShareGroupDescribe as i16 => Ok(ApiKey::ShareGroupDescribe),
1710            x if x == ApiKey::ShareFetch as i16 => Ok(ApiKey::ShareFetch),
1711            x if x == ApiKey::ShareAcknowledge as i16 => Ok(ApiKey::ShareAcknowledge),
1712            x if x == ApiKey::AddRaftVoter as i16 => Ok(ApiKey::AddRaftVoter),
1713            x if x == ApiKey::RemoveRaftVoter as i16 => Ok(ApiKey::RemoveRaftVoter),
1714            x if x == ApiKey::UpdateRaftVoter as i16 => Ok(ApiKey::UpdateRaftVoter),
1715            x if x == ApiKey::InitializeShareGroupState as i16 => {
1716                Ok(ApiKey::InitializeShareGroupState)
1717            }
1718            x if x == ApiKey::ReadShareGroupState as i16 => Ok(ApiKey::ReadShareGroupState),
1719            x if x == ApiKey::WriteShareGroupState as i16 => Ok(ApiKey::WriteShareGroupState),
1720            x if x == ApiKey::DeleteShareGroupState as i16 => Ok(ApiKey::DeleteShareGroupState),
1721            x if x == ApiKey::ReadShareGroupStateSummary as i16 => {
1722                Ok(ApiKey::ReadShareGroupStateSummary)
1723            }
1724            x if x == ApiKey::DescribeShareGroupOffsets as i16 => {
1725                Ok(ApiKey::DescribeShareGroupOffsets)
1726            }
1727            x if x == ApiKey::AlterShareGroupOffsets as i16 => Ok(ApiKey::AlterShareGroupOffsets),
1728            x if x == ApiKey::DeleteShareGroupOffsets as i16 => Ok(ApiKey::DeleteShareGroupOffsets),
1729            _ => Err(()),
1730        }
1731    }
1732}
1733
1734/// Wrapping enum for all requests in the Kafka protocol.
1735#[cfg(feature = "messages_enums")]
1736#[non_exhaustive]
1737#[derive(Debug, Clone, PartialEq)]
1738pub enum RequestKind {
1739    /// ProduceRequest,
1740    Produce(ProduceRequest),
1741    /// FetchRequest,
1742    Fetch(FetchRequest),
1743    /// ListOffsetsRequest,
1744    ListOffsets(ListOffsetsRequest),
1745    /// MetadataRequest,
1746    Metadata(MetadataRequest),
1747    /// OffsetCommitRequest,
1748    OffsetCommit(OffsetCommitRequest),
1749    /// OffsetFetchRequest,
1750    OffsetFetch(OffsetFetchRequest),
1751    /// FindCoordinatorRequest,
1752    FindCoordinator(FindCoordinatorRequest),
1753    /// JoinGroupRequest,
1754    JoinGroup(JoinGroupRequest),
1755    /// HeartbeatRequest,
1756    Heartbeat(HeartbeatRequest),
1757    /// LeaveGroupRequest,
1758    LeaveGroup(LeaveGroupRequest),
1759    /// SyncGroupRequest,
1760    SyncGroup(SyncGroupRequest),
1761    /// DescribeGroupsRequest,
1762    DescribeGroups(DescribeGroupsRequest),
1763    /// ListGroupsRequest,
1764    ListGroups(ListGroupsRequest),
1765    /// SaslHandshakeRequest,
1766    SaslHandshake(SaslHandshakeRequest),
1767    /// ApiVersionsRequest,
1768    ApiVersions(ApiVersionsRequest),
1769    /// CreateTopicsRequest,
1770    CreateTopics(CreateTopicsRequest),
1771    /// DeleteTopicsRequest,
1772    DeleteTopics(DeleteTopicsRequest),
1773    /// DeleteRecordsRequest,
1774    DeleteRecords(DeleteRecordsRequest),
1775    /// InitProducerIdRequest,
1776    InitProducerId(InitProducerIdRequest),
1777    /// OffsetForLeaderEpochRequest,
1778    OffsetForLeaderEpoch(OffsetForLeaderEpochRequest),
1779    /// AddPartitionsToTxnRequest,
1780    AddPartitionsToTxn(AddPartitionsToTxnRequest),
1781    /// AddOffsetsToTxnRequest,
1782    AddOffsetsToTxn(AddOffsetsToTxnRequest),
1783    /// EndTxnRequest,
1784    EndTxn(EndTxnRequest),
1785    /// WriteTxnMarkersRequest,
1786    WriteTxnMarkers(WriteTxnMarkersRequest),
1787    /// TxnOffsetCommitRequest,
1788    TxnOffsetCommit(TxnOffsetCommitRequest),
1789    /// DescribeAclsRequest,
1790    DescribeAcls(DescribeAclsRequest),
1791    /// CreateAclsRequest,
1792    CreateAcls(CreateAclsRequest),
1793    /// DeleteAclsRequest,
1794    DeleteAcls(DeleteAclsRequest),
1795    /// DescribeConfigsRequest,
1796    DescribeConfigs(DescribeConfigsRequest),
1797    /// AlterConfigsRequest,
1798    AlterConfigs(AlterConfigsRequest),
1799    /// AlterReplicaLogDirsRequest,
1800    AlterReplicaLogDirs(AlterReplicaLogDirsRequest),
1801    /// DescribeLogDirsRequest,
1802    DescribeLogDirs(DescribeLogDirsRequest),
1803    /// SaslAuthenticateRequest,
1804    SaslAuthenticate(SaslAuthenticateRequest),
1805    /// CreatePartitionsRequest,
1806    CreatePartitions(CreatePartitionsRequest),
1807    /// CreateDelegationTokenRequest,
1808    CreateDelegationToken(CreateDelegationTokenRequest),
1809    /// RenewDelegationTokenRequest,
1810    RenewDelegationToken(RenewDelegationTokenRequest),
1811    /// ExpireDelegationTokenRequest,
1812    ExpireDelegationToken(ExpireDelegationTokenRequest),
1813    /// DescribeDelegationTokenRequest,
1814    DescribeDelegationToken(DescribeDelegationTokenRequest),
1815    /// DeleteGroupsRequest,
1816    DeleteGroups(DeleteGroupsRequest),
1817    /// ElectLeadersRequest,
1818    ElectLeaders(ElectLeadersRequest),
1819    /// IncrementalAlterConfigsRequest,
1820    IncrementalAlterConfigs(IncrementalAlterConfigsRequest),
1821    /// AlterPartitionReassignmentsRequest,
1822    AlterPartitionReassignments(AlterPartitionReassignmentsRequest),
1823    /// ListPartitionReassignmentsRequest,
1824    ListPartitionReassignments(ListPartitionReassignmentsRequest),
1825    /// OffsetDeleteRequest,
1826    OffsetDelete(OffsetDeleteRequest),
1827    /// DescribeClientQuotasRequest,
1828    DescribeClientQuotas(DescribeClientQuotasRequest),
1829    /// AlterClientQuotasRequest,
1830    AlterClientQuotas(AlterClientQuotasRequest),
1831    /// DescribeUserScramCredentialsRequest,
1832    DescribeUserScramCredentials(DescribeUserScramCredentialsRequest),
1833    /// AlterUserScramCredentialsRequest,
1834    AlterUserScramCredentials(AlterUserScramCredentialsRequest),
1835    /// VoteRequest,
1836    Vote(VoteRequest),
1837    /// BeginQuorumEpochRequest,
1838    BeginQuorumEpoch(BeginQuorumEpochRequest),
1839    /// EndQuorumEpochRequest,
1840    EndQuorumEpoch(EndQuorumEpochRequest),
1841    /// DescribeQuorumRequest,
1842    DescribeQuorum(DescribeQuorumRequest),
1843    /// AlterPartitionRequest,
1844    AlterPartition(AlterPartitionRequest),
1845    /// UpdateFeaturesRequest,
1846    UpdateFeatures(UpdateFeaturesRequest),
1847    /// EnvelopeRequest,
1848    Envelope(EnvelopeRequest),
1849    /// FetchSnapshotRequest,
1850    FetchSnapshot(FetchSnapshotRequest),
1851    /// DescribeClusterRequest,
1852    DescribeCluster(DescribeClusterRequest),
1853    /// DescribeProducersRequest,
1854    DescribeProducers(DescribeProducersRequest),
1855    /// BrokerRegistrationRequest,
1856    BrokerRegistration(BrokerRegistrationRequest),
1857    /// BrokerHeartbeatRequest,
1858    BrokerHeartbeat(BrokerHeartbeatRequest),
1859    /// UnregisterBrokerRequest,
1860    UnregisterBroker(UnregisterBrokerRequest),
1861    /// DescribeTransactionsRequest,
1862    DescribeTransactions(DescribeTransactionsRequest),
1863    /// ListTransactionsRequest,
1864    ListTransactions(ListTransactionsRequest),
1865    /// AllocateProducerIdsRequest,
1866    AllocateProducerIds(AllocateProducerIdsRequest),
1867    /// ConsumerGroupHeartbeatRequest,
1868    ConsumerGroupHeartbeat(ConsumerGroupHeartbeatRequest),
1869    /// ConsumerGroupDescribeRequest,
1870    ConsumerGroupDescribe(ConsumerGroupDescribeRequest),
1871    /// ControllerRegistrationRequest,
1872    ControllerRegistration(ControllerRegistrationRequest),
1873    /// GetTelemetrySubscriptionsRequest,
1874    GetTelemetrySubscriptions(GetTelemetrySubscriptionsRequest),
1875    /// PushTelemetryRequest,
1876    PushTelemetry(PushTelemetryRequest),
1877    /// AssignReplicasToDirsRequest,
1878    AssignReplicasToDirs(AssignReplicasToDirsRequest),
1879    /// ListConfigResourcesRequest,
1880    ListConfigResources(ListConfigResourcesRequest),
1881    /// DescribeTopicPartitionsRequest,
1882    DescribeTopicPartitions(DescribeTopicPartitionsRequest),
1883    /// ShareGroupHeartbeatRequest,
1884    ShareGroupHeartbeat(ShareGroupHeartbeatRequest),
1885    /// ShareGroupDescribeRequest,
1886    ShareGroupDescribe(ShareGroupDescribeRequest),
1887    /// ShareFetchRequest,
1888    ShareFetch(ShareFetchRequest),
1889    /// ShareAcknowledgeRequest,
1890    ShareAcknowledge(ShareAcknowledgeRequest),
1891    /// AddRaftVoterRequest,
1892    AddRaftVoter(AddRaftVoterRequest),
1893    /// RemoveRaftVoterRequest,
1894    RemoveRaftVoter(RemoveRaftVoterRequest),
1895    /// UpdateRaftVoterRequest,
1896    UpdateRaftVoter(UpdateRaftVoterRequest),
1897    /// InitializeShareGroupStateRequest,
1898    InitializeShareGroupState(InitializeShareGroupStateRequest),
1899    /// ReadShareGroupStateRequest,
1900    ReadShareGroupState(ReadShareGroupStateRequest),
1901    /// WriteShareGroupStateRequest,
1902    WriteShareGroupState(WriteShareGroupStateRequest),
1903    /// DeleteShareGroupStateRequest,
1904    DeleteShareGroupState(DeleteShareGroupStateRequest),
1905    /// ReadShareGroupStateSummaryRequest,
1906    ReadShareGroupStateSummary(ReadShareGroupStateSummaryRequest),
1907    /// DescribeShareGroupOffsetsRequest,
1908    DescribeShareGroupOffsets(DescribeShareGroupOffsetsRequest),
1909    /// AlterShareGroupOffsetsRequest,
1910    AlterShareGroupOffsets(AlterShareGroupOffsetsRequest),
1911    /// DeleteShareGroupOffsetsRequest,
1912    DeleteShareGroupOffsets(DeleteShareGroupOffsetsRequest),
1913}
1914
1915#[cfg(feature = "messages_enums")]
1916impl RequestKind {
1917    /// Encode the message into the target buffer
1918    #[cfg(feature = "client")]
1919    pub fn encode(&self, bytes: &mut bytes::BytesMut, version: i16) -> anyhow::Result<()> {
1920        match self {
1921            RequestKind::Produce(x) => encode(x, bytes, version),
1922            RequestKind::Fetch(x) => encode(x, bytes, version),
1923            RequestKind::ListOffsets(x) => encode(x, bytes, version),
1924            RequestKind::Metadata(x) => encode(x, bytes, version),
1925            RequestKind::OffsetCommit(x) => encode(x, bytes, version),
1926            RequestKind::OffsetFetch(x) => encode(x, bytes, version),
1927            RequestKind::FindCoordinator(x) => encode(x, bytes, version),
1928            RequestKind::JoinGroup(x) => encode(x, bytes, version),
1929            RequestKind::Heartbeat(x) => encode(x, bytes, version),
1930            RequestKind::LeaveGroup(x) => encode(x, bytes, version),
1931            RequestKind::SyncGroup(x) => encode(x, bytes, version),
1932            RequestKind::DescribeGroups(x) => encode(x, bytes, version),
1933            RequestKind::ListGroups(x) => encode(x, bytes, version),
1934            RequestKind::SaslHandshake(x) => encode(x, bytes, version),
1935            RequestKind::ApiVersions(x) => encode(x, bytes, version),
1936            RequestKind::CreateTopics(x) => encode(x, bytes, version),
1937            RequestKind::DeleteTopics(x) => encode(x, bytes, version),
1938            RequestKind::DeleteRecords(x) => encode(x, bytes, version),
1939            RequestKind::InitProducerId(x) => encode(x, bytes, version),
1940            RequestKind::OffsetForLeaderEpoch(x) => encode(x, bytes, version),
1941            RequestKind::AddPartitionsToTxn(x) => encode(x, bytes, version),
1942            RequestKind::AddOffsetsToTxn(x) => encode(x, bytes, version),
1943            RequestKind::EndTxn(x) => encode(x, bytes, version),
1944            RequestKind::WriteTxnMarkers(x) => encode(x, bytes, version),
1945            RequestKind::TxnOffsetCommit(x) => encode(x, bytes, version),
1946            RequestKind::DescribeAcls(x) => encode(x, bytes, version),
1947            RequestKind::CreateAcls(x) => encode(x, bytes, version),
1948            RequestKind::DeleteAcls(x) => encode(x, bytes, version),
1949            RequestKind::DescribeConfigs(x) => encode(x, bytes, version),
1950            RequestKind::AlterConfigs(x) => encode(x, bytes, version),
1951            RequestKind::AlterReplicaLogDirs(x) => encode(x, bytes, version),
1952            RequestKind::DescribeLogDirs(x) => encode(x, bytes, version),
1953            RequestKind::SaslAuthenticate(x) => encode(x, bytes, version),
1954            RequestKind::CreatePartitions(x) => encode(x, bytes, version),
1955            RequestKind::CreateDelegationToken(x) => encode(x, bytes, version),
1956            RequestKind::RenewDelegationToken(x) => encode(x, bytes, version),
1957            RequestKind::ExpireDelegationToken(x) => encode(x, bytes, version),
1958            RequestKind::DescribeDelegationToken(x) => encode(x, bytes, version),
1959            RequestKind::DeleteGroups(x) => encode(x, bytes, version),
1960            RequestKind::ElectLeaders(x) => encode(x, bytes, version),
1961            RequestKind::IncrementalAlterConfigs(x) => encode(x, bytes, version),
1962            RequestKind::AlterPartitionReassignments(x) => encode(x, bytes, version),
1963            RequestKind::ListPartitionReassignments(x) => encode(x, bytes, version),
1964            RequestKind::OffsetDelete(x) => encode(x, bytes, version),
1965            RequestKind::DescribeClientQuotas(x) => encode(x, bytes, version),
1966            RequestKind::AlterClientQuotas(x) => encode(x, bytes, version),
1967            RequestKind::DescribeUserScramCredentials(x) => encode(x, bytes, version),
1968            RequestKind::AlterUserScramCredentials(x) => encode(x, bytes, version),
1969            RequestKind::Vote(x) => encode(x, bytes, version),
1970            RequestKind::BeginQuorumEpoch(x) => encode(x, bytes, version),
1971            RequestKind::EndQuorumEpoch(x) => encode(x, bytes, version),
1972            RequestKind::DescribeQuorum(x) => encode(x, bytes, version),
1973            RequestKind::AlterPartition(x) => encode(x, bytes, version),
1974            RequestKind::UpdateFeatures(x) => encode(x, bytes, version),
1975            RequestKind::Envelope(x) => encode(x, bytes, version),
1976            RequestKind::FetchSnapshot(x) => encode(x, bytes, version),
1977            RequestKind::DescribeCluster(x) => encode(x, bytes, version),
1978            RequestKind::DescribeProducers(x) => encode(x, bytes, version),
1979            RequestKind::BrokerRegistration(x) => encode(x, bytes, version),
1980            RequestKind::BrokerHeartbeat(x) => encode(x, bytes, version),
1981            RequestKind::UnregisterBroker(x) => encode(x, bytes, version),
1982            RequestKind::DescribeTransactions(x) => encode(x, bytes, version),
1983            RequestKind::ListTransactions(x) => encode(x, bytes, version),
1984            RequestKind::AllocateProducerIds(x) => encode(x, bytes, version),
1985            RequestKind::ConsumerGroupHeartbeat(x) => encode(x, bytes, version),
1986            RequestKind::ConsumerGroupDescribe(x) => encode(x, bytes, version),
1987            RequestKind::ControllerRegistration(x) => encode(x, bytes, version),
1988            RequestKind::GetTelemetrySubscriptions(x) => encode(x, bytes, version),
1989            RequestKind::PushTelemetry(x) => encode(x, bytes, version),
1990            RequestKind::AssignReplicasToDirs(x) => encode(x, bytes, version),
1991            RequestKind::ListConfigResources(x) => encode(x, bytes, version),
1992            RequestKind::DescribeTopicPartitions(x) => encode(x, bytes, version),
1993            RequestKind::ShareGroupHeartbeat(x) => encode(x, bytes, version),
1994            RequestKind::ShareGroupDescribe(x) => encode(x, bytes, version),
1995            RequestKind::ShareFetch(x) => encode(x, bytes, version),
1996            RequestKind::ShareAcknowledge(x) => encode(x, bytes, version),
1997            RequestKind::AddRaftVoter(x) => encode(x, bytes, version),
1998            RequestKind::RemoveRaftVoter(x) => encode(x, bytes, version),
1999            RequestKind::UpdateRaftVoter(x) => encode(x, bytes, version),
2000            RequestKind::InitializeShareGroupState(x) => encode(x, bytes, version),
2001            RequestKind::ReadShareGroupState(x) => encode(x, bytes, version),
2002            RequestKind::WriteShareGroupState(x) => encode(x, bytes, version),
2003            RequestKind::DeleteShareGroupState(x) => encode(x, bytes, version),
2004            RequestKind::ReadShareGroupStateSummary(x) => encode(x, bytes, version),
2005            RequestKind::DescribeShareGroupOffsets(x) => encode(x, bytes, version),
2006            RequestKind::AlterShareGroupOffsets(x) => encode(x, bytes, version),
2007            RequestKind::DeleteShareGroupOffsets(x) => encode(x, bytes, version),
2008        }
2009    }
2010    /// Decode the message from the provided buffer and version
2011    #[cfg(feature = "broker")]
2012    pub fn decode(
2013        api_key: ApiKey,
2014        bytes: &mut bytes::Bytes,
2015        version: i16,
2016    ) -> anyhow::Result<RequestKind> {
2017        match api_key {
2018            ApiKey::Produce => Ok(RequestKind::Produce(decode(bytes, version)?)),
2019            ApiKey::Fetch => Ok(RequestKind::Fetch(decode(bytes, version)?)),
2020            ApiKey::ListOffsets => Ok(RequestKind::ListOffsets(decode(bytes, version)?)),
2021            ApiKey::Metadata => Ok(RequestKind::Metadata(decode(bytes, version)?)),
2022            ApiKey::OffsetCommit => Ok(RequestKind::OffsetCommit(decode(bytes, version)?)),
2023            ApiKey::OffsetFetch => Ok(RequestKind::OffsetFetch(decode(bytes, version)?)),
2024            ApiKey::FindCoordinator => Ok(RequestKind::FindCoordinator(decode(bytes, version)?)),
2025            ApiKey::JoinGroup => Ok(RequestKind::JoinGroup(decode(bytes, version)?)),
2026            ApiKey::Heartbeat => Ok(RequestKind::Heartbeat(decode(bytes, version)?)),
2027            ApiKey::LeaveGroup => Ok(RequestKind::LeaveGroup(decode(bytes, version)?)),
2028            ApiKey::SyncGroup => Ok(RequestKind::SyncGroup(decode(bytes, version)?)),
2029            ApiKey::DescribeGroups => Ok(RequestKind::DescribeGroups(decode(bytes, version)?)),
2030            ApiKey::ListGroups => Ok(RequestKind::ListGroups(decode(bytes, version)?)),
2031            ApiKey::SaslHandshake => Ok(RequestKind::SaslHandshake(decode(bytes, version)?)),
2032            ApiKey::ApiVersions => Ok(RequestKind::ApiVersions(decode(bytes, version)?)),
2033            ApiKey::CreateTopics => Ok(RequestKind::CreateTopics(decode(bytes, version)?)),
2034            ApiKey::DeleteTopics => Ok(RequestKind::DeleteTopics(decode(bytes, version)?)),
2035            ApiKey::DeleteRecords => Ok(RequestKind::DeleteRecords(decode(bytes, version)?)),
2036            ApiKey::InitProducerId => Ok(RequestKind::InitProducerId(decode(bytes, version)?)),
2037            ApiKey::OffsetForLeaderEpoch => {
2038                Ok(RequestKind::OffsetForLeaderEpoch(decode(bytes, version)?))
2039            }
2040            ApiKey::AddPartitionsToTxn => {
2041                Ok(RequestKind::AddPartitionsToTxn(decode(bytes, version)?))
2042            }
2043            ApiKey::AddOffsetsToTxn => Ok(RequestKind::AddOffsetsToTxn(decode(bytes, version)?)),
2044            ApiKey::EndTxn => Ok(RequestKind::EndTxn(decode(bytes, version)?)),
2045            ApiKey::WriteTxnMarkers => Ok(RequestKind::WriteTxnMarkers(decode(bytes, version)?)),
2046            ApiKey::TxnOffsetCommit => Ok(RequestKind::TxnOffsetCommit(decode(bytes, version)?)),
2047            ApiKey::DescribeAcls => Ok(RequestKind::DescribeAcls(decode(bytes, version)?)),
2048            ApiKey::CreateAcls => Ok(RequestKind::CreateAcls(decode(bytes, version)?)),
2049            ApiKey::DeleteAcls => Ok(RequestKind::DeleteAcls(decode(bytes, version)?)),
2050            ApiKey::DescribeConfigs => Ok(RequestKind::DescribeConfigs(decode(bytes, version)?)),
2051            ApiKey::AlterConfigs => Ok(RequestKind::AlterConfigs(decode(bytes, version)?)),
2052            ApiKey::AlterReplicaLogDirs => {
2053                Ok(RequestKind::AlterReplicaLogDirs(decode(bytes, version)?))
2054            }
2055            ApiKey::DescribeLogDirs => Ok(RequestKind::DescribeLogDirs(decode(bytes, version)?)),
2056            ApiKey::SaslAuthenticate => Ok(RequestKind::SaslAuthenticate(decode(bytes, version)?)),
2057            ApiKey::CreatePartitions => Ok(RequestKind::CreatePartitions(decode(bytes, version)?)),
2058            ApiKey::CreateDelegationToken => {
2059                Ok(RequestKind::CreateDelegationToken(decode(bytes, version)?))
2060            }
2061            ApiKey::RenewDelegationToken => {
2062                Ok(RequestKind::RenewDelegationToken(decode(bytes, version)?))
2063            }
2064            ApiKey::ExpireDelegationToken => {
2065                Ok(RequestKind::ExpireDelegationToken(decode(bytes, version)?))
2066            }
2067            ApiKey::DescribeDelegationToken => Ok(RequestKind::DescribeDelegationToken(decode(
2068                bytes, version,
2069            )?)),
2070            ApiKey::DeleteGroups => Ok(RequestKind::DeleteGroups(decode(bytes, version)?)),
2071            ApiKey::ElectLeaders => Ok(RequestKind::ElectLeaders(decode(bytes, version)?)),
2072            ApiKey::IncrementalAlterConfigs => Ok(RequestKind::IncrementalAlterConfigs(decode(
2073                bytes, version,
2074            )?)),
2075            ApiKey::AlterPartitionReassignments => Ok(RequestKind::AlterPartitionReassignments(
2076                decode(bytes, version)?,
2077            )),
2078            ApiKey::ListPartitionReassignments => Ok(RequestKind::ListPartitionReassignments(
2079                decode(bytes, version)?,
2080            )),
2081            ApiKey::OffsetDelete => Ok(RequestKind::OffsetDelete(decode(bytes, version)?)),
2082            ApiKey::DescribeClientQuotas => {
2083                Ok(RequestKind::DescribeClientQuotas(decode(bytes, version)?))
2084            }
2085            ApiKey::AlterClientQuotas => {
2086                Ok(RequestKind::AlterClientQuotas(decode(bytes, version)?))
2087            }
2088            ApiKey::DescribeUserScramCredentials => Ok(RequestKind::DescribeUserScramCredentials(
2089                decode(bytes, version)?,
2090            )),
2091            ApiKey::AlterUserScramCredentials => Ok(RequestKind::AlterUserScramCredentials(
2092                decode(bytes, version)?,
2093            )),
2094            ApiKey::Vote => Ok(RequestKind::Vote(decode(bytes, version)?)),
2095            ApiKey::BeginQuorumEpoch => Ok(RequestKind::BeginQuorumEpoch(decode(bytes, version)?)),
2096            ApiKey::EndQuorumEpoch => Ok(RequestKind::EndQuorumEpoch(decode(bytes, version)?)),
2097            ApiKey::DescribeQuorum => Ok(RequestKind::DescribeQuorum(decode(bytes, version)?)),
2098            ApiKey::AlterPartition => Ok(RequestKind::AlterPartition(decode(bytes, version)?)),
2099            ApiKey::UpdateFeatures => Ok(RequestKind::UpdateFeatures(decode(bytes, version)?)),
2100            ApiKey::Envelope => Ok(RequestKind::Envelope(decode(bytes, version)?)),
2101            ApiKey::FetchSnapshot => Ok(RequestKind::FetchSnapshot(decode(bytes, version)?)),
2102            ApiKey::DescribeCluster => Ok(RequestKind::DescribeCluster(decode(bytes, version)?)),
2103            ApiKey::DescribeProducers => {
2104                Ok(RequestKind::DescribeProducers(decode(bytes, version)?))
2105            }
2106            ApiKey::BrokerRegistration => {
2107                Ok(RequestKind::BrokerRegistration(decode(bytes, version)?))
2108            }
2109            ApiKey::BrokerHeartbeat => Ok(RequestKind::BrokerHeartbeat(decode(bytes, version)?)),
2110            ApiKey::UnregisterBroker => Ok(RequestKind::UnregisterBroker(decode(bytes, version)?)),
2111            ApiKey::DescribeTransactions => {
2112                Ok(RequestKind::DescribeTransactions(decode(bytes, version)?))
2113            }
2114            ApiKey::ListTransactions => Ok(RequestKind::ListTransactions(decode(bytes, version)?)),
2115            ApiKey::AllocateProducerIds => {
2116                Ok(RequestKind::AllocateProducerIds(decode(bytes, version)?))
2117            }
2118            ApiKey::ConsumerGroupHeartbeat => {
2119                Ok(RequestKind::ConsumerGroupHeartbeat(decode(bytes, version)?))
2120            }
2121            ApiKey::ConsumerGroupDescribe => {
2122                Ok(RequestKind::ConsumerGroupDescribe(decode(bytes, version)?))
2123            }
2124            ApiKey::ControllerRegistration => {
2125                Ok(RequestKind::ControllerRegistration(decode(bytes, version)?))
2126            }
2127            ApiKey::GetTelemetrySubscriptions => Ok(RequestKind::GetTelemetrySubscriptions(
2128                decode(bytes, version)?,
2129            )),
2130            ApiKey::PushTelemetry => Ok(RequestKind::PushTelemetry(decode(bytes, version)?)),
2131            ApiKey::AssignReplicasToDirs => {
2132                Ok(RequestKind::AssignReplicasToDirs(decode(bytes, version)?))
2133            }
2134            ApiKey::ListConfigResources => {
2135                Ok(RequestKind::ListConfigResources(decode(bytes, version)?))
2136            }
2137            ApiKey::DescribeTopicPartitions => Ok(RequestKind::DescribeTopicPartitions(decode(
2138                bytes, version,
2139            )?)),
2140            ApiKey::ShareGroupHeartbeat => {
2141                Ok(RequestKind::ShareGroupHeartbeat(decode(bytes, version)?))
2142            }
2143            ApiKey::ShareGroupDescribe => {
2144                Ok(RequestKind::ShareGroupDescribe(decode(bytes, version)?))
2145            }
2146            ApiKey::ShareFetch => Ok(RequestKind::ShareFetch(decode(bytes, version)?)),
2147            ApiKey::ShareAcknowledge => Ok(RequestKind::ShareAcknowledge(decode(bytes, version)?)),
2148            ApiKey::AddRaftVoter => Ok(RequestKind::AddRaftVoter(decode(bytes, version)?)),
2149            ApiKey::RemoveRaftVoter => Ok(RequestKind::RemoveRaftVoter(decode(bytes, version)?)),
2150            ApiKey::UpdateRaftVoter => Ok(RequestKind::UpdateRaftVoter(decode(bytes, version)?)),
2151            ApiKey::InitializeShareGroupState => Ok(RequestKind::InitializeShareGroupState(
2152                decode(bytes, version)?,
2153            )),
2154            ApiKey::ReadShareGroupState => {
2155                Ok(RequestKind::ReadShareGroupState(decode(bytes, version)?))
2156            }
2157            ApiKey::WriteShareGroupState => {
2158                Ok(RequestKind::WriteShareGroupState(decode(bytes, version)?))
2159            }
2160            ApiKey::DeleteShareGroupState => {
2161                Ok(RequestKind::DeleteShareGroupState(decode(bytes, version)?))
2162            }
2163            ApiKey::ReadShareGroupStateSummary => Ok(RequestKind::ReadShareGroupStateSummary(
2164                decode(bytes, version)?,
2165            )),
2166            ApiKey::DescribeShareGroupOffsets => Ok(RequestKind::DescribeShareGroupOffsets(
2167                decode(bytes, version)?,
2168            )),
2169            ApiKey::AlterShareGroupOffsets => {
2170                Ok(RequestKind::AlterShareGroupOffsets(decode(bytes, version)?))
2171            }
2172            ApiKey::DeleteShareGroupOffsets => Ok(RequestKind::DeleteShareGroupOffsets(decode(
2173                bytes, version,
2174            )?)),
2175        }
2176    }
2177}
2178#[cfg(feature = "messages_enums")]
2179impl From<ProduceRequest> for RequestKind {
2180    fn from(value: ProduceRequest) -> RequestKind {
2181        RequestKind::Produce(value)
2182    }
2183}
2184
2185#[cfg(feature = "messages_enums")]
2186impl From<FetchRequest> for RequestKind {
2187    fn from(value: FetchRequest) -> RequestKind {
2188        RequestKind::Fetch(value)
2189    }
2190}
2191
2192#[cfg(feature = "messages_enums")]
2193impl From<ListOffsetsRequest> for RequestKind {
2194    fn from(value: ListOffsetsRequest) -> RequestKind {
2195        RequestKind::ListOffsets(value)
2196    }
2197}
2198
2199#[cfg(feature = "messages_enums")]
2200impl From<MetadataRequest> for RequestKind {
2201    fn from(value: MetadataRequest) -> RequestKind {
2202        RequestKind::Metadata(value)
2203    }
2204}
2205
2206#[cfg(feature = "messages_enums")]
2207impl From<OffsetCommitRequest> for RequestKind {
2208    fn from(value: OffsetCommitRequest) -> RequestKind {
2209        RequestKind::OffsetCommit(value)
2210    }
2211}
2212
2213#[cfg(feature = "messages_enums")]
2214impl From<OffsetFetchRequest> for RequestKind {
2215    fn from(value: OffsetFetchRequest) -> RequestKind {
2216        RequestKind::OffsetFetch(value)
2217    }
2218}
2219
2220#[cfg(feature = "messages_enums")]
2221impl From<FindCoordinatorRequest> for RequestKind {
2222    fn from(value: FindCoordinatorRequest) -> RequestKind {
2223        RequestKind::FindCoordinator(value)
2224    }
2225}
2226
2227#[cfg(feature = "messages_enums")]
2228impl From<JoinGroupRequest> for RequestKind {
2229    fn from(value: JoinGroupRequest) -> RequestKind {
2230        RequestKind::JoinGroup(value)
2231    }
2232}
2233
2234#[cfg(feature = "messages_enums")]
2235impl From<HeartbeatRequest> for RequestKind {
2236    fn from(value: HeartbeatRequest) -> RequestKind {
2237        RequestKind::Heartbeat(value)
2238    }
2239}
2240
2241#[cfg(feature = "messages_enums")]
2242impl From<LeaveGroupRequest> for RequestKind {
2243    fn from(value: LeaveGroupRequest) -> RequestKind {
2244        RequestKind::LeaveGroup(value)
2245    }
2246}
2247
2248#[cfg(feature = "messages_enums")]
2249impl From<SyncGroupRequest> for RequestKind {
2250    fn from(value: SyncGroupRequest) -> RequestKind {
2251        RequestKind::SyncGroup(value)
2252    }
2253}
2254
2255#[cfg(feature = "messages_enums")]
2256impl From<DescribeGroupsRequest> for RequestKind {
2257    fn from(value: DescribeGroupsRequest) -> RequestKind {
2258        RequestKind::DescribeGroups(value)
2259    }
2260}
2261
2262#[cfg(feature = "messages_enums")]
2263impl From<ListGroupsRequest> for RequestKind {
2264    fn from(value: ListGroupsRequest) -> RequestKind {
2265        RequestKind::ListGroups(value)
2266    }
2267}
2268
2269#[cfg(feature = "messages_enums")]
2270impl From<SaslHandshakeRequest> for RequestKind {
2271    fn from(value: SaslHandshakeRequest) -> RequestKind {
2272        RequestKind::SaslHandshake(value)
2273    }
2274}
2275
2276#[cfg(feature = "messages_enums")]
2277impl From<ApiVersionsRequest> for RequestKind {
2278    fn from(value: ApiVersionsRequest) -> RequestKind {
2279        RequestKind::ApiVersions(value)
2280    }
2281}
2282
2283#[cfg(feature = "messages_enums")]
2284impl From<CreateTopicsRequest> for RequestKind {
2285    fn from(value: CreateTopicsRequest) -> RequestKind {
2286        RequestKind::CreateTopics(value)
2287    }
2288}
2289
2290#[cfg(feature = "messages_enums")]
2291impl From<DeleteTopicsRequest> for RequestKind {
2292    fn from(value: DeleteTopicsRequest) -> RequestKind {
2293        RequestKind::DeleteTopics(value)
2294    }
2295}
2296
2297#[cfg(feature = "messages_enums")]
2298impl From<DeleteRecordsRequest> for RequestKind {
2299    fn from(value: DeleteRecordsRequest) -> RequestKind {
2300        RequestKind::DeleteRecords(value)
2301    }
2302}
2303
2304#[cfg(feature = "messages_enums")]
2305impl From<InitProducerIdRequest> for RequestKind {
2306    fn from(value: InitProducerIdRequest) -> RequestKind {
2307        RequestKind::InitProducerId(value)
2308    }
2309}
2310
2311#[cfg(feature = "messages_enums")]
2312impl From<OffsetForLeaderEpochRequest> for RequestKind {
2313    fn from(value: OffsetForLeaderEpochRequest) -> RequestKind {
2314        RequestKind::OffsetForLeaderEpoch(value)
2315    }
2316}
2317
2318#[cfg(feature = "messages_enums")]
2319impl From<AddPartitionsToTxnRequest> for RequestKind {
2320    fn from(value: AddPartitionsToTxnRequest) -> RequestKind {
2321        RequestKind::AddPartitionsToTxn(value)
2322    }
2323}
2324
2325#[cfg(feature = "messages_enums")]
2326impl From<AddOffsetsToTxnRequest> for RequestKind {
2327    fn from(value: AddOffsetsToTxnRequest) -> RequestKind {
2328        RequestKind::AddOffsetsToTxn(value)
2329    }
2330}
2331
2332#[cfg(feature = "messages_enums")]
2333impl From<EndTxnRequest> for RequestKind {
2334    fn from(value: EndTxnRequest) -> RequestKind {
2335        RequestKind::EndTxn(value)
2336    }
2337}
2338
2339#[cfg(feature = "messages_enums")]
2340impl From<WriteTxnMarkersRequest> for RequestKind {
2341    fn from(value: WriteTxnMarkersRequest) -> RequestKind {
2342        RequestKind::WriteTxnMarkers(value)
2343    }
2344}
2345
2346#[cfg(feature = "messages_enums")]
2347impl From<TxnOffsetCommitRequest> for RequestKind {
2348    fn from(value: TxnOffsetCommitRequest) -> RequestKind {
2349        RequestKind::TxnOffsetCommit(value)
2350    }
2351}
2352
2353#[cfg(feature = "messages_enums")]
2354impl From<DescribeAclsRequest> for RequestKind {
2355    fn from(value: DescribeAclsRequest) -> RequestKind {
2356        RequestKind::DescribeAcls(value)
2357    }
2358}
2359
2360#[cfg(feature = "messages_enums")]
2361impl From<CreateAclsRequest> for RequestKind {
2362    fn from(value: CreateAclsRequest) -> RequestKind {
2363        RequestKind::CreateAcls(value)
2364    }
2365}
2366
2367#[cfg(feature = "messages_enums")]
2368impl From<DeleteAclsRequest> for RequestKind {
2369    fn from(value: DeleteAclsRequest) -> RequestKind {
2370        RequestKind::DeleteAcls(value)
2371    }
2372}
2373
2374#[cfg(feature = "messages_enums")]
2375impl From<DescribeConfigsRequest> for RequestKind {
2376    fn from(value: DescribeConfigsRequest) -> RequestKind {
2377        RequestKind::DescribeConfigs(value)
2378    }
2379}
2380
2381#[cfg(feature = "messages_enums")]
2382impl From<AlterConfigsRequest> for RequestKind {
2383    fn from(value: AlterConfigsRequest) -> RequestKind {
2384        RequestKind::AlterConfigs(value)
2385    }
2386}
2387
2388#[cfg(feature = "messages_enums")]
2389impl From<AlterReplicaLogDirsRequest> for RequestKind {
2390    fn from(value: AlterReplicaLogDirsRequest) -> RequestKind {
2391        RequestKind::AlterReplicaLogDirs(value)
2392    }
2393}
2394
2395#[cfg(feature = "messages_enums")]
2396impl From<DescribeLogDirsRequest> for RequestKind {
2397    fn from(value: DescribeLogDirsRequest) -> RequestKind {
2398        RequestKind::DescribeLogDirs(value)
2399    }
2400}
2401
2402#[cfg(feature = "messages_enums")]
2403impl From<SaslAuthenticateRequest> for RequestKind {
2404    fn from(value: SaslAuthenticateRequest) -> RequestKind {
2405        RequestKind::SaslAuthenticate(value)
2406    }
2407}
2408
2409#[cfg(feature = "messages_enums")]
2410impl From<CreatePartitionsRequest> for RequestKind {
2411    fn from(value: CreatePartitionsRequest) -> RequestKind {
2412        RequestKind::CreatePartitions(value)
2413    }
2414}
2415
2416#[cfg(feature = "messages_enums")]
2417impl From<CreateDelegationTokenRequest> for RequestKind {
2418    fn from(value: CreateDelegationTokenRequest) -> RequestKind {
2419        RequestKind::CreateDelegationToken(value)
2420    }
2421}
2422
2423#[cfg(feature = "messages_enums")]
2424impl From<RenewDelegationTokenRequest> for RequestKind {
2425    fn from(value: RenewDelegationTokenRequest) -> RequestKind {
2426        RequestKind::RenewDelegationToken(value)
2427    }
2428}
2429
2430#[cfg(feature = "messages_enums")]
2431impl From<ExpireDelegationTokenRequest> for RequestKind {
2432    fn from(value: ExpireDelegationTokenRequest) -> RequestKind {
2433        RequestKind::ExpireDelegationToken(value)
2434    }
2435}
2436
2437#[cfg(feature = "messages_enums")]
2438impl From<DescribeDelegationTokenRequest> for RequestKind {
2439    fn from(value: DescribeDelegationTokenRequest) -> RequestKind {
2440        RequestKind::DescribeDelegationToken(value)
2441    }
2442}
2443
2444#[cfg(feature = "messages_enums")]
2445impl From<DeleteGroupsRequest> for RequestKind {
2446    fn from(value: DeleteGroupsRequest) -> RequestKind {
2447        RequestKind::DeleteGroups(value)
2448    }
2449}
2450
2451#[cfg(feature = "messages_enums")]
2452impl From<ElectLeadersRequest> for RequestKind {
2453    fn from(value: ElectLeadersRequest) -> RequestKind {
2454        RequestKind::ElectLeaders(value)
2455    }
2456}
2457
2458#[cfg(feature = "messages_enums")]
2459impl From<IncrementalAlterConfigsRequest> for RequestKind {
2460    fn from(value: IncrementalAlterConfigsRequest) -> RequestKind {
2461        RequestKind::IncrementalAlterConfigs(value)
2462    }
2463}
2464
2465#[cfg(feature = "messages_enums")]
2466impl From<AlterPartitionReassignmentsRequest> for RequestKind {
2467    fn from(value: AlterPartitionReassignmentsRequest) -> RequestKind {
2468        RequestKind::AlterPartitionReassignments(value)
2469    }
2470}
2471
2472#[cfg(feature = "messages_enums")]
2473impl From<ListPartitionReassignmentsRequest> for RequestKind {
2474    fn from(value: ListPartitionReassignmentsRequest) -> RequestKind {
2475        RequestKind::ListPartitionReassignments(value)
2476    }
2477}
2478
2479#[cfg(feature = "messages_enums")]
2480impl From<OffsetDeleteRequest> for RequestKind {
2481    fn from(value: OffsetDeleteRequest) -> RequestKind {
2482        RequestKind::OffsetDelete(value)
2483    }
2484}
2485
2486#[cfg(feature = "messages_enums")]
2487impl From<DescribeClientQuotasRequest> for RequestKind {
2488    fn from(value: DescribeClientQuotasRequest) -> RequestKind {
2489        RequestKind::DescribeClientQuotas(value)
2490    }
2491}
2492
2493#[cfg(feature = "messages_enums")]
2494impl From<AlterClientQuotasRequest> for RequestKind {
2495    fn from(value: AlterClientQuotasRequest) -> RequestKind {
2496        RequestKind::AlterClientQuotas(value)
2497    }
2498}
2499
2500#[cfg(feature = "messages_enums")]
2501impl From<DescribeUserScramCredentialsRequest> for RequestKind {
2502    fn from(value: DescribeUserScramCredentialsRequest) -> RequestKind {
2503        RequestKind::DescribeUserScramCredentials(value)
2504    }
2505}
2506
2507#[cfg(feature = "messages_enums")]
2508impl From<AlterUserScramCredentialsRequest> for RequestKind {
2509    fn from(value: AlterUserScramCredentialsRequest) -> RequestKind {
2510        RequestKind::AlterUserScramCredentials(value)
2511    }
2512}
2513
2514#[cfg(feature = "messages_enums")]
2515impl From<VoteRequest> for RequestKind {
2516    fn from(value: VoteRequest) -> RequestKind {
2517        RequestKind::Vote(value)
2518    }
2519}
2520
2521#[cfg(feature = "messages_enums")]
2522impl From<BeginQuorumEpochRequest> for RequestKind {
2523    fn from(value: BeginQuorumEpochRequest) -> RequestKind {
2524        RequestKind::BeginQuorumEpoch(value)
2525    }
2526}
2527
2528#[cfg(feature = "messages_enums")]
2529impl From<EndQuorumEpochRequest> for RequestKind {
2530    fn from(value: EndQuorumEpochRequest) -> RequestKind {
2531        RequestKind::EndQuorumEpoch(value)
2532    }
2533}
2534
2535#[cfg(feature = "messages_enums")]
2536impl From<DescribeQuorumRequest> for RequestKind {
2537    fn from(value: DescribeQuorumRequest) -> RequestKind {
2538        RequestKind::DescribeQuorum(value)
2539    }
2540}
2541
2542#[cfg(feature = "messages_enums")]
2543impl From<AlterPartitionRequest> for RequestKind {
2544    fn from(value: AlterPartitionRequest) -> RequestKind {
2545        RequestKind::AlterPartition(value)
2546    }
2547}
2548
2549#[cfg(feature = "messages_enums")]
2550impl From<UpdateFeaturesRequest> for RequestKind {
2551    fn from(value: UpdateFeaturesRequest) -> RequestKind {
2552        RequestKind::UpdateFeatures(value)
2553    }
2554}
2555
2556#[cfg(feature = "messages_enums")]
2557impl From<EnvelopeRequest> for RequestKind {
2558    fn from(value: EnvelopeRequest) -> RequestKind {
2559        RequestKind::Envelope(value)
2560    }
2561}
2562
2563#[cfg(feature = "messages_enums")]
2564impl From<FetchSnapshotRequest> for RequestKind {
2565    fn from(value: FetchSnapshotRequest) -> RequestKind {
2566        RequestKind::FetchSnapshot(value)
2567    }
2568}
2569
2570#[cfg(feature = "messages_enums")]
2571impl From<DescribeClusterRequest> for RequestKind {
2572    fn from(value: DescribeClusterRequest) -> RequestKind {
2573        RequestKind::DescribeCluster(value)
2574    }
2575}
2576
2577#[cfg(feature = "messages_enums")]
2578impl From<DescribeProducersRequest> for RequestKind {
2579    fn from(value: DescribeProducersRequest) -> RequestKind {
2580        RequestKind::DescribeProducers(value)
2581    }
2582}
2583
2584#[cfg(feature = "messages_enums")]
2585impl From<BrokerRegistrationRequest> for RequestKind {
2586    fn from(value: BrokerRegistrationRequest) -> RequestKind {
2587        RequestKind::BrokerRegistration(value)
2588    }
2589}
2590
2591#[cfg(feature = "messages_enums")]
2592impl From<BrokerHeartbeatRequest> for RequestKind {
2593    fn from(value: BrokerHeartbeatRequest) -> RequestKind {
2594        RequestKind::BrokerHeartbeat(value)
2595    }
2596}
2597
2598#[cfg(feature = "messages_enums")]
2599impl From<UnregisterBrokerRequest> for RequestKind {
2600    fn from(value: UnregisterBrokerRequest) -> RequestKind {
2601        RequestKind::UnregisterBroker(value)
2602    }
2603}
2604
2605#[cfg(feature = "messages_enums")]
2606impl From<DescribeTransactionsRequest> for RequestKind {
2607    fn from(value: DescribeTransactionsRequest) -> RequestKind {
2608        RequestKind::DescribeTransactions(value)
2609    }
2610}
2611
2612#[cfg(feature = "messages_enums")]
2613impl From<ListTransactionsRequest> for RequestKind {
2614    fn from(value: ListTransactionsRequest) -> RequestKind {
2615        RequestKind::ListTransactions(value)
2616    }
2617}
2618
2619#[cfg(feature = "messages_enums")]
2620impl From<AllocateProducerIdsRequest> for RequestKind {
2621    fn from(value: AllocateProducerIdsRequest) -> RequestKind {
2622        RequestKind::AllocateProducerIds(value)
2623    }
2624}
2625
2626#[cfg(feature = "messages_enums")]
2627impl From<ConsumerGroupHeartbeatRequest> for RequestKind {
2628    fn from(value: ConsumerGroupHeartbeatRequest) -> RequestKind {
2629        RequestKind::ConsumerGroupHeartbeat(value)
2630    }
2631}
2632
2633#[cfg(feature = "messages_enums")]
2634impl From<ConsumerGroupDescribeRequest> for RequestKind {
2635    fn from(value: ConsumerGroupDescribeRequest) -> RequestKind {
2636        RequestKind::ConsumerGroupDescribe(value)
2637    }
2638}
2639
2640#[cfg(feature = "messages_enums")]
2641impl From<ControllerRegistrationRequest> for RequestKind {
2642    fn from(value: ControllerRegistrationRequest) -> RequestKind {
2643        RequestKind::ControllerRegistration(value)
2644    }
2645}
2646
2647#[cfg(feature = "messages_enums")]
2648impl From<GetTelemetrySubscriptionsRequest> for RequestKind {
2649    fn from(value: GetTelemetrySubscriptionsRequest) -> RequestKind {
2650        RequestKind::GetTelemetrySubscriptions(value)
2651    }
2652}
2653
2654#[cfg(feature = "messages_enums")]
2655impl From<PushTelemetryRequest> for RequestKind {
2656    fn from(value: PushTelemetryRequest) -> RequestKind {
2657        RequestKind::PushTelemetry(value)
2658    }
2659}
2660
2661#[cfg(feature = "messages_enums")]
2662impl From<AssignReplicasToDirsRequest> for RequestKind {
2663    fn from(value: AssignReplicasToDirsRequest) -> RequestKind {
2664        RequestKind::AssignReplicasToDirs(value)
2665    }
2666}
2667
2668#[cfg(feature = "messages_enums")]
2669impl From<ListConfigResourcesRequest> for RequestKind {
2670    fn from(value: ListConfigResourcesRequest) -> RequestKind {
2671        RequestKind::ListConfigResources(value)
2672    }
2673}
2674
2675#[cfg(feature = "messages_enums")]
2676impl From<DescribeTopicPartitionsRequest> for RequestKind {
2677    fn from(value: DescribeTopicPartitionsRequest) -> RequestKind {
2678        RequestKind::DescribeTopicPartitions(value)
2679    }
2680}
2681
2682#[cfg(feature = "messages_enums")]
2683impl From<ShareGroupHeartbeatRequest> for RequestKind {
2684    fn from(value: ShareGroupHeartbeatRequest) -> RequestKind {
2685        RequestKind::ShareGroupHeartbeat(value)
2686    }
2687}
2688
2689#[cfg(feature = "messages_enums")]
2690impl From<ShareGroupDescribeRequest> for RequestKind {
2691    fn from(value: ShareGroupDescribeRequest) -> RequestKind {
2692        RequestKind::ShareGroupDescribe(value)
2693    }
2694}
2695
2696#[cfg(feature = "messages_enums")]
2697impl From<ShareFetchRequest> for RequestKind {
2698    fn from(value: ShareFetchRequest) -> RequestKind {
2699        RequestKind::ShareFetch(value)
2700    }
2701}
2702
2703#[cfg(feature = "messages_enums")]
2704impl From<ShareAcknowledgeRequest> for RequestKind {
2705    fn from(value: ShareAcknowledgeRequest) -> RequestKind {
2706        RequestKind::ShareAcknowledge(value)
2707    }
2708}
2709
2710#[cfg(feature = "messages_enums")]
2711impl From<AddRaftVoterRequest> for RequestKind {
2712    fn from(value: AddRaftVoterRequest) -> RequestKind {
2713        RequestKind::AddRaftVoter(value)
2714    }
2715}
2716
2717#[cfg(feature = "messages_enums")]
2718impl From<RemoveRaftVoterRequest> for RequestKind {
2719    fn from(value: RemoveRaftVoterRequest) -> RequestKind {
2720        RequestKind::RemoveRaftVoter(value)
2721    }
2722}
2723
2724#[cfg(feature = "messages_enums")]
2725impl From<UpdateRaftVoterRequest> for RequestKind {
2726    fn from(value: UpdateRaftVoterRequest) -> RequestKind {
2727        RequestKind::UpdateRaftVoter(value)
2728    }
2729}
2730
2731#[cfg(feature = "messages_enums")]
2732impl From<InitializeShareGroupStateRequest> for RequestKind {
2733    fn from(value: InitializeShareGroupStateRequest) -> RequestKind {
2734        RequestKind::InitializeShareGroupState(value)
2735    }
2736}
2737
2738#[cfg(feature = "messages_enums")]
2739impl From<ReadShareGroupStateRequest> for RequestKind {
2740    fn from(value: ReadShareGroupStateRequest) -> RequestKind {
2741        RequestKind::ReadShareGroupState(value)
2742    }
2743}
2744
2745#[cfg(feature = "messages_enums")]
2746impl From<WriteShareGroupStateRequest> for RequestKind {
2747    fn from(value: WriteShareGroupStateRequest) -> RequestKind {
2748        RequestKind::WriteShareGroupState(value)
2749    }
2750}
2751
2752#[cfg(feature = "messages_enums")]
2753impl From<DeleteShareGroupStateRequest> for RequestKind {
2754    fn from(value: DeleteShareGroupStateRequest) -> RequestKind {
2755        RequestKind::DeleteShareGroupState(value)
2756    }
2757}
2758
2759#[cfg(feature = "messages_enums")]
2760impl From<ReadShareGroupStateSummaryRequest> for RequestKind {
2761    fn from(value: ReadShareGroupStateSummaryRequest) -> RequestKind {
2762        RequestKind::ReadShareGroupStateSummary(value)
2763    }
2764}
2765
2766#[cfg(feature = "messages_enums")]
2767impl From<DescribeShareGroupOffsetsRequest> for RequestKind {
2768    fn from(value: DescribeShareGroupOffsetsRequest) -> RequestKind {
2769        RequestKind::DescribeShareGroupOffsets(value)
2770    }
2771}
2772
2773#[cfg(feature = "messages_enums")]
2774impl From<AlterShareGroupOffsetsRequest> for RequestKind {
2775    fn from(value: AlterShareGroupOffsetsRequest) -> RequestKind {
2776        RequestKind::AlterShareGroupOffsets(value)
2777    }
2778}
2779
2780#[cfg(feature = "messages_enums")]
2781impl From<DeleteShareGroupOffsetsRequest> for RequestKind {
2782    fn from(value: DeleteShareGroupOffsetsRequest) -> RequestKind {
2783        RequestKind::DeleteShareGroupOffsets(value)
2784    }
2785}
2786
2787#[cfg(feature = "messages_enums")]
2788#[cfg(any(feature = "client", feature = "broker"))]
2789fn decode<T: Decodable>(bytes: &mut bytes::Bytes, version: i16) -> Result<T> {
2790    T::decode(bytes, version).with_context(|| {
2791        format!(
2792            "Failed to decode {} v{} body",
2793            std::any::type_name::<T>(),
2794            version
2795        )
2796    })
2797}
2798
2799#[cfg(feature = "messages_enums")]
2800#[cfg(any(feature = "client", feature = "broker"))]
2801fn encode<T: Encodable>(encodable: &T, bytes: &mut bytes::BytesMut, version: i16) -> Result<()> {
2802    encodable.encode(bytes, version).with_context(|| {
2803        format!(
2804            "Failed to encode {} v{} body",
2805            std::any::type_name::<T>(),
2806            version
2807        )
2808    })
2809}
2810
2811/// Wrapping enum for all responses in the Kafka protocol.
2812#[non_exhaustive]
2813#[derive(Debug, Clone, PartialEq)]
2814#[cfg(feature = "messages_enums")]
2815pub enum ResponseKind {
2816    /// ProduceResponse,
2817    Produce(ProduceResponse),
2818    /// FetchResponse,
2819    Fetch(FetchResponse),
2820    /// ListOffsetsResponse,
2821    ListOffsets(ListOffsetsResponse),
2822    /// MetadataResponse,
2823    Metadata(MetadataResponse),
2824    /// OffsetCommitResponse,
2825    OffsetCommit(OffsetCommitResponse),
2826    /// OffsetFetchResponse,
2827    OffsetFetch(OffsetFetchResponse),
2828    /// FindCoordinatorResponse,
2829    FindCoordinator(FindCoordinatorResponse),
2830    /// JoinGroupResponse,
2831    JoinGroup(JoinGroupResponse),
2832    /// HeartbeatResponse,
2833    Heartbeat(HeartbeatResponse),
2834    /// LeaveGroupResponse,
2835    LeaveGroup(LeaveGroupResponse),
2836    /// SyncGroupResponse,
2837    SyncGroup(SyncGroupResponse),
2838    /// DescribeGroupsResponse,
2839    DescribeGroups(DescribeGroupsResponse),
2840    /// ListGroupsResponse,
2841    ListGroups(ListGroupsResponse),
2842    /// SaslHandshakeResponse,
2843    SaslHandshake(SaslHandshakeResponse),
2844    /// ApiVersionsResponse,
2845    ApiVersions(ApiVersionsResponse),
2846    /// CreateTopicsResponse,
2847    CreateTopics(CreateTopicsResponse),
2848    /// DeleteTopicsResponse,
2849    DeleteTopics(DeleteTopicsResponse),
2850    /// DeleteRecordsResponse,
2851    DeleteRecords(DeleteRecordsResponse),
2852    /// InitProducerIdResponse,
2853    InitProducerId(InitProducerIdResponse),
2854    /// OffsetForLeaderEpochResponse,
2855    OffsetForLeaderEpoch(OffsetForLeaderEpochResponse),
2856    /// AddPartitionsToTxnResponse,
2857    AddPartitionsToTxn(AddPartitionsToTxnResponse),
2858    /// AddOffsetsToTxnResponse,
2859    AddOffsetsToTxn(AddOffsetsToTxnResponse),
2860    /// EndTxnResponse,
2861    EndTxn(EndTxnResponse),
2862    /// WriteTxnMarkersResponse,
2863    WriteTxnMarkers(WriteTxnMarkersResponse),
2864    /// TxnOffsetCommitResponse,
2865    TxnOffsetCommit(TxnOffsetCommitResponse),
2866    /// DescribeAclsResponse,
2867    DescribeAcls(DescribeAclsResponse),
2868    /// CreateAclsResponse,
2869    CreateAcls(CreateAclsResponse),
2870    /// DeleteAclsResponse,
2871    DeleteAcls(DeleteAclsResponse),
2872    /// DescribeConfigsResponse,
2873    DescribeConfigs(DescribeConfigsResponse),
2874    /// AlterConfigsResponse,
2875    AlterConfigs(AlterConfigsResponse),
2876    /// AlterReplicaLogDirsResponse,
2877    AlterReplicaLogDirs(AlterReplicaLogDirsResponse),
2878    /// DescribeLogDirsResponse,
2879    DescribeLogDirs(DescribeLogDirsResponse),
2880    /// SaslAuthenticateResponse,
2881    SaslAuthenticate(SaslAuthenticateResponse),
2882    /// CreatePartitionsResponse,
2883    CreatePartitions(CreatePartitionsResponse),
2884    /// CreateDelegationTokenResponse,
2885    CreateDelegationToken(CreateDelegationTokenResponse),
2886    /// RenewDelegationTokenResponse,
2887    RenewDelegationToken(RenewDelegationTokenResponse),
2888    /// ExpireDelegationTokenResponse,
2889    ExpireDelegationToken(ExpireDelegationTokenResponse),
2890    /// DescribeDelegationTokenResponse,
2891    DescribeDelegationToken(DescribeDelegationTokenResponse),
2892    /// DeleteGroupsResponse,
2893    DeleteGroups(DeleteGroupsResponse),
2894    /// ElectLeadersResponse,
2895    ElectLeaders(ElectLeadersResponse),
2896    /// IncrementalAlterConfigsResponse,
2897    IncrementalAlterConfigs(IncrementalAlterConfigsResponse),
2898    /// AlterPartitionReassignmentsResponse,
2899    AlterPartitionReassignments(AlterPartitionReassignmentsResponse),
2900    /// ListPartitionReassignmentsResponse,
2901    ListPartitionReassignments(ListPartitionReassignmentsResponse),
2902    /// OffsetDeleteResponse,
2903    OffsetDelete(OffsetDeleteResponse),
2904    /// DescribeClientQuotasResponse,
2905    DescribeClientQuotas(DescribeClientQuotasResponse),
2906    /// AlterClientQuotasResponse,
2907    AlterClientQuotas(AlterClientQuotasResponse),
2908    /// DescribeUserScramCredentialsResponse,
2909    DescribeUserScramCredentials(DescribeUserScramCredentialsResponse),
2910    /// AlterUserScramCredentialsResponse,
2911    AlterUserScramCredentials(AlterUserScramCredentialsResponse),
2912    /// VoteResponse,
2913    Vote(VoteResponse),
2914    /// BeginQuorumEpochResponse,
2915    BeginQuorumEpoch(BeginQuorumEpochResponse),
2916    /// EndQuorumEpochResponse,
2917    EndQuorumEpoch(EndQuorumEpochResponse),
2918    /// DescribeQuorumResponse,
2919    DescribeQuorum(DescribeQuorumResponse),
2920    /// AlterPartitionResponse,
2921    AlterPartition(AlterPartitionResponse),
2922    /// UpdateFeaturesResponse,
2923    UpdateFeatures(UpdateFeaturesResponse),
2924    /// EnvelopeResponse,
2925    Envelope(EnvelopeResponse),
2926    /// FetchSnapshotResponse,
2927    FetchSnapshot(FetchSnapshotResponse),
2928    /// DescribeClusterResponse,
2929    DescribeCluster(DescribeClusterResponse),
2930    /// DescribeProducersResponse,
2931    DescribeProducers(DescribeProducersResponse),
2932    /// BrokerRegistrationResponse,
2933    BrokerRegistration(BrokerRegistrationResponse),
2934    /// BrokerHeartbeatResponse,
2935    BrokerHeartbeat(BrokerHeartbeatResponse),
2936    /// UnregisterBrokerResponse,
2937    UnregisterBroker(UnregisterBrokerResponse),
2938    /// DescribeTransactionsResponse,
2939    DescribeTransactions(DescribeTransactionsResponse),
2940    /// ListTransactionsResponse,
2941    ListTransactions(ListTransactionsResponse),
2942    /// AllocateProducerIdsResponse,
2943    AllocateProducerIds(AllocateProducerIdsResponse),
2944    /// ConsumerGroupHeartbeatResponse,
2945    ConsumerGroupHeartbeat(ConsumerGroupHeartbeatResponse),
2946    /// ConsumerGroupDescribeResponse,
2947    ConsumerGroupDescribe(ConsumerGroupDescribeResponse),
2948    /// ControllerRegistrationResponse,
2949    ControllerRegistration(ControllerRegistrationResponse),
2950    /// GetTelemetrySubscriptionsResponse,
2951    GetTelemetrySubscriptions(GetTelemetrySubscriptionsResponse),
2952    /// PushTelemetryResponse,
2953    PushTelemetry(PushTelemetryResponse),
2954    /// AssignReplicasToDirsResponse,
2955    AssignReplicasToDirs(AssignReplicasToDirsResponse),
2956    /// ListConfigResourcesResponse,
2957    ListConfigResources(ListConfigResourcesResponse),
2958    /// DescribeTopicPartitionsResponse,
2959    DescribeTopicPartitions(DescribeTopicPartitionsResponse),
2960    /// ShareGroupHeartbeatResponse,
2961    ShareGroupHeartbeat(ShareGroupHeartbeatResponse),
2962    /// ShareGroupDescribeResponse,
2963    ShareGroupDescribe(ShareGroupDescribeResponse),
2964    /// ShareFetchResponse,
2965    ShareFetch(ShareFetchResponse),
2966    /// ShareAcknowledgeResponse,
2967    ShareAcknowledge(ShareAcknowledgeResponse),
2968    /// AddRaftVoterResponse,
2969    AddRaftVoter(AddRaftVoterResponse),
2970    /// RemoveRaftVoterResponse,
2971    RemoveRaftVoter(RemoveRaftVoterResponse),
2972    /// UpdateRaftVoterResponse,
2973    UpdateRaftVoter(UpdateRaftVoterResponse),
2974    /// InitializeShareGroupStateResponse,
2975    InitializeShareGroupState(InitializeShareGroupStateResponse),
2976    /// ReadShareGroupStateResponse,
2977    ReadShareGroupState(ReadShareGroupStateResponse),
2978    /// WriteShareGroupStateResponse,
2979    WriteShareGroupState(WriteShareGroupStateResponse),
2980    /// DeleteShareGroupStateResponse,
2981    DeleteShareGroupState(DeleteShareGroupStateResponse),
2982    /// ReadShareGroupStateSummaryResponse,
2983    ReadShareGroupStateSummary(ReadShareGroupStateSummaryResponse),
2984    /// DescribeShareGroupOffsetsResponse,
2985    DescribeShareGroupOffsets(DescribeShareGroupOffsetsResponse),
2986    /// AlterShareGroupOffsetsResponse,
2987    AlterShareGroupOffsets(AlterShareGroupOffsetsResponse),
2988    /// DeleteShareGroupOffsetsResponse,
2989    DeleteShareGroupOffsets(DeleteShareGroupOffsetsResponse),
2990}
2991
2992#[cfg(feature = "messages_enums")]
2993impl ResponseKind {
2994    /// Encode the message into the target buffer
2995    #[cfg(feature = "broker")]
2996    pub fn encode(&self, bytes: &mut bytes::BytesMut, version: i16) -> anyhow::Result<()> {
2997        match self {
2998            ResponseKind::Produce(x) => encode(x, bytes, version),
2999            ResponseKind::Fetch(x) => encode(x, bytes, version),
3000            ResponseKind::ListOffsets(x) => encode(x, bytes, version),
3001            ResponseKind::Metadata(x) => encode(x, bytes, version),
3002            ResponseKind::OffsetCommit(x) => encode(x, bytes, version),
3003            ResponseKind::OffsetFetch(x) => encode(x, bytes, version),
3004            ResponseKind::FindCoordinator(x) => encode(x, bytes, version),
3005            ResponseKind::JoinGroup(x) => encode(x, bytes, version),
3006            ResponseKind::Heartbeat(x) => encode(x, bytes, version),
3007            ResponseKind::LeaveGroup(x) => encode(x, bytes, version),
3008            ResponseKind::SyncGroup(x) => encode(x, bytes, version),
3009            ResponseKind::DescribeGroups(x) => encode(x, bytes, version),
3010            ResponseKind::ListGroups(x) => encode(x, bytes, version),
3011            ResponseKind::SaslHandshake(x) => encode(x, bytes, version),
3012            ResponseKind::ApiVersions(x) => encode(x, bytes, version),
3013            ResponseKind::CreateTopics(x) => encode(x, bytes, version),
3014            ResponseKind::DeleteTopics(x) => encode(x, bytes, version),
3015            ResponseKind::DeleteRecords(x) => encode(x, bytes, version),
3016            ResponseKind::InitProducerId(x) => encode(x, bytes, version),
3017            ResponseKind::OffsetForLeaderEpoch(x) => encode(x, bytes, version),
3018            ResponseKind::AddPartitionsToTxn(x) => encode(x, bytes, version),
3019            ResponseKind::AddOffsetsToTxn(x) => encode(x, bytes, version),
3020            ResponseKind::EndTxn(x) => encode(x, bytes, version),
3021            ResponseKind::WriteTxnMarkers(x) => encode(x, bytes, version),
3022            ResponseKind::TxnOffsetCommit(x) => encode(x, bytes, version),
3023            ResponseKind::DescribeAcls(x) => encode(x, bytes, version),
3024            ResponseKind::CreateAcls(x) => encode(x, bytes, version),
3025            ResponseKind::DeleteAcls(x) => encode(x, bytes, version),
3026            ResponseKind::DescribeConfigs(x) => encode(x, bytes, version),
3027            ResponseKind::AlterConfigs(x) => encode(x, bytes, version),
3028            ResponseKind::AlterReplicaLogDirs(x) => encode(x, bytes, version),
3029            ResponseKind::DescribeLogDirs(x) => encode(x, bytes, version),
3030            ResponseKind::SaslAuthenticate(x) => encode(x, bytes, version),
3031            ResponseKind::CreatePartitions(x) => encode(x, bytes, version),
3032            ResponseKind::CreateDelegationToken(x) => encode(x, bytes, version),
3033            ResponseKind::RenewDelegationToken(x) => encode(x, bytes, version),
3034            ResponseKind::ExpireDelegationToken(x) => encode(x, bytes, version),
3035            ResponseKind::DescribeDelegationToken(x) => encode(x, bytes, version),
3036            ResponseKind::DeleteGroups(x) => encode(x, bytes, version),
3037            ResponseKind::ElectLeaders(x) => encode(x, bytes, version),
3038            ResponseKind::IncrementalAlterConfigs(x) => encode(x, bytes, version),
3039            ResponseKind::AlterPartitionReassignments(x) => encode(x, bytes, version),
3040            ResponseKind::ListPartitionReassignments(x) => encode(x, bytes, version),
3041            ResponseKind::OffsetDelete(x) => encode(x, bytes, version),
3042            ResponseKind::DescribeClientQuotas(x) => encode(x, bytes, version),
3043            ResponseKind::AlterClientQuotas(x) => encode(x, bytes, version),
3044            ResponseKind::DescribeUserScramCredentials(x) => encode(x, bytes, version),
3045            ResponseKind::AlterUserScramCredentials(x) => encode(x, bytes, version),
3046            ResponseKind::Vote(x) => encode(x, bytes, version),
3047            ResponseKind::BeginQuorumEpoch(x) => encode(x, bytes, version),
3048            ResponseKind::EndQuorumEpoch(x) => encode(x, bytes, version),
3049            ResponseKind::DescribeQuorum(x) => encode(x, bytes, version),
3050            ResponseKind::AlterPartition(x) => encode(x, bytes, version),
3051            ResponseKind::UpdateFeatures(x) => encode(x, bytes, version),
3052            ResponseKind::Envelope(x) => encode(x, bytes, version),
3053            ResponseKind::FetchSnapshot(x) => encode(x, bytes, version),
3054            ResponseKind::DescribeCluster(x) => encode(x, bytes, version),
3055            ResponseKind::DescribeProducers(x) => encode(x, bytes, version),
3056            ResponseKind::BrokerRegistration(x) => encode(x, bytes, version),
3057            ResponseKind::BrokerHeartbeat(x) => encode(x, bytes, version),
3058            ResponseKind::UnregisterBroker(x) => encode(x, bytes, version),
3059            ResponseKind::DescribeTransactions(x) => encode(x, bytes, version),
3060            ResponseKind::ListTransactions(x) => encode(x, bytes, version),
3061            ResponseKind::AllocateProducerIds(x) => encode(x, bytes, version),
3062            ResponseKind::ConsumerGroupHeartbeat(x) => encode(x, bytes, version),
3063            ResponseKind::ConsumerGroupDescribe(x) => encode(x, bytes, version),
3064            ResponseKind::ControllerRegistration(x) => encode(x, bytes, version),
3065            ResponseKind::GetTelemetrySubscriptions(x) => encode(x, bytes, version),
3066            ResponseKind::PushTelemetry(x) => encode(x, bytes, version),
3067            ResponseKind::AssignReplicasToDirs(x) => encode(x, bytes, version),
3068            ResponseKind::ListConfigResources(x) => encode(x, bytes, version),
3069            ResponseKind::DescribeTopicPartitions(x) => encode(x, bytes, version),
3070            ResponseKind::ShareGroupHeartbeat(x) => encode(x, bytes, version),
3071            ResponseKind::ShareGroupDescribe(x) => encode(x, bytes, version),
3072            ResponseKind::ShareFetch(x) => encode(x, bytes, version),
3073            ResponseKind::ShareAcknowledge(x) => encode(x, bytes, version),
3074            ResponseKind::AddRaftVoter(x) => encode(x, bytes, version),
3075            ResponseKind::RemoveRaftVoter(x) => encode(x, bytes, version),
3076            ResponseKind::UpdateRaftVoter(x) => encode(x, bytes, version),
3077            ResponseKind::InitializeShareGroupState(x) => encode(x, bytes, version),
3078            ResponseKind::ReadShareGroupState(x) => encode(x, bytes, version),
3079            ResponseKind::WriteShareGroupState(x) => encode(x, bytes, version),
3080            ResponseKind::DeleteShareGroupState(x) => encode(x, bytes, version),
3081            ResponseKind::ReadShareGroupStateSummary(x) => encode(x, bytes, version),
3082            ResponseKind::DescribeShareGroupOffsets(x) => encode(x, bytes, version),
3083            ResponseKind::AlterShareGroupOffsets(x) => encode(x, bytes, version),
3084            ResponseKind::DeleteShareGroupOffsets(x) => encode(x, bytes, version),
3085        }
3086    }
3087    /// Decode the message from the provided buffer and version
3088    #[cfg(feature = "client")]
3089    pub fn decode(
3090        api_key: ApiKey,
3091        bytes: &mut bytes::Bytes,
3092        version: i16,
3093    ) -> anyhow::Result<ResponseKind> {
3094        match api_key {
3095            ApiKey::Produce => Ok(ResponseKind::Produce(decode(bytes, version)?)),
3096            ApiKey::Fetch => Ok(ResponseKind::Fetch(decode(bytes, version)?)),
3097            ApiKey::ListOffsets => Ok(ResponseKind::ListOffsets(decode(bytes, version)?)),
3098            ApiKey::Metadata => Ok(ResponseKind::Metadata(decode(bytes, version)?)),
3099            ApiKey::OffsetCommit => Ok(ResponseKind::OffsetCommit(decode(bytes, version)?)),
3100            ApiKey::OffsetFetch => Ok(ResponseKind::OffsetFetch(decode(bytes, version)?)),
3101            ApiKey::FindCoordinator => Ok(ResponseKind::FindCoordinator(decode(bytes, version)?)),
3102            ApiKey::JoinGroup => Ok(ResponseKind::JoinGroup(decode(bytes, version)?)),
3103            ApiKey::Heartbeat => Ok(ResponseKind::Heartbeat(decode(bytes, version)?)),
3104            ApiKey::LeaveGroup => Ok(ResponseKind::LeaveGroup(decode(bytes, version)?)),
3105            ApiKey::SyncGroup => Ok(ResponseKind::SyncGroup(decode(bytes, version)?)),
3106            ApiKey::DescribeGroups => Ok(ResponseKind::DescribeGroups(decode(bytes, version)?)),
3107            ApiKey::ListGroups => Ok(ResponseKind::ListGroups(decode(bytes, version)?)),
3108            ApiKey::SaslHandshake => Ok(ResponseKind::SaslHandshake(decode(bytes, version)?)),
3109            ApiKey::ApiVersions => Ok(ResponseKind::ApiVersions(decode(bytes, version)?)),
3110            ApiKey::CreateTopics => Ok(ResponseKind::CreateTopics(decode(bytes, version)?)),
3111            ApiKey::DeleteTopics => Ok(ResponseKind::DeleteTopics(decode(bytes, version)?)),
3112            ApiKey::DeleteRecords => Ok(ResponseKind::DeleteRecords(decode(bytes, version)?)),
3113            ApiKey::InitProducerId => Ok(ResponseKind::InitProducerId(decode(bytes, version)?)),
3114            ApiKey::OffsetForLeaderEpoch => {
3115                Ok(ResponseKind::OffsetForLeaderEpoch(decode(bytes, version)?))
3116            }
3117            ApiKey::AddPartitionsToTxn => {
3118                Ok(ResponseKind::AddPartitionsToTxn(decode(bytes, version)?))
3119            }
3120            ApiKey::AddOffsetsToTxn => Ok(ResponseKind::AddOffsetsToTxn(decode(bytes, version)?)),
3121            ApiKey::EndTxn => Ok(ResponseKind::EndTxn(decode(bytes, version)?)),
3122            ApiKey::WriteTxnMarkers => Ok(ResponseKind::WriteTxnMarkers(decode(bytes, version)?)),
3123            ApiKey::TxnOffsetCommit => Ok(ResponseKind::TxnOffsetCommit(decode(bytes, version)?)),
3124            ApiKey::DescribeAcls => Ok(ResponseKind::DescribeAcls(decode(bytes, version)?)),
3125            ApiKey::CreateAcls => Ok(ResponseKind::CreateAcls(decode(bytes, version)?)),
3126            ApiKey::DeleteAcls => Ok(ResponseKind::DeleteAcls(decode(bytes, version)?)),
3127            ApiKey::DescribeConfigs => Ok(ResponseKind::DescribeConfigs(decode(bytes, version)?)),
3128            ApiKey::AlterConfigs => Ok(ResponseKind::AlterConfigs(decode(bytes, version)?)),
3129            ApiKey::AlterReplicaLogDirs => {
3130                Ok(ResponseKind::AlterReplicaLogDirs(decode(bytes, version)?))
3131            }
3132            ApiKey::DescribeLogDirs => Ok(ResponseKind::DescribeLogDirs(decode(bytes, version)?)),
3133            ApiKey::SaslAuthenticate => Ok(ResponseKind::SaslAuthenticate(decode(bytes, version)?)),
3134            ApiKey::CreatePartitions => Ok(ResponseKind::CreatePartitions(decode(bytes, version)?)),
3135            ApiKey::CreateDelegationToken => {
3136                Ok(ResponseKind::CreateDelegationToken(decode(bytes, version)?))
3137            }
3138            ApiKey::RenewDelegationToken => {
3139                Ok(ResponseKind::RenewDelegationToken(decode(bytes, version)?))
3140            }
3141            ApiKey::ExpireDelegationToken => {
3142                Ok(ResponseKind::ExpireDelegationToken(decode(bytes, version)?))
3143            }
3144            ApiKey::DescribeDelegationToken => Ok(ResponseKind::DescribeDelegationToken(decode(
3145                bytes, version,
3146            )?)),
3147            ApiKey::DeleteGroups => Ok(ResponseKind::DeleteGroups(decode(bytes, version)?)),
3148            ApiKey::ElectLeaders => Ok(ResponseKind::ElectLeaders(decode(bytes, version)?)),
3149            ApiKey::IncrementalAlterConfigs => Ok(ResponseKind::IncrementalAlterConfigs(decode(
3150                bytes, version,
3151            )?)),
3152            ApiKey::AlterPartitionReassignments => Ok(ResponseKind::AlterPartitionReassignments(
3153                decode(bytes, version)?,
3154            )),
3155            ApiKey::ListPartitionReassignments => Ok(ResponseKind::ListPartitionReassignments(
3156                decode(bytes, version)?,
3157            )),
3158            ApiKey::OffsetDelete => Ok(ResponseKind::OffsetDelete(decode(bytes, version)?)),
3159            ApiKey::DescribeClientQuotas => {
3160                Ok(ResponseKind::DescribeClientQuotas(decode(bytes, version)?))
3161            }
3162            ApiKey::AlterClientQuotas => {
3163                Ok(ResponseKind::AlterClientQuotas(decode(bytes, version)?))
3164            }
3165            ApiKey::DescribeUserScramCredentials => Ok(ResponseKind::DescribeUserScramCredentials(
3166                decode(bytes, version)?,
3167            )),
3168            ApiKey::AlterUserScramCredentials => Ok(ResponseKind::AlterUserScramCredentials(
3169                decode(bytes, version)?,
3170            )),
3171            ApiKey::Vote => Ok(ResponseKind::Vote(decode(bytes, version)?)),
3172            ApiKey::BeginQuorumEpoch => Ok(ResponseKind::BeginQuorumEpoch(decode(bytes, version)?)),
3173            ApiKey::EndQuorumEpoch => Ok(ResponseKind::EndQuorumEpoch(decode(bytes, version)?)),
3174            ApiKey::DescribeQuorum => Ok(ResponseKind::DescribeQuorum(decode(bytes, version)?)),
3175            ApiKey::AlterPartition => Ok(ResponseKind::AlterPartition(decode(bytes, version)?)),
3176            ApiKey::UpdateFeatures => Ok(ResponseKind::UpdateFeatures(decode(bytes, version)?)),
3177            ApiKey::Envelope => Ok(ResponseKind::Envelope(decode(bytes, version)?)),
3178            ApiKey::FetchSnapshot => Ok(ResponseKind::FetchSnapshot(decode(bytes, version)?)),
3179            ApiKey::DescribeCluster => Ok(ResponseKind::DescribeCluster(decode(bytes, version)?)),
3180            ApiKey::DescribeProducers => {
3181                Ok(ResponseKind::DescribeProducers(decode(bytes, version)?))
3182            }
3183            ApiKey::BrokerRegistration => {
3184                Ok(ResponseKind::BrokerRegistration(decode(bytes, version)?))
3185            }
3186            ApiKey::BrokerHeartbeat => Ok(ResponseKind::BrokerHeartbeat(decode(bytes, version)?)),
3187            ApiKey::UnregisterBroker => Ok(ResponseKind::UnregisterBroker(decode(bytes, version)?)),
3188            ApiKey::DescribeTransactions => {
3189                Ok(ResponseKind::DescribeTransactions(decode(bytes, version)?))
3190            }
3191            ApiKey::ListTransactions => Ok(ResponseKind::ListTransactions(decode(bytes, version)?)),
3192            ApiKey::AllocateProducerIds => {
3193                Ok(ResponseKind::AllocateProducerIds(decode(bytes, version)?))
3194            }
3195            ApiKey::ConsumerGroupHeartbeat => Ok(ResponseKind::ConsumerGroupHeartbeat(decode(
3196                bytes, version,
3197            )?)),
3198            ApiKey::ConsumerGroupDescribe => {
3199                Ok(ResponseKind::ConsumerGroupDescribe(decode(bytes, version)?))
3200            }
3201            ApiKey::ControllerRegistration => Ok(ResponseKind::ControllerRegistration(decode(
3202                bytes, version,
3203            )?)),
3204            ApiKey::GetTelemetrySubscriptions => Ok(ResponseKind::GetTelemetrySubscriptions(
3205                decode(bytes, version)?,
3206            )),
3207            ApiKey::PushTelemetry => Ok(ResponseKind::PushTelemetry(decode(bytes, version)?)),
3208            ApiKey::AssignReplicasToDirs => {
3209                Ok(ResponseKind::AssignReplicasToDirs(decode(bytes, version)?))
3210            }
3211            ApiKey::ListConfigResources => {
3212                Ok(ResponseKind::ListConfigResources(decode(bytes, version)?))
3213            }
3214            ApiKey::DescribeTopicPartitions => Ok(ResponseKind::DescribeTopicPartitions(decode(
3215                bytes, version,
3216            )?)),
3217            ApiKey::ShareGroupHeartbeat => {
3218                Ok(ResponseKind::ShareGroupHeartbeat(decode(bytes, version)?))
3219            }
3220            ApiKey::ShareGroupDescribe => {
3221                Ok(ResponseKind::ShareGroupDescribe(decode(bytes, version)?))
3222            }
3223            ApiKey::ShareFetch => Ok(ResponseKind::ShareFetch(decode(bytes, version)?)),
3224            ApiKey::ShareAcknowledge => Ok(ResponseKind::ShareAcknowledge(decode(bytes, version)?)),
3225            ApiKey::AddRaftVoter => Ok(ResponseKind::AddRaftVoter(decode(bytes, version)?)),
3226            ApiKey::RemoveRaftVoter => Ok(ResponseKind::RemoveRaftVoter(decode(bytes, version)?)),
3227            ApiKey::UpdateRaftVoter => Ok(ResponseKind::UpdateRaftVoter(decode(bytes, version)?)),
3228            ApiKey::InitializeShareGroupState => Ok(ResponseKind::InitializeShareGroupState(
3229                decode(bytes, version)?,
3230            )),
3231            ApiKey::ReadShareGroupState => {
3232                Ok(ResponseKind::ReadShareGroupState(decode(bytes, version)?))
3233            }
3234            ApiKey::WriteShareGroupState => {
3235                Ok(ResponseKind::WriteShareGroupState(decode(bytes, version)?))
3236            }
3237            ApiKey::DeleteShareGroupState => {
3238                Ok(ResponseKind::DeleteShareGroupState(decode(bytes, version)?))
3239            }
3240            ApiKey::ReadShareGroupStateSummary => Ok(ResponseKind::ReadShareGroupStateSummary(
3241                decode(bytes, version)?,
3242            )),
3243            ApiKey::DescribeShareGroupOffsets => Ok(ResponseKind::DescribeShareGroupOffsets(
3244                decode(bytes, version)?,
3245            )),
3246            ApiKey::AlterShareGroupOffsets => Ok(ResponseKind::AlterShareGroupOffsets(decode(
3247                bytes, version,
3248            )?)),
3249            ApiKey::DeleteShareGroupOffsets => Ok(ResponseKind::DeleteShareGroupOffsets(decode(
3250                bytes, version,
3251            )?)),
3252        }
3253    }
3254    /// Get the version of request header that needs to be prepended to this message
3255    pub fn header_version(&self, version: i16) -> i16 {
3256        match self {
3257            ResponseKind::Produce(_) => ProduceResponse::header_version(version),
3258            ResponseKind::Fetch(_) => FetchResponse::header_version(version),
3259            ResponseKind::ListOffsets(_) => ListOffsetsResponse::header_version(version),
3260            ResponseKind::Metadata(_) => MetadataResponse::header_version(version),
3261            ResponseKind::OffsetCommit(_) => OffsetCommitResponse::header_version(version),
3262            ResponseKind::OffsetFetch(_) => OffsetFetchResponse::header_version(version),
3263            ResponseKind::FindCoordinator(_) => FindCoordinatorResponse::header_version(version),
3264            ResponseKind::JoinGroup(_) => JoinGroupResponse::header_version(version),
3265            ResponseKind::Heartbeat(_) => HeartbeatResponse::header_version(version),
3266            ResponseKind::LeaveGroup(_) => LeaveGroupResponse::header_version(version),
3267            ResponseKind::SyncGroup(_) => SyncGroupResponse::header_version(version),
3268            ResponseKind::DescribeGroups(_) => DescribeGroupsResponse::header_version(version),
3269            ResponseKind::ListGroups(_) => ListGroupsResponse::header_version(version),
3270            ResponseKind::SaslHandshake(_) => SaslHandshakeResponse::header_version(version),
3271            ResponseKind::ApiVersions(_) => ApiVersionsResponse::header_version(version),
3272            ResponseKind::CreateTopics(_) => CreateTopicsResponse::header_version(version),
3273            ResponseKind::DeleteTopics(_) => DeleteTopicsResponse::header_version(version),
3274            ResponseKind::DeleteRecords(_) => DeleteRecordsResponse::header_version(version),
3275            ResponseKind::InitProducerId(_) => InitProducerIdResponse::header_version(version),
3276            ResponseKind::OffsetForLeaderEpoch(_) => {
3277                OffsetForLeaderEpochResponse::header_version(version)
3278            }
3279            ResponseKind::AddPartitionsToTxn(_) => {
3280                AddPartitionsToTxnResponse::header_version(version)
3281            }
3282            ResponseKind::AddOffsetsToTxn(_) => AddOffsetsToTxnResponse::header_version(version),
3283            ResponseKind::EndTxn(_) => EndTxnResponse::header_version(version),
3284            ResponseKind::WriteTxnMarkers(_) => WriteTxnMarkersResponse::header_version(version),
3285            ResponseKind::TxnOffsetCommit(_) => TxnOffsetCommitResponse::header_version(version),
3286            ResponseKind::DescribeAcls(_) => DescribeAclsResponse::header_version(version),
3287            ResponseKind::CreateAcls(_) => CreateAclsResponse::header_version(version),
3288            ResponseKind::DeleteAcls(_) => DeleteAclsResponse::header_version(version),
3289            ResponseKind::DescribeConfigs(_) => DescribeConfigsResponse::header_version(version),
3290            ResponseKind::AlterConfigs(_) => AlterConfigsResponse::header_version(version),
3291            ResponseKind::AlterReplicaLogDirs(_) => {
3292                AlterReplicaLogDirsResponse::header_version(version)
3293            }
3294            ResponseKind::DescribeLogDirs(_) => DescribeLogDirsResponse::header_version(version),
3295            ResponseKind::SaslAuthenticate(_) => SaslAuthenticateResponse::header_version(version),
3296            ResponseKind::CreatePartitions(_) => CreatePartitionsResponse::header_version(version),
3297            ResponseKind::CreateDelegationToken(_) => {
3298                CreateDelegationTokenResponse::header_version(version)
3299            }
3300            ResponseKind::RenewDelegationToken(_) => {
3301                RenewDelegationTokenResponse::header_version(version)
3302            }
3303            ResponseKind::ExpireDelegationToken(_) => {
3304                ExpireDelegationTokenResponse::header_version(version)
3305            }
3306            ResponseKind::DescribeDelegationToken(_) => {
3307                DescribeDelegationTokenResponse::header_version(version)
3308            }
3309            ResponseKind::DeleteGroups(_) => DeleteGroupsResponse::header_version(version),
3310            ResponseKind::ElectLeaders(_) => ElectLeadersResponse::header_version(version),
3311            ResponseKind::IncrementalAlterConfigs(_) => {
3312                IncrementalAlterConfigsResponse::header_version(version)
3313            }
3314            ResponseKind::AlterPartitionReassignments(_) => {
3315                AlterPartitionReassignmentsResponse::header_version(version)
3316            }
3317            ResponseKind::ListPartitionReassignments(_) => {
3318                ListPartitionReassignmentsResponse::header_version(version)
3319            }
3320            ResponseKind::OffsetDelete(_) => OffsetDeleteResponse::header_version(version),
3321            ResponseKind::DescribeClientQuotas(_) => {
3322                DescribeClientQuotasResponse::header_version(version)
3323            }
3324            ResponseKind::AlterClientQuotas(_) => {
3325                AlterClientQuotasResponse::header_version(version)
3326            }
3327            ResponseKind::DescribeUserScramCredentials(_) => {
3328                DescribeUserScramCredentialsResponse::header_version(version)
3329            }
3330            ResponseKind::AlterUserScramCredentials(_) => {
3331                AlterUserScramCredentialsResponse::header_version(version)
3332            }
3333            ResponseKind::Vote(_) => VoteResponse::header_version(version),
3334            ResponseKind::BeginQuorumEpoch(_) => BeginQuorumEpochResponse::header_version(version),
3335            ResponseKind::EndQuorumEpoch(_) => EndQuorumEpochResponse::header_version(version),
3336            ResponseKind::DescribeQuorum(_) => DescribeQuorumResponse::header_version(version),
3337            ResponseKind::AlterPartition(_) => AlterPartitionResponse::header_version(version),
3338            ResponseKind::UpdateFeatures(_) => UpdateFeaturesResponse::header_version(version),
3339            ResponseKind::Envelope(_) => EnvelopeResponse::header_version(version),
3340            ResponseKind::FetchSnapshot(_) => FetchSnapshotResponse::header_version(version),
3341            ResponseKind::DescribeCluster(_) => DescribeClusterResponse::header_version(version),
3342            ResponseKind::DescribeProducers(_) => {
3343                DescribeProducersResponse::header_version(version)
3344            }
3345            ResponseKind::BrokerRegistration(_) => {
3346                BrokerRegistrationResponse::header_version(version)
3347            }
3348            ResponseKind::BrokerHeartbeat(_) => BrokerHeartbeatResponse::header_version(version),
3349            ResponseKind::UnregisterBroker(_) => UnregisterBrokerResponse::header_version(version),
3350            ResponseKind::DescribeTransactions(_) => {
3351                DescribeTransactionsResponse::header_version(version)
3352            }
3353            ResponseKind::ListTransactions(_) => ListTransactionsResponse::header_version(version),
3354            ResponseKind::AllocateProducerIds(_) => {
3355                AllocateProducerIdsResponse::header_version(version)
3356            }
3357            ResponseKind::ConsumerGroupHeartbeat(_) => {
3358                ConsumerGroupHeartbeatResponse::header_version(version)
3359            }
3360            ResponseKind::ConsumerGroupDescribe(_) => {
3361                ConsumerGroupDescribeResponse::header_version(version)
3362            }
3363            ResponseKind::ControllerRegistration(_) => {
3364                ControllerRegistrationResponse::header_version(version)
3365            }
3366            ResponseKind::GetTelemetrySubscriptions(_) => {
3367                GetTelemetrySubscriptionsResponse::header_version(version)
3368            }
3369            ResponseKind::PushTelemetry(_) => PushTelemetryResponse::header_version(version),
3370            ResponseKind::AssignReplicasToDirs(_) => {
3371                AssignReplicasToDirsResponse::header_version(version)
3372            }
3373            ResponseKind::ListConfigResources(_) => {
3374                ListConfigResourcesResponse::header_version(version)
3375            }
3376            ResponseKind::DescribeTopicPartitions(_) => {
3377                DescribeTopicPartitionsResponse::header_version(version)
3378            }
3379            ResponseKind::ShareGroupHeartbeat(_) => {
3380                ShareGroupHeartbeatResponse::header_version(version)
3381            }
3382            ResponseKind::ShareGroupDescribe(_) => {
3383                ShareGroupDescribeResponse::header_version(version)
3384            }
3385            ResponseKind::ShareFetch(_) => ShareFetchResponse::header_version(version),
3386            ResponseKind::ShareAcknowledge(_) => ShareAcknowledgeResponse::header_version(version),
3387            ResponseKind::AddRaftVoter(_) => AddRaftVoterResponse::header_version(version),
3388            ResponseKind::RemoveRaftVoter(_) => RemoveRaftVoterResponse::header_version(version),
3389            ResponseKind::UpdateRaftVoter(_) => UpdateRaftVoterResponse::header_version(version),
3390            ResponseKind::InitializeShareGroupState(_) => {
3391                InitializeShareGroupStateResponse::header_version(version)
3392            }
3393            ResponseKind::ReadShareGroupState(_) => {
3394                ReadShareGroupStateResponse::header_version(version)
3395            }
3396            ResponseKind::WriteShareGroupState(_) => {
3397                WriteShareGroupStateResponse::header_version(version)
3398            }
3399            ResponseKind::DeleteShareGroupState(_) => {
3400                DeleteShareGroupStateResponse::header_version(version)
3401            }
3402            ResponseKind::ReadShareGroupStateSummary(_) => {
3403                ReadShareGroupStateSummaryResponse::header_version(version)
3404            }
3405            ResponseKind::DescribeShareGroupOffsets(_) => {
3406                DescribeShareGroupOffsetsResponse::header_version(version)
3407            }
3408            ResponseKind::AlterShareGroupOffsets(_) => {
3409                AlterShareGroupOffsetsResponse::header_version(version)
3410            }
3411            ResponseKind::DeleteShareGroupOffsets(_) => {
3412                DeleteShareGroupOffsetsResponse::header_version(version)
3413            }
3414        }
3415    }
3416}
3417
3418#[cfg(feature = "messages_enums")]
3419impl From<ProduceResponse> for ResponseKind {
3420    fn from(value: ProduceResponse) -> ResponseKind {
3421        ResponseKind::Produce(value)
3422    }
3423}
3424
3425#[cfg(feature = "messages_enums")]
3426impl From<FetchResponse> for ResponseKind {
3427    fn from(value: FetchResponse) -> ResponseKind {
3428        ResponseKind::Fetch(value)
3429    }
3430}
3431
3432#[cfg(feature = "messages_enums")]
3433impl From<ListOffsetsResponse> for ResponseKind {
3434    fn from(value: ListOffsetsResponse) -> ResponseKind {
3435        ResponseKind::ListOffsets(value)
3436    }
3437}
3438
3439#[cfg(feature = "messages_enums")]
3440impl From<MetadataResponse> for ResponseKind {
3441    fn from(value: MetadataResponse) -> ResponseKind {
3442        ResponseKind::Metadata(value)
3443    }
3444}
3445
3446#[cfg(feature = "messages_enums")]
3447impl From<OffsetCommitResponse> for ResponseKind {
3448    fn from(value: OffsetCommitResponse) -> ResponseKind {
3449        ResponseKind::OffsetCommit(value)
3450    }
3451}
3452
3453#[cfg(feature = "messages_enums")]
3454impl From<OffsetFetchResponse> for ResponseKind {
3455    fn from(value: OffsetFetchResponse) -> ResponseKind {
3456        ResponseKind::OffsetFetch(value)
3457    }
3458}
3459
3460#[cfg(feature = "messages_enums")]
3461impl From<FindCoordinatorResponse> for ResponseKind {
3462    fn from(value: FindCoordinatorResponse) -> ResponseKind {
3463        ResponseKind::FindCoordinator(value)
3464    }
3465}
3466
3467#[cfg(feature = "messages_enums")]
3468impl From<JoinGroupResponse> for ResponseKind {
3469    fn from(value: JoinGroupResponse) -> ResponseKind {
3470        ResponseKind::JoinGroup(value)
3471    }
3472}
3473
3474#[cfg(feature = "messages_enums")]
3475impl From<HeartbeatResponse> for ResponseKind {
3476    fn from(value: HeartbeatResponse) -> ResponseKind {
3477        ResponseKind::Heartbeat(value)
3478    }
3479}
3480
3481#[cfg(feature = "messages_enums")]
3482impl From<LeaveGroupResponse> for ResponseKind {
3483    fn from(value: LeaveGroupResponse) -> ResponseKind {
3484        ResponseKind::LeaveGroup(value)
3485    }
3486}
3487
3488#[cfg(feature = "messages_enums")]
3489impl From<SyncGroupResponse> for ResponseKind {
3490    fn from(value: SyncGroupResponse) -> ResponseKind {
3491        ResponseKind::SyncGroup(value)
3492    }
3493}
3494
3495#[cfg(feature = "messages_enums")]
3496impl From<DescribeGroupsResponse> for ResponseKind {
3497    fn from(value: DescribeGroupsResponse) -> ResponseKind {
3498        ResponseKind::DescribeGroups(value)
3499    }
3500}
3501
3502#[cfg(feature = "messages_enums")]
3503impl From<ListGroupsResponse> for ResponseKind {
3504    fn from(value: ListGroupsResponse) -> ResponseKind {
3505        ResponseKind::ListGroups(value)
3506    }
3507}
3508
3509#[cfg(feature = "messages_enums")]
3510impl From<SaslHandshakeResponse> for ResponseKind {
3511    fn from(value: SaslHandshakeResponse) -> ResponseKind {
3512        ResponseKind::SaslHandshake(value)
3513    }
3514}
3515
3516#[cfg(feature = "messages_enums")]
3517impl From<ApiVersionsResponse> for ResponseKind {
3518    fn from(value: ApiVersionsResponse) -> ResponseKind {
3519        ResponseKind::ApiVersions(value)
3520    }
3521}
3522
3523#[cfg(feature = "messages_enums")]
3524impl From<CreateTopicsResponse> for ResponseKind {
3525    fn from(value: CreateTopicsResponse) -> ResponseKind {
3526        ResponseKind::CreateTopics(value)
3527    }
3528}
3529
3530#[cfg(feature = "messages_enums")]
3531impl From<DeleteTopicsResponse> for ResponseKind {
3532    fn from(value: DeleteTopicsResponse) -> ResponseKind {
3533        ResponseKind::DeleteTopics(value)
3534    }
3535}
3536
3537#[cfg(feature = "messages_enums")]
3538impl From<DeleteRecordsResponse> for ResponseKind {
3539    fn from(value: DeleteRecordsResponse) -> ResponseKind {
3540        ResponseKind::DeleteRecords(value)
3541    }
3542}
3543
3544#[cfg(feature = "messages_enums")]
3545impl From<InitProducerIdResponse> for ResponseKind {
3546    fn from(value: InitProducerIdResponse) -> ResponseKind {
3547        ResponseKind::InitProducerId(value)
3548    }
3549}
3550
3551#[cfg(feature = "messages_enums")]
3552impl From<OffsetForLeaderEpochResponse> for ResponseKind {
3553    fn from(value: OffsetForLeaderEpochResponse) -> ResponseKind {
3554        ResponseKind::OffsetForLeaderEpoch(value)
3555    }
3556}
3557
3558#[cfg(feature = "messages_enums")]
3559impl From<AddPartitionsToTxnResponse> for ResponseKind {
3560    fn from(value: AddPartitionsToTxnResponse) -> ResponseKind {
3561        ResponseKind::AddPartitionsToTxn(value)
3562    }
3563}
3564
3565#[cfg(feature = "messages_enums")]
3566impl From<AddOffsetsToTxnResponse> for ResponseKind {
3567    fn from(value: AddOffsetsToTxnResponse) -> ResponseKind {
3568        ResponseKind::AddOffsetsToTxn(value)
3569    }
3570}
3571
3572#[cfg(feature = "messages_enums")]
3573impl From<EndTxnResponse> for ResponseKind {
3574    fn from(value: EndTxnResponse) -> ResponseKind {
3575        ResponseKind::EndTxn(value)
3576    }
3577}
3578
3579#[cfg(feature = "messages_enums")]
3580impl From<WriteTxnMarkersResponse> for ResponseKind {
3581    fn from(value: WriteTxnMarkersResponse) -> ResponseKind {
3582        ResponseKind::WriteTxnMarkers(value)
3583    }
3584}
3585
3586#[cfg(feature = "messages_enums")]
3587impl From<TxnOffsetCommitResponse> for ResponseKind {
3588    fn from(value: TxnOffsetCommitResponse) -> ResponseKind {
3589        ResponseKind::TxnOffsetCommit(value)
3590    }
3591}
3592
3593#[cfg(feature = "messages_enums")]
3594impl From<DescribeAclsResponse> for ResponseKind {
3595    fn from(value: DescribeAclsResponse) -> ResponseKind {
3596        ResponseKind::DescribeAcls(value)
3597    }
3598}
3599
3600#[cfg(feature = "messages_enums")]
3601impl From<CreateAclsResponse> for ResponseKind {
3602    fn from(value: CreateAclsResponse) -> ResponseKind {
3603        ResponseKind::CreateAcls(value)
3604    }
3605}
3606
3607#[cfg(feature = "messages_enums")]
3608impl From<DeleteAclsResponse> for ResponseKind {
3609    fn from(value: DeleteAclsResponse) -> ResponseKind {
3610        ResponseKind::DeleteAcls(value)
3611    }
3612}
3613
3614#[cfg(feature = "messages_enums")]
3615impl From<DescribeConfigsResponse> for ResponseKind {
3616    fn from(value: DescribeConfigsResponse) -> ResponseKind {
3617        ResponseKind::DescribeConfigs(value)
3618    }
3619}
3620
3621#[cfg(feature = "messages_enums")]
3622impl From<AlterConfigsResponse> for ResponseKind {
3623    fn from(value: AlterConfigsResponse) -> ResponseKind {
3624        ResponseKind::AlterConfigs(value)
3625    }
3626}
3627
3628#[cfg(feature = "messages_enums")]
3629impl From<AlterReplicaLogDirsResponse> for ResponseKind {
3630    fn from(value: AlterReplicaLogDirsResponse) -> ResponseKind {
3631        ResponseKind::AlterReplicaLogDirs(value)
3632    }
3633}
3634
3635#[cfg(feature = "messages_enums")]
3636impl From<DescribeLogDirsResponse> for ResponseKind {
3637    fn from(value: DescribeLogDirsResponse) -> ResponseKind {
3638        ResponseKind::DescribeLogDirs(value)
3639    }
3640}
3641
3642#[cfg(feature = "messages_enums")]
3643impl From<SaslAuthenticateResponse> for ResponseKind {
3644    fn from(value: SaslAuthenticateResponse) -> ResponseKind {
3645        ResponseKind::SaslAuthenticate(value)
3646    }
3647}
3648
3649#[cfg(feature = "messages_enums")]
3650impl From<CreatePartitionsResponse> for ResponseKind {
3651    fn from(value: CreatePartitionsResponse) -> ResponseKind {
3652        ResponseKind::CreatePartitions(value)
3653    }
3654}
3655
3656#[cfg(feature = "messages_enums")]
3657impl From<CreateDelegationTokenResponse> for ResponseKind {
3658    fn from(value: CreateDelegationTokenResponse) -> ResponseKind {
3659        ResponseKind::CreateDelegationToken(value)
3660    }
3661}
3662
3663#[cfg(feature = "messages_enums")]
3664impl From<RenewDelegationTokenResponse> for ResponseKind {
3665    fn from(value: RenewDelegationTokenResponse) -> ResponseKind {
3666        ResponseKind::RenewDelegationToken(value)
3667    }
3668}
3669
3670#[cfg(feature = "messages_enums")]
3671impl From<ExpireDelegationTokenResponse> for ResponseKind {
3672    fn from(value: ExpireDelegationTokenResponse) -> ResponseKind {
3673        ResponseKind::ExpireDelegationToken(value)
3674    }
3675}
3676
3677#[cfg(feature = "messages_enums")]
3678impl From<DescribeDelegationTokenResponse> for ResponseKind {
3679    fn from(value: DescribeDelegationTokenResponse) -> ResponseKind {
3680        ResponseKind::DescribeDelegationToken(value)
3681    }
3682}
3683
3684#[cfg(feature = "messages_enums")]
3685impl From<DeleteGroupsResponse> for ResponseKind {
3686    fn from(value: DeleteGroupsResponse) -> ResponseKind {
3687        ResponseKind::DeleteGroups(value)
3688    }
3689}
3690
3691#[cfg(feature = "messages_enums")]
3692impl From<ElectLeadersResponse> for ResponseKind {
3693    fn from(value: ElectLeadersResponse) -> ResponseKind {
3694        ResponseKind::ElectLeaders(value)
3695    }
3696}
3697
3698#[cfg(feature = "messages_enums")]
3699impl From<IncrementalAlterConfigsResponse> for ResponseKind {
3700    fn from(value: IncrementalAlterConfigsResponse) -> ResponseKind {
3701        ResponseKind::IncrementalAlterConfigs(value)
3702    }
3703}
3704
3705#[cfg(feature = "messages_enums")]
3706impl From<AlterPartitionReassignmentsResponse> for ResponseKind {
3707    fn from(value: AlterPartitionReassignmentsResponse) -> ResponseKind {
3708        ResponseKind::AlterPartitionReassignments(value)
3709    }
3710}
3711
3712#[cfg(feature = "messages_enums")]
3713impl From<ListPartitionReassignmentsResponse> for ResponseKind {
3714    fn from(value: ListPartitionReassignmentsResponse) -> ResponseKind {
3715        ResponseKind::ListPartitionReassignments(value)
3716    }
3717}
3718
3719#[cfg(feature = "messages_enums")]
3720impl From<OffsetDeleteResponse> for ResponseKind {
3721    fn from(value: OffsetDeleteResponse) -> ResponseKind {
3722        ResponseKind::OffsetDelete(value)
3723    }
3724}
3725
3726#[cfg(feature = "messages_enums")]
3727impl From<DescribeClientQuotasResponse> for ResponseKind {
3728    fn from(value: DescribeClientQuotasResponse) -> ResponseKind {
3729        ResponseKind::DescribeClientQuotas(value)
3730    }
3731}
3732
3733#[cfg(feature = "messages_enums")]
3734impl From<AlterClientQuotasResponse> for ResponseKind {
3735    fn from(value: AlterClientQuotasResponse) -> ResponseKind {
3736        ResponseKind::AlterClientQuotas(value)
3737    }
3738}
3739
3740#[cfg(feature = "messages_enums")]
3741impl From<DescribeUserScramCredentialsResponse> for ResponseKind {
3742    fn from(value: DescribeUserScramCredentialsResponse) -> ResponseKind {
3743        ResponseKind::DescribeUserScramCredentials(value)
3744    }
3745}
3746
3747#[cfg(feature = "messages_enums")]
3748impl From<AlterUserScramCredentialsResponse> for ResponseKind {
3749    fn from(value: AlterUserScramCredentialsResponse) -> ResponseKind {
3750        ResponseKind::AlterUserScramCredentials(value)
3751    }
3752}
3753
3754#[cfg(feature = "messages_enums")]
3755impl From<VoteResponse> for ResponseKind {
3756    fn from(value: VoteResponse) -> ResponseKind {
3757        ResponseKind::Vote(value)
3758    }
3759}
3760
3761#[cfg(feature = "messages_enums")]
3762impl From<BeginQuorumEpochResponse> for ResponseKind {
3763    fn from(value: BeginQuorumEpochResponse) -> ResponseKind {
3764        ResponseKind::BeginQuorumEpoch(value)
3765    }
3766}
3767
3768#[cfg(feature = "messages_enums")]
3769impl From<EndQuorumEpochResponse> for ResponseKind {
3770    fn from(value: EndQuorumEpochResponse) -> ResponseKind {
3771        ResponseKind::EndQuorumEpoch(value)
3772    }
3773}
3774
3775#[cfg(feature = "messages_enums")]
3776impl From<DescribeQuorumResponse> for ResponseKind {
3777    fn from(value: DescribeQuorumResponse) -> ResponseKind {
3778        ResponseKind::DescribeQuorum(value)
3779    }
3780}
3781
3782#[cfg(feature = "messages_enums")]
3783impl From<AlterPartitionResponse> for ResponseKind {
3784    fn from(value: AlterPartitionResponse) -> ResponseKind {
3785        ResponseKind::AlterPartition(value)
3786    }
3787}
3788
3789#[cfg(feature = "messages_enums")]
3790impl From<UpdateFeaturesResponse> for ResponseKind {
3791    fn from(value: UpdateFeaturesResponse) -> ResponseKind {
3792        ResponseKind::UpdateFeatures(value)
3793    }
3794}
3795
3796#[cfg(feature = "messages_enums")]
3797impl From<EnvelopeResponse> for ResponseKind {
3798    fn from(value: EnvelopeResponse) -> ResponseKind {
3799        ResponseKind::Envelope(value)
3800    }
3801}
3802
3803#[cfg(feature = "messages_enums")]
3804impl From<FetchSnapshotResponse> for ResponseKind {
3805    fn from(value: FetchSnapshotResponse) -> ResponseKind {
3806        ResponseKind::FetchSnapshot(value)
3807    }
3808}
3809
3810#[cfg(feature = "messages_enums")]
3811impl From<DescribeClusterResponse> for ResponseKind {
3812    fn from(value: DescribeClusterResponse) -> ResponseKind {
3813        ResponseKind::DescribeCluster(value)
3814    }
3815}
3816
3817#[cfg(feature = "messages_enums")]
3818impl From<DescribeProducersResponse> for ResponseKind {
3819    fn from(value: DescribeProducersResponse) -> ResponseKind {
3820        ResponseKind::DescribeProducers(value)
3821    }
3822}
3823
3824#[cfg(feature = "messages_enums")]
3825impl From<BrokerRegistrationResponse> for ResponseKind {
3826    fn from(value: BrokerRegistrationResponse) -> ResponseKind {
3827        ResponseKind::BrokerRegistration(value)
3828    }
3829}
3830
3831#[cfg(feature = "messages_enums")]
3832impl From<BrokerHeartbeatResponse> for ResponseKind {
3833    fn from(value: BrokerHeartbeatResponse) -> ResponseKind {
3834        ResponseKind::BrokerHeartbeat(value)
3835    }
3836}
3837
3838#[cfg(feature = "messages_enums")]
3839impl From<UnregisterBrokerResponse> for ResponseKind {
3840    fn from(value: UnregisterBrokerResponse) -> ResponseKind {
3841        ResponseKind::UnregisterBroker(value)
3842    }
3843}
3844
3845#[cfg(feature = "messages_enums")]
3846impl From<DescribeTransactionsResponse> for ResponseKind {
3847    fn from(value: DescribeTransactionsResponse) -> ResponseKind {
3848        ResponseKind::DescribeTransactions(value)
3849    }
3850}
3851
3852#[cfg(feature = "messages_enums")]
3853impl From<ListTransactionsResponse> for ResponseKind {
3854    fn from(value: ListTransactionsResponse) -> ResponseKind {
3855        ResponseKind::ListTransactions(value)
3856    }
3857}
3858
3859#[cfg(feature = "messages_enums")]
3860impl From<AllocateProducerIdsResponse> for ResponseKind {
3861    fn from(value: AllocateProducerIdsResponse) -> ResponseKind {
3862        ResponseKind::AllocateProducerIds(value)
3863    }
3864}
3865
3866#[cfg(feature = "messages_enums")]
3867impl From<ConsumerGroupHeartbeatResponse> for ResponseKind {
3868    fn from(value: ConsumerGroupHeartbeatResponse) -> ResponseKind {
3869        ResponseKind::ConsumerGroupHeartbeat(value)
3870    }
3871}
3872
3873#[cfg(feature = "messages_enums")]
3874impl From<ConsumerGroupDescribeResponse> for ResponseKind {
3875    fn from(value: ConsumerGroupDescribeResponse) -> ResponseKind {
3876        ResponseKind::ConsumerGroupDescribe(value)
3877    }
3878}
3879
3880#[cfg(feature = "messages_enums")]
3881impl From<ControllerRegistrationResponse> for ResponseKind {
3882    fn from(value: ControllerRegistrationResponse) -> ResponseKind {
3883        ResponseKind::ControllerRegistration(value)
3884    }
3885}
3886
3887#[cfg(feature = "messages_enums")]
3888impl From<GetTelemetrySubscriptionsResponse> for ResponseKind {
3889    fn from(value: GetTelemetrySubscriptionsResponse) -> ResponseKind {
3890        ResponseKind::GetTelemetrySubscriptions(value)
3891    }
3892}
3893
3894#[cfg(feature = "messages_enums")]
3895impl From<PushTelemetryResponse> for ResponseKind {
3896    fn from(value: PushTelemetryResponse) -> ResponseKind {
3897        ResponseKind::PushTelemetry(value)
3898    }
3899}
3900
3901#[cfg(feature = "messages_enums")]
3902impl From<AssignReplicasToDirsResponse> for ResponseKind {
3903    fn from(value: AssignReplicasToDirsResponse) -> ResponseKind {
3904        ResponseKind::AssignReplicasToDirs(value)
3905    }
3906}
3907
3908#[cfg(feature = "messages_enums")]
3909impl From<ListConfigResourcesResponse> for ResponseKind {
3910    fn from(value: ListConfigResourcesResponse) -> ResponseKind {
3911        ResponseKind::ListConfigResources(value)
3912    }
3913}
3914
3915#[cfg(feature = "messages_enums")]
3916impl From<DescribeTopicPartitionsResponse> for ResponseKind {
3917    fn from(value: DescribeTopicPartitionsResponse) -> ResponseKind {
3918        ResponseKind::DescribeTopicPartitions(value)
3919    }
3920}
3921
3922#[cfg(feature = "messages_enums")]
3923impl From<ShareGroupHeartbeatResponse> for ResponseKind {
3924    fn from(value: ShareGroupHeartbeatResponse) -> ResponseKind {
3925        ResponseKind::ShareGroupHeartbeat(value)
3926    }
3927}
3928
3929#[cfg(feature = "messages_enums")]
3930impl From<ShareGroupDescribeResponse> for ResponseKind {
3931    fn from(value: ShareGroupDescribeResponse) -> ResponseKind {
3932        ResponseKind::ShareGroupDescribe(value)
3933    }
3934}
3935
3936#[cfg(feature = "messages_enums")]
3937impl From<ShareFetchResponse> for ResponseKind {
3938    fn from(value: ShareFetchResponse) -> ResponseKind {
3939        ResponseKind::ShareFetch(value)
3940    }
3941}
3942
3943#[cfg(feature = "messages_enums")]
3944impl From<ShareAcknowledgeResponse> for ResponseKind {
3945    fn from(value: ShareAcknowledgeResponse) -> ResponseKind {
3946        ResponseKind::ShareAcknowledge(value)
3947    }
3948}
3949
3950#[cfg(feature = "messages_enums")]
3951impl From<AddRaftVoterResponse> for ResponseKind {
3952    fn from(value: AddRaftVoterResponse) -> ResponseKind {
3953        ResponseKind::AddRaftVoter(value)
3954    }
3955}
3956
3957#[cfg(feature = "messages_enums")]
3958impl From<RemoveRaftVoterResponse> for ResponseKind {
3959    fn from(value: RemoveRaftVoterResponse) -> ResponseKind {
3960        ResponseKind::RemoveRaftVoter(value)
3961    }
3962}
3963
3964#[cfg(feature = "messages_enums")]
3965impl From<UpdateRaftVoterResponse> for ResponseKind {
3966    fn from(value: UpdateRaftVoterResponse) -> ResponseKind {
3967        ResponseKind::UpdateRaftVoter(value)
3968    }
3969}
3970
3971#[cfg(feature = "messages_enums")]
3972impl From<InitializeShareGroupStateResponse> for ResponseKind {
3973    fn from(value: InitializeShareGroupStateResponse) -> ResponseKind {
3974        ResponseKind::InitializeShareGroupState(value)
3975    }
3976}
3977
3978#[cfg(feature = "messages_enums")]
3979impl From<ReadShareGroupStateResponse> for ResponseKind {
3980    fn from(value: ReadShareGroupStateResponse) -> ResponseKind {
3981        ResponseKind::ReadShareGroupState(value)
3982    }
3983}
3984
3985#[cfg(feature = "messages_enums")]
3986impl From<WriteShareGroupStateResponse> for ResponseKind {
3987    fn from(value: WriteShareGroupStateResponse) -> ResponseKind {
3988        ResponseKind::WriteShareGroupState(value)
3989    }
3990}
3991
3992#[cfg(feature = "messages_enums")]
3993impl From<DeleteShareGroupStateResponse> for ResponseKind {
3994    fn from(value: DeleteShareGroupStateResponse) -> ResponseKind {
3995        ResponseKind::DeleteShareGroupState(value)
3996    }
3997}
3998
3999#[cfg(feature = "messages_enums")]
4000impl From<ReadShareGroupStateSummaryResponse> for ResponseKind {
4001    fn from(value: ReadShareGroupStateSummaryResponse) -> ResponseKind {
4002        ResponseKind::ReadShareGroupStateSummary(value)
4003    }
4004}
4005
4006#[cfg(feature = "messages_enums")]
4007impl From<DescribeShareGroupOffsetsResponse> for ResponseKind {
4008    fn from(value: DescribeShareGroupOffsetsResponse) -> ResponseKind {
4009        ResponseKind::DescribeShareGroupOffsets(value)
4010    }
4011}
4012
4013#[cfg(feature = "messages_enums")]
4014impl From<AlterShareGroupOffsetsResponse> for ResponseKind {
4015    fn from(value: AlterShareGroupOffsetsResponse) -> ResponseKind {
4016        ResponseKind::AlterShareGroupOffsets(value)
4017    }
4018}
4019
4020#[cfg(feature = "messages_enums")]
4021impl From<DeleteShareGroupOffsetsResponse> for ResponseKind {
4022    fn from(value: DeleteShareGroupOffsetsResponse) -> ResponseKind {
4023        ResponseKind::DeleteShareGroupOffsets(value)
4024    }
4025}
4026
4027/// The replica id of the current leader or -1 if the leader is unknown.
4028#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Default, Copy)]
4029pub struct BrokerId(pub i32);
4030
4031impl From<i32> for BrokerId {
4032    fn from(other: i32) -> Self {
4033        Self(other)
4034    }
4035}
4036impl From<BrokerId> for i32 {
4037    fn from(other: BrokerId) -> Self {
4038        other.0
4039    }
4040}
4041impl std::borrow::Borrow<i32> for BrokerId {
4042    fn borrow(&self) -> &i32 {
4043        &self.0
4044    }
4045}
4046impl std::ops::Deref for BrokerId {
4047    type Target = i32;
4048    fn deref(&self) -> &Self::Target {
4049        &self.0
4050    }
4051}
4052impl std::cmp::PartialEq<i32> for BrokerId {
4053    fn eq(&self, other: &i32) -> bool {
4054        &self.0 == other
4055    }
4056}
4057impl std::cmp::PartialEq<BrokerId> for i32 {
4058    fn eq(&self, other: &BrokerId) -> bool {
4059        self == &other.0
4060    }
4061}
4062impl std::fmt::Debug for BrokerId {
4063    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4064        self.0.fmt(f)
4065    }
4066}
4067impl NewType<i32> for BrokerId {}
4068
4069/// The group identifier.
4070#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Default)]
4071pub struct GroupId(pub StrBytes);
4072
4073impl From<StrBytes> for GroupId {
4074    fn from(other: StrBytes) -> Self {
4075        Self(other)
4076    }
4077}
4078impl From<GroupId> for StrBytes {
4079    fn from(other: GroupId) -> Self {
4080        other.0
4081    }
4082}
4083impl std::borrow::Borrow<StrBytes> for GroupId {
4084    fn borrow(&self) -> &StrBytes {
4085        &self.0
4086    }
4087}
4088impl std::ops::Deref for GroupId {
4089    type Target = StrBytes;
4090    fn deref(&self) -> &Self::Target {
4091        &self.0
4092    }
4093}
4094impl std::cmp::PartialEq<StrBytes> for GroupId {
4095    fn eq(&self, other: &StrBytes) -> bool {
4096        &self.0 == other
4097    }
4098}
4099impl std::cmp::PartialEq<GroupId> for StrBytes {
4100    fn eq(&self, other: &GroupId) -> bool {
4101        self == &other.0
4102    }
4103}
4104impl std::fmt::Debug for GroupId {
4105    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4106        self.0.fmt(f)
4107    }
4108}
4109impl NewType<StrBytes> for GroupId {}
4110
4111/// The first producer ID in this range, inclusive.
4112#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Default, Copy)]
4113pub struct ProducerId(pub i64);
4114
4115impl From<i64> for ProducerId {
4116    fn from(other: i64) -> Self {
4117        Self(other)
4118    }
4119}
4120impl From<ProducerId> for i64 {
4121    fn from(other: ProducerId) -> Self {
4122        other.0
4123    }
4124}
4125impl std::borrow::Borrow<i64> for ProducerId {
4126    fn borrow(&self) -> &i64 {
4127        &self.0
4128    }
4129}
4130impl std::ops::Deref for ProducerId {
4131    type Target = i64;
4132    fn deref(&self) -> &Self::Target {
4133        &self.0
4134    }
4135}
4136impl std::cmp::PartialEq<i64> for ProducerId {
4137    fn eq(&self, other: &i64) -> bool {
4138        &self.0 == other
4139    }
4140}
4141impl std::cmp::PartialEq<ProducerId> for i64 {
4142    fn eq(&self, other: &ProducerId) -> bool {
4143        self == &other.0
4144    }
4145}
4146impl std::fmt::Debug for ProducerId {
4147    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4148        self.0.fmt(f)
4149    }
4150}
4151impl NewType<i64> for ProducerId {}
4152
4153/// The topic name.
4154#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Default)]
4155pub struct TopicName(pub StrBytes);
4156
4157impl From<StrBytes> for TopicName {
4158    fn from(other: StrBytes) -> Self {
4159        Self(other)
4160    }
4161}
4162impl From<TopicName> for StrBytes {
4163    fn from(other: TopicName) -> Self {
4164        other.0
4165    }
4166}
4167impl std::borrow::Borrow<StrBytes> for TopicName {
4168    fn borrow(&self) -> &StrBytes {
4169        &self.0
4170    }
4171}
4172impl std::ops::Deref for TopicName {
4173    type Target = StrBytes;
4174    fn deref(&self) -> &Self::Target {
4175        &self.0
4176    }
4177}
4178impl std::cmp::PartialEq<StrBytes> for TopicName {
4179    fn eq(&self, other: &StrBytes) -> bool {
4180        &self.0 == other
4181    }
4182}
4183impl std::cmp::PartialEq<TopicName> for StrBytes {
4184    fn eq(&self, other: &TopicName) -> bool {
4185        self == &other.0
4186    }
4187}
4188impl std::fmt::Debug for TopicName {
4189    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4190        self.0.fmt(f)
4191    }
4192}
4193impl NewType<StrBytes> for TopicName {}
4194
4195/// The transactional id.
4196#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Default)]
4197pub struct TransactionalId(pub StrBytes);
4198
4199impl From<StrBytes> for TransactionalId {
4200    fn from(other: StrBytes) -> Self {
4201        Self(other)
4202    }
4203}
4204impl From<TransactionalId> for StrBytes {
4205    fn from(other: TransactionalId) -> Self {
4206        other.0
4207    }
4208}
4209impl std::borrow::Borrow<StrBytes> for TransactionalId {
4210    fn borrow(&self) -> &StrBytes {
4211        &self.0
4212    }
4213}
4214impl std::ops::Deref for TransactionalId {
4215    type Target = StrBytes;
4216    fn deref(&self) -> &Self::Target {
4217        &self.0
4218    }
4219}
4220impl std::cmp::PartialEq<StrBytes> for TransactionalId {
4221    fn eq(&self, other: &StrBytes) -> bool {
4222        &self.0 == other
4223    }
4224}
4225impl std::cmp::PartialEq<TransactionalId> for StrBytes {
4226    fn eq(&self, other: &TransactionalId) -> bool {
4227        self == &other.0
4228    }
4229}
4230impl std::fmt::Debug for TransactionalId {
4231    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4232        self.0.fmt(f)
4233    }
4234}
4235impl NewType<StrBytes> for TransactionalId {}