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