crabka-protocol 0.3.2

Apache Kafka wire-protocol codec (4.3.0), with typed RecordBatch and zero-copy borrowed decode
Documentation
// AUTO-GENERATED by crabka-protocol-codegen against a9ce3221537b8653448750697915607dc7936cf3. Do not edit.
// To regenerate: ./tools/regenerate.sh

/// Kafka API key registry generated from the vendored schemas.
///
/// Each variant corresponds to a request/response pair defined in the schemas.
/// Variants with `validVersions = "none"` are omitted (reserved keys with no
/// currently-valid wire version).
///
/// The enum is `#[non_exhaustive]` so that adding variants for new Kafka API
/// keys in future schema updates is non-breaking.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, strum::IntoStaticStr)]
#[repr(i16)]
#[non_exhaustive]
pub enum ApiKey {
    /// `ProduceRequest` (versions 3–13).
    Produce = 0,
    /// `FetchRequest` (versions 4–18).
    Fetch = 1,
    /// `ListOffsetsRequest` (versions 1–11).
    ListOffsets = 2,
    /// `MetadataRequest` (versions 0–13).
    Metadata = 3,
    /// `OffsetCommitRequest` (versions 2–10).
    OffsetCommit = 8,
    /// `OffsetFetchRequest` (versions 1–10).
    OffsetFetch = 9,
    /// `FindCoordinatorRequest` (versions 0–6).
    FindCoordinator = 10,
    /// `JoinGroupRequest` (versions 0–9).
    JoinGroup = 11,
    /// `HeartbeatRequest` (versions 0–4).
    Heartbeat = 12,
    /// `LeaveGroupRequest` (versions 0–5).
    LeaveGroup = 13,
    /// `SyncGroupRequest` (versions 0–5).
    SyncGroup = 14,
    /// `DescribeGroupsRequest` (versions 0–6).
    DescribeGroups = 15,
    /// `ListGroupsRequest` (versions 0–5).
    ListGroups = 16,
    /// `SaslHandshakeRequest` (versions 0–1).
    SaslHandshake = 17,
    /// `ApiVersionsRequest` (versions 0–4).
    ApiVersions = 18,
    /// `CreateTopicsRequest` (versions 2–7).
    CreateTopics = 19,
    /// `DeleteTopicsRequest` (versions 1–6).
    DeleteTopics = 20,
    /// `DeleteRecordsRequest` (versions 0–2).
    DeleteRecords = 21,
    /// `InitProducerIdRequest` (versions 0–6).
    InitProducerId = 22,
    /// `OffsetForLeaderEpochRequest` (versions 2–4).
    OffsetForLeaderEpoch = 23,
    /// `AddPartitionsToTxnRequest` (versions 0–5).
    AddPartitionsToTxn = 24,
    /// `AddOffsetsToTxnRequest` (versions 0–4).
    AddOffsetsToTxn = 25,
    /// `EndTxnRequest` (versions 0–5).
    EndTxn = 26,
    /// `WriteTxnMarkersRequest` (versions 1–2).
    WriteTxnMarkers = 27,
    /// `TxnOffsetCommitRequest` (versions 0–5).
    TxnOffsetCommit = 28,
    /// `DescribeAclsRequest` (versions 1–3).
    DescribeAcls = 29,
    /// `CreateAclsRequest` (versions 1–3).
    CreateAcls = 30,
    /// `DeleteAclsRequest` (versions 1–3).
    DeleteAcls = 31,
    /// `DescribeConfigsRequest` (versions 1–4).
    DescribeConfigs = 32,
    /// `AlterConfigsRequest` (versions 0–2).
    AlterConfigs = 33,
    /// `AlterReplicaLogDirsRequest` (versions 1–2).
    AlterReplicaLogDirs = 34,
    /// `DescribeLogDirsRequest` (versions 1–5).
    DescribeLogDirs = 35,
    /// `SaslAuthenticateRequest` (versions 0–2).
    SaslAuthenticate = 36,
    /// `CreatePartitionsRequest` (versions 0–3).
    CreatePartitions = 37,
    /// `CreateDelegationTokenRequest` (versions 1–3).
    CreateDelegationToken = 38,
    /// `RenewDelegationTokenRequest` (versions 1–2).
    RenewDelegationToken = 39,
    /// `ExpireDelegationTokenRequest` (versions 1–2).
    ExpireDelegationToken = 40,
    /// `DescribeDelegationTokenRequest` (versions 1–3).
    DescribeDelegationToken = 41,
    /// `DeleteGroupsRequest` (versions 0–2).
    DeleteGroups = 42,
    /// `ElectLeadersRequest` (versions 0–2).
    ElectLeaders = 43,
    /// `IncrementalAlterConfigsRequest` (versions 0–1).
    IncrementalAlterConfigs = 44,
    /// `AlterPartitionReassignmentsRequest` (versions 0–1).
    AlterPartitionReassignments = 45,
    /// `ListPartitionReassignmentsRequest` (versions 0–0).
    ListPartitionReassignments = 46,
    /// `OffsetDeleteRequest` (versions 0–0).
    OffsetDelete = 47,
    /// `DescribeClientQuotasRequest` (versions 0–1).
    DescribeClientQuotas = 48,
    /// `AlterClientQuotasRequest` (versions 0–1).
    AlterClientQuotas = 49,
    /// `DescribeUserScramCredentialsRequest` (versions 0–0).
    DescribeUserScramCredentials = 50,
    /// `AlterUserScramCredentialsRequest` (versions 0–0).
    AlterUserScramCredentials = 51,
    /// `VoteRequest` (versions 0–2).
    Vote = 52,
    /// `BeginQuorumEpochRequest` (versions 0–1).
    BeginQuorumEpoch = 53,
    /// `EndQuorumEpochRequest` (versions 0–1).
    EndQuorumEpoch = 54,
    /// `DescribeQuorumRequest` (versions 0–2).
    DescribeQuorum = 55,
    /// `AlterPartitionRequest` (versions 2–3).
    AlterPartition = 56,
    /// `UpdateFeaturesRequest` (versions 0–2).
    UpdateFeatures = 57,
    /// `EnvelopeRequest` (versions 0–0).
    Envelope = 58,
    /// `FetchSnapshotRequest` (versions 0–1).
    FetchSnapshot = 59,
    /// `DescribeClusterRequest` (versions 0–2).
    DescribeCluster = 60,
    /// `DescribeProducersRequest` (versions 0–0).
    DescribeProducers = 61,
    /// `BrokerRegistrationRequest` (versions 0–4).
    BrokerRegistration = 62,
    /// `BrokerHeartbeatRequest` (versions 0–2).
    BrokerHeartbeat = 63,
    /// `UnregisterBrokerRequest` (versions 0–0).
    UnregisterBroker = 64,
    /// `DescribeTransactionsRequest` (versions 0–0).
    DescribeTransactions = 65,
    /// `ListTransactionsRequest` (versions 0–2).
    ListTransactions = 66,
    /// `AllocateProducerIdsRequest` (versions 0–0).
    AllocateProducerIds = 67,
    /// `ConsumerGroupHeartbeatRequest` (versions 0–1).
    ConsumerGroupHeartbeat = 68,
    /// `ConsumerGroupDescribeRequest` (versions 0–1).
    ConsumerGroupDescribe = 69,
    /// `ControllerRegistrationRequest` (versions 0–0).
    ControllerRegistration = 70,
    /// `GetTelemetrySubscriptionsRequest` (versions 0–0).
    GetTelemetrySubscriptions = 71,
    /// `PushTelemetryRequest` (versions 0–0).
    PushTelemetry = 72,
    /// `AssignReplicasToDirsRequest` (versions 0–0).
    AssignReplicasToDirs = 73,
    /// `ListConfigResourcesRequest` (versions 0–1).
    ListConfigResources = 74,
    /// `DescribeTopicPartitionsRequest` (versions 0–0).
    DescribeTopicPartitions = 75,
    /// `ShareGroupHeartbeatRequest` (versions 1–1).
    ShareGroupHeartbeat = 76,
    /// `ShareGroupDescribeRequest` (versions 1–1).
    ShareGroupDescribe = 77,
    /// `ShareFetchRequest` (versions 1–2).
    ShareFetch = 78,
    /// `ShareAcknowledgeRequest` (versions 1–2).
    ShareAcknowledge = 79,
    /// `AddRaftVoterRequest` (versions 0–1).
    AddRaftVoter = 80,
    /// `RemoveRaftVoterRequest` (versions 0–0).
    RemoveRaftVoter = 81,
    /// `UpdateRaftVoterRequest` (versions 0–0).
    UpdateRaftVoter = 82,
    /// `InitializeShareGroupStateRequest` (versions 0–0).
    InitializeShareGroupState = 83,
    /// `ReadShareGroupStateRequest` (versions 0–0).
    ReadShareGroupState = 84,
    /// `WriteShareGroupStateRequest` (versions 0–1).
    WriteShareGroupState = 85,
    /// `DeleteShareGroupStateRequest` (versions 0–0).
    DeleteShareGroupState = 86,
    /// `ReadShareGroupStateSummaryRequest` (versions 0–1).
    ReadShareGroupStateSummary = 87,
    /// `StreamsGroupHeartbeatRequest` (versions 0–0).
    StreamsGroupHeartbeat = 88,
    /// `StreamsGroupDescribeRequest` (versions 0–0).
    StreamsGroupDescribe = 89,
    /// `DescribeShareGroupOffsetsRequest` (versions 0–1).
    DescribeShareGroupOffsets = 90,
    /// `AlterShareGroupOffsetsRequest` (versions 0–0).
    AlterShareGroupOffsets = 91,
    /// `DeleteShareGroupOffsetsRequest` (versions 0–0).
    DeleteShareGroupOffsets = 92,
    /// `GetReplicaLogInfoRequest` (versions 0–0).
    GetReplicaLogInfo = 93,
}

impl ApiKey {
    /// All known API keys, in ascending numeric order.
    pub const ALL: &'static [ApiKey] = &[
        ApiKey::Produce,
        ApiKey::Fetch,
        ApiKey::ListOffsets,
        ApiKey::Metadata,
        ApiKey::OffsetCommit,
        ApiKey::OffsetFetch,
        ApiKey::FindCoordinator,
        ApiKey::JoinGroup,
        ApiKey::Heartbeat,
        ApiKey::LeaveGroup,
        ApiKey::SyncGroup,
        ApiKey::DescribeGroups,
        ApiKey::ListGroups,
        ApiKey::SaslHandshake,
        ApiKey::ApiVersions,
        ApiKey::CreateTopics,
        ApiKey::DeleteTopics,
        ApiKey::DeleteRecords,
        ApiKey::InitProducerId,
        ApiKey::OffsetForLeaderEpoch,
        ApiKey::AddPartitionsToTxn,
        ApiKey::AddOffsetsToTxn,
        ApiKey::EndTxn,
        ApiKey::WriteTxnMarkers,
        ApiKey::TxnOffsetCommit,
        ApiKey::DescribeAcls,
        ApiKey::CreateAcls,
        ApiKey::DeleteAcls,
        ApiKey::DescribeConfigs,
        ApiKey::AlterConfigs,
        ApiKey::AlterReplicaLogDirs,
        ApiKey::DescribeLogDirs,
        ApiKey::SaslAuthenticate,
        ApiKey::CreatePartitions,
        ApiKey::CreateDelegationToken,
        ApiKey::RenewDelegationToken,
        ApiKey::ExpireDelegationToken,
        ApiKey::DescribeDelegationToken,
        ApiKey::DeleteGroups,
        ApiKey::ElectLeaders,
        ApiKey::IncrementalAlterConfigs,
        ApiKey::AlterPartitionReassignments,
        ApiKey::ListPartitionReassignments,
        ApiKey::OffsetDelete,
        ApiKey::DescribeClientQuotas,
        ApiKey::AlterClientQuotas,
        ApiKey::DescribeUserScramCredentials,
        ApiKey::AlterUserScramCredentials,
        ApiKey::Vote,
        ApiKey::BeginQuorumEpoch,
        ApiKey::EndQuorumEpoch,
        ApiKey::DescribeQuorum,
        ApiKey::AlterPartition,
        ApiKey::UpdateFeatures,
        ApiKey::Envelope,
        ApiKey::FetchSnapshot,
        ApiKey::DescribeCluster,
        ApiKey::DescribeProducers,
        ApiKey::BrokerRegistration,
        ApiKey::BrokerHeartbeat,
        ApiKey::UnregisterBroker,
        ApiKey::DescribeTransactions,
        ApiKey::ListTransactions,
        ApiKey::AllocateProducerIds,
        ApiKey::ConsumerGroupHeartbeat,
        ApiKey::ConsumerGroupDescribe,
        ApiKey::ControllerRegistration,
        ApiKey::GetTelemetrySubscriptions,
        ApiKey::PushTelemetry,
        ApiKey::AssignReplicasToDirs,
        ApiKey::ListConfigResources,
        ApiKey::DescribeTopicPartitions,
        ApiKey::ShareGroupHeartbeat,
        ApiKey::ShareGroupDescribe,
        ApiKey::ShareFetch,
        ApiKey::ShareAcknowledge,
        ApiKey::AddRaftVoter,
        ApiKey::RemoveRaftVoter,
        ApiKey::UpdateRaftVoter,
        ApiKey::InitializeShareGroupState,
        ApiKey::ReadShareGroupState,
        ApiKey::WriteShareGroupState,
        ApiKey::DeleteShareGroupState,
        ApiKey::ReadShareGroupStateSummary,
        ApiKey::StreamsGroupHeartbeat,
        ApiKey::StreamsGroupDescribe,
        ApiKey::DescribeShareGroupOffsets,
        ApiKey::AlterShareGroupOffsets,
        ApiKey::DeleteShareGroupOffsets,
        ApiKey::GetReplicaLogInfo,
    ];

    /// Resolve from numeric key; returns `None` for unknown keys.
    pub fn from_i16(k: i16) -> Option<ApiKey> {
        match k {
            0 => Some(ApiKey::Produce),
            1 => Some(ApiKey::Fetch),
            2 => Some(ApiKey::ListOffsets),
            3 => Some(ApiKey::Metadata),
            8 => Some(ApiKey::OffsetCommit),
            9 => Some(ApiKey::OffsetFetch),
            10 => Some(ApiKey::FindCoordinator),
            11 => Some(ApiKey::JoinGroup),
            12 => Some(ApiKey::Heartbeat),
            13 => Some(ApiKey::LeaveGroup),
            14 => Some(ApiKey::SyncGroup),
            15 => Some(ApiKey::DescribeGroups),
            16 => Some(ApiKey::ListGroups),
            17 => Some(ApiKey::SaslHandshake),
            18 => Some(ApiKey::ApiVersions),
            19 => Some(ApiKey::CreateTopics),
            20 => Some(ApiKey::DeleteTopics),
            21 => Some(ApiKey::DeleteRecords),
            22 => Some(ApiKey::InitProducerId),
            23 => Some(ApiKey::OffsetForLeaderEpoch),
            24 => Some(ApiKey::AddPartitionsToTxn),
            25 => Some(ApiKey::AddOffsetsToTxn),
            26 => Some(ApiKey::EndTxn),
            27 => Some(ApiKey::WriteTxnMarkers),
            28 => Some(ApiKey::TxnOffsetCommit),
            29 => Some(ApiKey::DescribeAcls),
            30 => Some(ApiKey::CreateAcls),
            31 => Some(ApiKey::DeleteAcls),
            32 => Some(ApiKey::DescribeConfigs),
            33 => Some(ApiKey::AlterConfigs),
            34 => Some(ApiKey::AlterReplicaLogDirs),
            35 => Some(ApiKey::DescribeLogDirs),
            36 => Some(ApiKey::SaslAuthenticate),
            37 => Some(ApiKey::CreatePartitions),
            38 => Some(ApiKey::CreateDelegationToken),
            39 => Some(ApiKey::RenewDelegationToken),
            40 => Some(ApiKey::ExpireDelegationToken),
            41 => Some(ApiKey::DescribeDelegationToken),
            42 => Some(ApiKey::DeleteGroups),
            43 => Some(ApiKey::ElectLeaders),
            44 => Some(ApiKey::IncrementalAlterConfigs),
            45 => Some(ApiKey::AlterPartitionReassignments),
            46 => Some(ApiKey::ListPartitionReassignments),
            47 => Some(ApiKey::OffsetDelete),
            48 => Some(ApiKey::DescribeClientQuotas),
            49 => Some(ApiKey::AlterClientQuotas),
            50 => Some(ApiKey::DescribeUserScramCredentials),
            51 => Some(ApiKey::AlterUserScramCredentials),
            52 => Some(ApiKey::Vote),
            53 => Some(ApiKey::BeginQuorumEpoch),
            54 => Some(ApiKey::EndQuorumEpoch),
            55 => Some(ApiKey::DescribeQuorum),
            56 => Some(ApiKey::AlterPartition),
            57 => Some(ApiKey::UpdateFeatures),
            58 => Some(ApiKey::Envelope),
            59 => Some(ApiKey::FetchSnapshot),
            60 => Some(ApiKey::DescribeCluster),
            61 => Some(ApiKey::DescribeProducers),
            62 => Some(ApiKey::BrokerRegistration),
            63 => Some(ApiKey::BrokerHeartbeat),
            64 => Some(ApiKey::UnregisterBroker),
            65 => Some(ApiKey::DescribeTransactions),
            66 => Some(ApiKey::ListTransactions),
            67 => Some(ApiKey::AllocateProducerIds),
            68 => Some(ApiKey::ConsumerGroupHeartbeat),
            69 => Some(ApiKey::ConsumerGroupDescribe),
            70 => Some(ApiKey::ControllerRegistration),
            71 => Some(ApiKey::GetTelemetrySubscriptions),
            72 => Some(ApiKey::PushTelemetry),
            73 => Some(ApiKey::AssignReplicasToDirs),
            74 => Some(ApiKey::ListConfigResources),
            75 => Some(ApiKey::DescribeTopicPartitions),
            76 => Some(ApiKey::ShareGroupHeartbeat),
            77 => Some(ApiKey::ShareGroupDescribe),
            78 => Some(ApiKey::ShareFetch),
            79 => Some(ApiKey::ShareAcknowledge),
            80 => Some(ApiKey::AddRaftVoter),
            81 => Some(ApiKey::RemoveRaftVoter),
            82 => Some(ApiKey::UpdateRaftVoter),
            83 => Some(ApiKey::InitializeShareGroupState),
            84 => Some(ApiKey::ReadShareGroupState),
            85 => Some(ApiKey::WriteShareGroupState),
            86 => Some(ApiKey::DeleteShareGroupState),
            87 => Some(ApiKey::ReadShareGroupStateSummary),
            88 => Some(ApiKey::StreamsGroupHeartbeat),
            89 => Some(ApiKey::StreamsGroupDescribe),
            90 => Some(ApiKey::DescribeShareGroupOffsets),
            91 => Some(ApiKey::AlterShareGroupOffsets),
            92 => Some(ApiKey::DeleteShareGroupOffsets),
            93 => Some(ApiKey::GetReplicaLogInfo),
            _ => None,
        }
    }
}