Packages
kafka_protocol
2.1.0
4.3.4
4.3.3
4.3.2
4.3.1
4.3.0
4.2.9
4.2.8
4.2.7
4.2.6
4.2.5
4.2.4
4.2.3
4.2.2
4.2.1
4.2.0
4.1.10
4.1.9
4.1.8
4.1.7
4.1.6
4.1.5
4.1.4
4.1.3
4.1.2
4.1.1
4.1.0
4.0.3
4.0.2
4.0.1
3.0.1
3.0.0
2.4.1
2.3.6
2.3.5
2.3.4
2.3.3
2.3.2
2.3.1
2.3.0
2.2.9
2.2.8
2.2.7
2.2.6
2.2.5
2.2.4
2.2.3
2.2.2
2.2.1
2.2.0
2.1.2
2.1.1
2.1.0
2.0.1
2.0.0
1.1.3
1.1.2
1.1.1
1.1.0
1.0.0
0.9.2
0.9.1
0.9.0
0.8.0
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.0
0.4.0
0.3.2
0.3.1
0.2.3
Kafka protocol library for Erlang/Elixir
Current section
Files
Jump to
Current section
Files
src/kpro_schema.erl
%% generated code, do not edit!
-module(kpro_schema).
-export([all_apis/0, vsn_range/1, api_key/1, req/2, rsp/2, ec/1]).
all_apis() ->
[produce,
fetch,
list_offsets,
metadata,
offset_commit,
offset_fetch,
find_coordinator,
join_group,
heartbeat,
leave_group,
sync_group,
describe_groups,
list_groups,
sasl_handshake,
api_versions,
create_topics,
delete_topics,
delete_records,
init_producer_id,
add_partitions_to_txn,
add_offsets_to_txn,
end_txn,
txn_offset_commit,
describe_acls,
create_acls,
delete_acls,
describe_configs,
alter_configs,
alter_replica_log_dirs,
describe_log_dirs,
sasl_authenticate,
create_partitions,
create_delegation_token,
renew_delegation_token,
expire_delegation_token,
describe_delegation_token,
delete_groups].
vsn_range(produce) -> {0, 5};
vsn_range(fetch) -> {0, 7};
vsn_range(list_offsets) -> {0, 2};
vsn_range(metadata) -> {0, 5};
vsn_range(offset_commit) -> {0, 3};
vsn_range(offset_fetch) -> {0, 3};
vsn_range(find_coordinator) -> {0, 1};
vsn_range(join_group) -> {0, 2};
vsn_range(heartbeat) -> {0, 1};
vsn_range(leave_group) -> {0, 1};
vsn_range(sync_group) -> {0, 1};
vsn_range(describe_groups) -> {0, 1};
vsn_range(list_groups) -> {0, 1};
vsn_range(sasl_handshake) -> {0, 1};
vsn_range(api_versions) -> {0, 1};
vsn_range(create_topics) -> {0, 2};
vsn_range(delete_topics) -> {0, 1};
vsn_range(delete_records) -> {0, 0};
vsn_range(init_producer_id) -> {0, 0};
vsn_range(add_partitions_to_txn) -> {0, 0};
vsn_range(add_offsets_to_txn) -> {0, 0};
vsn_range(end_txn) -> {0, 0};
vsn_range(txn_offset_commit) -> {0, 0};
vsn_range(describe_acls) -> {0, 0};
vsn_range(create_acls) -> {0, 0};
vsn_range(delete_acls) -> {0, 0};
vsn_range(describe_configs) -> {0, 1};
vsn_range(alter_configs) -> {0, 0};
vsn_range(alter_replica_log_dirs) -> {0, 0};
vsn_range(describe_log_dirs) -> {0, 0};
vsn_range(sasl_authenticate) -> {0, 0};
vsn_range(create_partitions) -> {0, 0};
vsn_range(create_delegation_token) -> {0, 0};
vsn_range(renew_delegation_token) -> {0, 0};
vsn_range(expire_delegation_token) -> {0, 0};
vsn_range(describe_delegation_token) -> {0, 0};
vsn_range(delete_groups) -> {0, 0};
vsn_range(_) -> false.
api_key(produce) -> 0;
api_key(0) -> produce;
api_key(fetch) -> 1;
api_key(1) -> fetch;
api_key(list_offsets) -> 2;
api_key(2) -> list_offsets;
api_key(metadata) -> 3;
api_key(3) -> metadata;
api_key(offset_commit) -> 8;
api_key(8) -> offset_commit;
api_key(offset_fetch) -> 9;
api_key(9) -> offset_fetch;
api_key(find_coordinator) -> 10;
api_key(10) -> find_coordinator;
api_key(join_group) -> 11;
api_key(11) -> join_group;
api_key(heartbeat) -> 12;
api_key(12) -> heartbeat;
api_key(leave_group) -> 13;
api_key(13) -> leave_group;
api_key(sync_group) -> 14;
api_key(14) -> sync_group;
api_key(describe_groups) -> 15;
api_key(15) -> describe_groups;
api_key(list_groups) -> 16;
api_key(16) -> list_groups;
api_key(sasl_handshake) -> 17;
api_key(17) -> sasl_handshake;
api_key(api_versions) -> 18;
api_key(18) -> api_versions;
api_key(create_topics) -> 19;
api_key(19) -> create_topics;
api_key(delete_topics) -> 20;
api_key(20) -> delete_topics;
api_key(delete_records) -> 21;
api_key(21) -> delete_records;
api_key(init_producer_id) -> 22;
api_key(22) -> init_producer_id;
api_key(add_partitions_to_txn) -> 24;
api_key(24) -> add_partitions_to_txn;
api_key(add_offsets_to_txn) -> 25;
api_key(25) -> add_offsets_to_txn;
api_key(end_txn) -> 26;
api_key(26) -> end_txn;
api_key(txn_offset_commit) -> 28;
api_key(28) -> txn_offset_commit;
api_key(describe_acls) -> 29;
api_key(29) -> describe_acls;
api_key(create_acls) -> 30;
api_key(30) -> create_acls;
api_key(delete_acls) -> 31;
api_key(31) -> delete_acls;
api_key(describe_configs) -> 32;
api_key(32) -> describe_configs;
api_key(alter_configs) -> 33;
api_key(33) -> alter_configs;
api_key(alter_replica_log_dirs) -> 34;
api_key(34) -> alter_replica_log_dirs;
api_key(describe_log_dirs) -> 35;
api_key(35) -> describe_log_dirs;
api_key(sasl_authenticate) -> 36;
api_key(36) -> sasl_authenticate;
api_key(create_partitions) -> 37;
api_key(37) -> create_partitions;
api_key(create_delegation_token) -> 38;
api_key(38) -> create_delegation_token;
api_key(renew_delegation_token) -> 39;
api_key(39) -> renew_delegation_token;
api_key(expire_delegation_token) -> 40;
api_key(40) -> expire_delegation_token;
api_key(describe_delegation_token) -> 41;
api_key(41) -> describe_delegation_token;
api_key(delete_groups) -> 42;
api_key(42) -> delete_groups;
api_key(API) -> erlang:error({not_supported, API}).
req(produce, V) when V >= 0, V =< 2 ->
[{acks,int16},
{timeout,int32},
{topic_data,{array,[{topic,string},
{data,{array,[{partition,int32},
{record_set,records}]}}]}}];
req(produce, V) when V >= 3, V =< 5 ->
[{transactional_id,nullable_string},
{acks,int16},
{timeout,int32},
{topic_data,{array,[{topic,string},
{data,{array,[{partition,int32},
{record_set,records}]}}]}}];
req(fetch, V) when V >= 0, V =< 2 ->
[{replica_id,int32},
{max_wait_time,int32},
{min_bytes,int32},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{fetch_offset,int64},
{max_bytes,int32}]}}]}}];
req(fetch, 3) ->
[{replica_id,int32},
{max_wait_time,int32},
{min_bytes,int32},
{max_bytes,int32},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{fetch_offset,int64},
{max_bytes,int32}]}}]}}];
req(fetch, 4) ->
[{replica_id,int32},
{max_wait_time,int32},
{min_bytes,int32},
{max_bytes,int32},
{isolation_level,int8},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{fetch_offset,int64},
{max_bytes,int32}]}}]}}];
req(fetch, V) when V >= 5, V =< 6 ->
[{replica_id,int32},
{max_wait_time,int32},
{min_bytes,int32},
{max_bytes,int32},
{isolation_level,int8},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{fetch_offset,int64},
{log_start_offset,int64},
{max_bytes,int32}]}}]}}];
req(fetch, 7) ->
[{replica_id,int32},
{max_wait_time,int32},
{min_bytes,int32},
{max_bytes,int32},
{isolation_level,int8},
{session_id,int32},
{epoch,int32},
{topics,
{array,
[{topic,string},
{partitions,
{array,
[{partition,int32},
{fetch_offset,int64},
{log_start_offset,int64},
{max_bytes,int32}]}}]}},
{forgetten_topics_data,
{array,
[{topic,string},
{partitions,
{array,
[{partition,int32},
{fetch_offset,int64},
{log_start_offset,int64},
{max_bytes,int32}]}}]}}];
req(list_offsets, 0) ->
[{replica_id,int32},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{timestamp,int64},
{max_num_offsets,int32}]}}]}}];
req(list_offsets, 1) ->
[{replica_id,int32},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{timestamp,int64}]}}]}}];
req(list_offsets, 2) ->
[{replica_id,int32},
{isolation_level,int8},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{timestamp,int64}]}}]}}];
req(metadata, V) when V >= 0, V =< 3 ->
[{topics,{array,string}}];
req(metadata, V) when V >= 4, V =< 5 ->
[{topics,{array,string}},{allow_auto_topic_creation,boolean}];
req(offset_commit, 0) ->
[{group_id,string},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{offset,int64},
{metadata,nullable_string}]}}]}}];
req(offset_commit, 1) ->
[{group_id,string},
{generation_id,int32},
{member_id,string},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{offset,int64},
{timestamp,int64},
{metadata,nullable_string}]}}]}}];
req(offset_commit, V) when V >= 2, V =< 3 ->
[{group_id,string},
{generation_id,int32},
{member_id,string},
{retention_time,int64},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{offset,int64},
{metadata,nullable_string}]}}]}}];
req(offset_fetch, V) when V >= 0, V =< 3 ->
[{group_id,string},
{topics,{array,[{topic,string},{partitions,{array,[{partition,int32}]}}]}}];
req(find_coordinator, 0) ->
[{group_id,string}];
req(find_coordinator, 1) ->
[{coordinator_key,string},{coordinator_type,int8}];
req(join_group, 0) ->
[{group_id,string},
{session_timeout,int32},
{member_id,string},
{protocol_type,string},
{group_protocols,{array,[{protocol_name,string},
{protocol_metadata,bytes}]}}];
req(join_group, V) when V >= 1, V =< 2 ->
[{group_id,string},
{session_timeout,int32},
{rebalance_timeout,int32},
{member_id,string},
{protocol_type,string},
{group_protocols,{array,[{protocol_name,string},
{protocol_metadata,bytes}]}}];
req(heartbeat, V) when V >= 0, V =< 1 ->
[{group_id,string},{generation_id,int32},{member_id,string}];
req(leave_group, V) when V >= 0, V =< 1 ->
[{group_id,string},{member_id,string}];
req(sync_group, V) when V >= 0, V =< 1 ->
[{group_id,string},
{generation_id,int32},
{member_id,string},
{group_assignment,{array,[{member_id,string},{member_assignment,bytes}]}}];
req(describe_groups, V) when V >= 0, V =< 1 ->
[{group_ids,{array,string}}];
req(list_groups, V) when V >= 0, V =< 1 ->
[];
req(sasl_handshake, V) when V >= 0, V =< 1 ->
[{mechanism,string}];
req(api_versions, V) when V >= 0, V =< 1 ->
[];
req(create_topics, 0) ->
[{create_topic_requests,
{array,
[{topic,string},
{num_partitions,int32},
{replication_factor,int16},
{replica_assignment,
{array,[{partition,int32},{replicas,{array,int32}}]}},
{config_entries,
{array,
[{config_name,string},{config_value,nullable_string}]}}]}},
{timeout,int32}];
req(create_topics, V) when V >= 1, V =< 2 ->
[{create_topic_requests,
{array,
[{topic,string},
{num_partitions,int32},
{replication_factor,int16},
{replica_assignment,
{array,[{partition,int32},{replicas,{array,int32}}]}},
{config_entries,
{array,
[{config_name,string},{config_value,nullable_string}]}}]}},
{timeout,int32},
{validate_only,boolean}];
req(delete_topics, V) when V >= 0, V =< 1 ->
[{topics,{array,string}},{timeout,int32}];
req(delete_records, 0) ->
[{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},{offset,int64}]}}]}},
{timeout,int32}];
req(init_producer_id, 0) ->
[{transactional_id,nullable_string},{transaction_timeout_ms,int32}];
req(add_partitions_to_txn, 0) ->
[{transactional_id,string},
{producer_id,int64},
{producer_epoch,int16},
{topics,{array,[{topic,string},{partitions,{array,int32}}]}}];
req(add_offsets_to_txn, 0) ->
[{transactional_id,string},
{producer_id,int64},
{producer_epoch,int16},
{group_id,string}];
req(end_txn, 0) ->
[{transactional_id,string},
{producer_id,int64},
{producer_epoch,int16},
{transaction_result,boolean}];
req(txn_offset_commit, 0) ->
[{transactional_id,string},
{group_id,string},
{producer_id,int64},
{producer_epoch,int16},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{offset,int64},
{metadata,nullable_string}]}}]}}];
req(describe_acls, 0) ->
[{resource_type,int8},
{resource_name,nullable_string},
{principal,nullable_string},
{host,nullable_string},
{operation,int8},
{permission_type,int8}];
req(create_acls, 0) ->
[{creations,{array,[{resource_type,int8},
{resource_name,string},
{principal,string},
{host,string},
{operation,int8},
{permission_type,int8}]}}];
req(delete_acls, 0) ->
[{filters,{array,[{resource_type,int8},
{resource_name,nullable_string},
{principal,nullable_string},
{host,nullable_string},
{operation,int8},
{permission_type,int8}]}}];
req(describe_configs, 0) ->
[{resources,{array,[{resource_type,int8},
{resource_name,string},
{config_names,{array,string}}]}}];
req(describe_configs, 1) ->
[{resources,{array,[{resource_type,int8},
{resource_name,string},
{config_names,{array,string}}]}},
{include_synonyms,boolean}];
req(alter_configs, 0) ->
[{resources,
{array,
[{resource_type,int8},
{resource_name,string},
{config_entries,
{array,
[{config_name,string},{config_value,nullable_string}]}}]}},
{validate_only,boolean}];
req(alter_replica_log_dirs, 0) ->
[{log_dirs,{array,[{log_dir,string},
{topics,{array,[{topic,string},
{partitions,{array,int32}}]}}]}}];
req(describe_log_dirs, 0) ->
[{topics,{array,[{topic,string},{partitions,{array,int32}}]}}];
req(sasl_authenticate, 0) ->
[{sasl_auth_bytes,bytes}];
req(create_partitions, 0) ->
[{topic_partitions,
{array,
[{topic,string},
{new_partitions,
[{count,int32},{assignment,{array,{array,int32}}}]}]}},
{timeout,int32},
{validate_only,boolean}];
req(create_delegation_token, 0) ->
[{renewers,{array,[{principal_type,string},{name,string}]}},
{max_life_time,int64}];
req(renew_delegation_token, 0) ->
[{hmac,bytes},{renew_time_period,int64}];
req(expire_delegation_token, 0) ->
[{hmac,bytes},{expiry_time_period,int64}];
req(describe_delegation_token, 0) ->
[{owners,{array,[{principal_type,string},{name,string}]}}];
req(delete_groups, 0) ->
[{groups,{array,string}}].
rsp(produce, 0) ->
[{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition,int32},
{error_code,int16},
{base_offset,int64}]}}]}}];
rsp(produce, 1) ->
[{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition,int32},
{error_code,int16},
{base_offset,int64}]}}]}},
{throttle_time_ms,int32}];
rsp(produce, V) when V >= 2, V =< 4 ->
[{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition,int32},
{error_code,int16},
{base_offset,int64},
{log_append_time,int64}]}}]}},
{throttle_time_ms,int32}];
rsp(produce, 5) ->
[{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition,int32},
{error_code,int16},
{base_offset,int64},
{log_append_time,int64},
{log_start_offset,int64}]}}]}},
{throttle_time_ms,int32}];
rsp(fetch, 0) ->
[{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition_header,
[{partition,int32},
{error_code,int16},
{high_watermark,int64}]},
{record_set,records}]}}]}}];
rsp(fetch, V) when V >= 1, V =< 3 ->
[{throttle_time_ms,int32},
{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition_header,
[{partition,int32},
{error_code,int16},
{high_watermark,int64}]},
{record_set,records}]}}]}}];
rsp(fetch, 4) ->
[{throttle_time_ms,int32},
{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition_header,
[{partition,int32},
{error_code,int16},
{high_watermark,int64},
{last_stable_offset,int64},
{aborted_transactions,
{array,
[{producer_id,int64},
{first_offset,int64}]}}]},
{record_set,records}]}}]}}];
rsp(fetch, V) when V >= 5, V =< 6 ->
[{throttle_time_ms,int32},
{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition_header,
[{partition,int32},
{error_code,int16},
{high_watermark,int64},
{last_stable_offset,int64},
{log_start_offset,int64},
{aborted_transactions,
{array,
[{producer_id,int64},
{first_offset,int64}]}}]},
{record_set,records}]}}]}}];
rsp(fetch, 7) ->
[{throttle_time_ms,int32},
{error_code,int16},
{session_id,int32},
{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition_header,
[{partition,int32},
{error_code,int16},
{high_watermark,int64},
{last_stable_offset,int64},
{log_start_offset,int64},
{aborted_transactions,
{array,
[{producer_id,int64},
{first_offset,int64}]}}]},
{record_set,records}]}}]}}];
rsp(list_offsets, 0) ->
[{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition,int32},
{error_code,int16},
{offsets,{array,int64}}]}}]}}];
rsp(list_offsets, 1) ->
[{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition,int32},
{error_code,int16},
{timestamp,int64},
{offset,int64}]}}]}}];
rsp(list_offsets, 2) ->
[{throttle_time_ms,int32},
{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition,int32},
{error_code,int16},
{timestamp,int64},
{offset,int64}]}}]}}];
rsp(metadata, 0) ->
[{brokers,{array,[{node_id,int32},{host,string},{port,int32}]}},
{topic_metadata,
{array,
[{error_code,int16},
{topic,string},
{partition_metadata,
{array,
[{error_code,int16},
{partition,int32},
{leader,int32},
{replicas,{array,int32}},
{isr,{array,int32}}]}}]}}];
rsp(metadata, 1) ->
[{brokers,
{array,
[{node_id,int32},
{host,string},
{port,int32},
{rack,nullable_string}]}},
{controller_id,int32},
{topic_metadata,
{array,
[{error_code,int16},
{topic,string},
{is_internal,boolean},
{partition_metadata,
{array,
[{error_code,int16},
{partition,int32},
{leader,int32},
{replicas,{array,int32}},
{isr,{array,int32}}]}}]}}];
rsp(metadata, 2) ->
[{brokers,
{array,
[{node_id,int32},
{host,string},
{port,int32},
{rack,nullable_string}]}},
{cluster_id,nullable_string},
{controller_id,int32},
{topic_metadata,
{array,
[{error_code,int16},
{topic,string},
{is_internal,boolean},
{partition_metadata,
{array,
[{error_code,int16},
{partition,int32},
{leader,int32},
{replicas,{array,int32}},
{isr,{array,int32}}]}}]}}];
rsp(metadata, V) when V >= 3, V =< 4 ->
[{throttle_time_ms,int32},
{brokers,
{array,
[{node_id,int32},
{host,string},
{port,int32},
{rack,nullable_string}]}},
{cluster_id,nullable_string},
{controller_id,int32},
{topic_metadata,
{array,
[{error_code,int16},
{topic,string},
{is_internal,boolean},
{partition_metadata,
{array,
[{error_code,int16},
{partition,int32},
{leader,int32},
{replicas,{array,int32}},
{isr,{array,int32}}]}}]}}];
rsp(metadata, 5) ->
[{throttle_time_ms,int32},
{brokers,
{array,
[{node_id,int32},
{host,string},
{port,int32},
{rack,nullable_string}]}},
{cluster_id,nullable_string},
{controller_id,int32},
{topic_metadata,
{array,
[{error_code,int16},
{topic,string},
{is_internal,boolean},
{partition_metadata,
{array,
[{error_code,int16},
{partition,int32},
{leader,int32},
{replicas,{array,int32}},
{isr,{array,int32}},
{offline_replicas,{array,int32}}]}}]}}];
rsp(offset_commit, V) when V >= 0, V =< 2 ->
[{responses,
{array,
[{topic,string},
{partition_responses,
{array,[{partition,int32},{error_code,int16}]}}]}}];
rsp(offset_commit, 3) ->
[{throttle_time_ms,int32},
{responses,
{array,
[{topic,string},
{partition_responses,
{array,[{partition,int32},{error_code,int16}]}}]}}];
rsp(offset_fetch, V) when V >= 0, V =< 1 ->
[{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition,int32},
{offset,int64},
{metadata,nullable_string},
{error_code,int16}]}}]}}];
rsp(offset_fetch, 2) ->
[{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition,int32},
{offset,int64},
{metadata,nullable_string},
{error_code,int16}]}}]}},
{error_code,int16}];
rsp(offset_fetch, 3) ->
[{throttle_time_ms,int32},
{responses,
{array,
[{topic,string},
{partition_responses,
{array,
[{partition,int32},
{offset,int64},
{metadata,nullable_string},
{error_code,int16}]}}]}},
{error_code,int16}];
rsp(find_coordinator, 0) ->
[{error_code,int16},
{coordinator,[{node_id,int32},{host,string},{port,int32}]}];
rsp(find_coordinator, 1) ->
[{throttle_time_ms,int32},
{error_code,int16},
{error_message,nullable_string},
{coordinator,[{node_id,int32},{host,string},{port,int32}]}];
rsp(join_group, V) when V >= 0, V =< 1 ->
[{error_code,int16},
{generation_id,int32},
{group_protocol,string},
{leader_id,string},
{member_id,string},
{members,{array,[{member_id,string},{member_metadata,bytes}]}}];
rsp(join_group, 2) ->
[{throttle_time_ms,int32},
{error_code,int16},
{generation_id,int32},
{group_protocol,string},
{leader_id,string},
{member_id,string},
{members,{array,[{member_id,string},{member_metadata,bytes}]}}];
rsp(heartbeat, 0) ->
[{error_code,int16}];
rsp(heartbeat, 1) ->
[{throttle_time_ms,int32},{error_code,int16}];
rsp(leave_group, 0) ->
[{error_code,int16}];
rsp(leave_group, 1) ->
[{throttle_time_ms,int32},{error_code,int16}];
rsp(sync_group, 0) ->
[{error_code,int16},{member_assignment,bytes}];
rsp(sync_group, 1) ->
[{throttle_time_ms,int32},{error_code,int16},{member_assignment,bytes}];
rsp(describe_groups, 0) ->
[{groups,{array,[{error_code,int16},
{group_id,string},
{state,string},
{protocol_type,string},
{protocol,string},
{members,{array,[{member_id,string},
{client_id,string},
{client_host,string},
{member_metadata,bytes},
{member_assignment,bytes}]}}]}}];
rsp(describe_groups, 1) ->
[{throttle_time_ms,int32},
{groups,{array,[{error_code,int16},
{group_id,string},
{state,string},
{protocol_type,string},
{protocol,string},
{members,{array,[{member_id,string},
{client_id,string},
{client_host,string},
{member_metadata,bytes},
{member_assignment,bytes}]}}]}}];
rsp(list_groups, 0) ->
[{error_code,int16},
{groups,{array,[{group_id,string},{protocol_type,string}]}}];
rsp(list_groups, 1) ->
[{throttle_time_ms,int32},
{error_code,int16},
{groups,{array,[{group_id,string},{protocol_type,string}]}}];
rsp(sasl_handshake, V) when V >= 0, V =< 1 ->
[{error_code,int16},{enabled_mechanisms,{array,string}}];
rsp(api_versions, 0) ->
[{error_code,int16},
{api_versions,{array,[{api_key,int16},
{min_version,int16},
{max_version,int16}]}}];
rsp(api_versions, 1) ->
[{error_code,int16},
{api_versions,{array,[{api_key,int16},
{min_version,int16},
{max_version,int16}]}},
{throttle_time_ms,int32}];
rsp(create_topics, 0) ->
[{topic_errors,{array,[{topic,string},{error_code,int16}]}}];
rsp(create_topics, 1) ->
[{topic_errors,{array,[{topic,string},
{error_code,int16},
{error_message,nullable_string}]}}];
rsp(create_topics, 2) ->
[{throttle_time_ms,int32},
{topic_errors,{array,[{topic,string},
{error_code,int16},
{error_message,nullable_string}]}}];
rsp(delete_topics, 0) ->
[{topic_error_codes,{array,[{topic,string},{error_code,int16}]}}];
rsp(delete_topics, 1) ->
[{throttle_time_ms,int32},
{topic_error_codes,{array,[{topic,string},{error_code,int16}]}}];
rsp(delete_records, 0) ->
[{throttle_time_ms,int32},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{low_watermark,int64},
{error_code,int16}]}}]}}];
rsp(init_producer_id, 0) ->
[{throttle_time_ms,int32},
{error_code,int16},
{producer_id,int64},
{producer_epoch,int16}];
rsp(add_partitions_to_txn, 0) ->
[{throttle_time_ms,int32},
{errors,
{array,
[{topic,string},
{partition_errors,
{array,[{partition,int32},{error_code,int16}]}}]}}];
rsp(add_offsets_to_txn, 0) ->
[{throttle_time_ms,int32},{error_code,int16}];
rsp(end_txn, 0) ->
[{throttle_time_ms,int32},{error_code,int16}];
rsp(txn_offset_commit, 0) ->
[{throttle_time_ms,int32},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{error_code,int16}]}}]}}];
rsp(describe_acls, 0) ->
[{throttle_time_ms,int32},
{error_code,int16},
{error_message,nullable_string},
{resources,{array,[{resource_type,int8},
{resource_name,string},
{acls,{array,[{principal,string},
{host,string},
{operation,int8},
{permission_type,int8}]}}]}}];
rsp(create_acls, 0) ->
[{throttle_time_ms,int32},
{creation_responses,{array,[{error_code,int16},
{error_message,nullable_string}]}}];
rsp(delete_acls, 0) ->
[{throttle_time_ms,int32},
{filter_responses,
{array,
[{error_code,int16},
{error_message,nullable_string},
{matching_acls,
{array,
[{error_code,int16},
{error_message,nullable_string},
{resource_type,int8},
{resource_name,string},
{principal,string},
{host,string},
{operation,int8},
{permission_type,int8}]}}]}}];
rsp(describe_configs, 0) ->
[{throttle_time_ms,int32},
{resources,
{array,
[{error_code,int16},
{error_message,nullable_string},
{resource_type,int8},
{resource_name,string},
{config_entries,
{array,
[{config_name,string},
{config_value,nullable_string},
{read_only,boolean},
{is_default,boolean},
{is_sensitive,boolean}]}}]}}];
rsp(describe_configs, 1) ->
[{throttle_time_ms,int32},
{resources,
{array,
[{error_code,int16},
{error_message,nullable_string},
{resource_type,int8},
{resource_name,string},
{config_entries,
{array,
[{config_name,string},
{config_value,nullable_string},
{read_only,boolean},
{config_source,int8},
{is_sensitive,boolean},
{config_synonyms,
{array,
[{config_name,string},
{config_value,nullable_string},
{config_source,int8}]}}]}}]}}];
rsp(alter_configs, 0) ->
[{throttle_time_ms,int32},
{resources,{array,[{error_code,int16},
{error_message,nullable_string},
{resource_type,int8},
{resource_name,string}]}}];
rsp(alter_replica_log_dirs, 0) ->
[{throttle_time_ms,int32},
{topics,{array,[{topic,string},
{partitions,{array,[{partition,int32},
{error_code,int16}]}}]}}];
rsp(describe_log_dirs, 0) ->
[{throttle_time_ms,int32},
{log_dirs,
{array,
[{error_code,int16},
{log_dir,string},
{topics,
{array,
[{topic,string},
{partitions,
{array,
[{partition,int32},
{size,int64},
{offset_lag,int64},
{is_future,boolean}]}}]}}]}}];
rsp(sasl_authenticate, 0) ->
[{error_code,int16},{error_message,nullable_string},{sasl_auth_bytes,bytes}];
rsp(create_partitions, 0) ->
[{throttle_time_ms,int32},
{topic_errors,{array,[{topic,string},
{error_code,int16},
{error_message,nullable_string}]}}];
rsp(create_delegation_token, 0) ->
[{error_code,int16},
{owner,[{principal_type,string},{name,string}]},
{issue_timestamp,int64},
{expiry_timestamp,int64},
{max_timestamp,int64},
{token_id,string},
{hmac,bytes},
{throttle_time_ms,int32}];
rsp(renew_delegation_token, 0) ->
[{error_code,int16},{expiry_timestamp,int64},{throttle_time_ms,int32}];
rsp(expire_delegation_token, 0) ->
[{error_code,int16},{expiry_timestamp,int64},{throttle_time_ms,int32}];
rsp(describe_delegation_token, 0) ->
[{error_code,int16},
{token_details,
{array,
[{owner,[{principal_type,string},{name,string}]},
{issue_timestamp,int64},
{expiry_timestamp,int64},
{max_timestamp,int64},
{token_id,string},
{hmac,bytes},
{renewers,{array,[{principal_type,string},{name,string}]}}]}},
{throttle_time_ms,int32}];
rsp(delete_groups, 0) ->
[{throttle_time_ms,int32},
{group_error_codes,{array,[{group_id,string},{error_code,int16}]}}].
ec(0) -> no_error;
ec(-1) -> unknown_server_error;
ec(1) -> offset_out_of_range;
ec(2) -> corrupt_message;
ec(3) -> unknown_topic_or_partition;
ec(4) -> invalid_fetch_size;
ec(5) -> leader_not_available;
ec(6) -> not_leader_for_partition;
ec(7) -> request_timed_out;
ec(8) -> broker_not_available;
ec(9) -> replica_not_available;
ec(10) -> message_too_large;
ec(11) -> stale_controller_epoch;
ec(12) -> offset_metadata_too_large;
ec(13) -> network_exception;
ec(14) -> coordinator_load_in_progress;
ec(15) -> coordinator_not_available;
ec(16) -> not_coordinator;
ec(17) -> invalid_topic_exception;
ec(18) -> record_list_too_large;
ec(19) -> not_enough_replicas;
ec(20) -> not_enough_replicas_after_append;
ec(21) -> invalid_required_acks;
ec(22) -> illegal_generation;
ec(23) -> inconsistent_group_protocol;
ec(24) -> invalid_group_id;
ec(25) -> unknown_member_id;
ec(26) -> invalid_session_timeout;
ec(27) -> rebalance_in_progress;
ec(28) -> invalid_commit_offset_size;
ec(29) -> topic_authorization_failed;
ec(30) -> group_authorization_failed;
ec(31) -> cluster_authorization_failed;
ec(32) -> invalid_timestamp;
ec(33) -> unsupported_sasl_mechanism;
ec(34) -> illegal_sasl_state;
ec(35) -> unsupported_version;
ec(36) -> topic_already_exists;
ec(37) -> invalid_partitions;
ec(38) -> invalid_replication_factor;
ec(39) -> invalid_replica_assignment;
ec(40) -> invalid_config;
ec(41) -> not_controller;
ec(42) -> invalid_request;
ec(43) -> unsupported_for_message_format;
ec(44) -> policy_violation;
ec(45) -> out_of_order_sequence_number;
ec(46) -> duplicate_sequence_number;
ec(47) -> invalid_producer_epoch;
ec(48) -> invalid_txn_state;
ec(49) -> invalid_producer_id_mapping;
ec(50) -> invalid_transaction_timeout;
ec(51) -> concurrent_transactions;
ec(52) -> transaction_coordinator_fenced;
ec(53) -> transactional_id_authorization_failed;
ec(54) -> security_disabled;
ec(55) -> operation_not_attempted;
ec(56) -> kafka_storage_error;
ec(57) -> log_dir_not_found;
ec(58) -> sasl_authentication_failed;
ec(59) -> unknown_producer_id;
ec(60) -> reassignment_in_progress;
ec(61) -> delegation_token_auth_disabled;
ec(62) -> delegation_token_not_found;
ec(63) -> delegation_token_owner_mismatch;
ec(64) -> delegation_token_request_not_allowed;
ec(65) -> delegation_token_authorization_failed;
ec(66) -> delegation_token_expired;
ec(67) -> invalid_principal_type;
ec(68) -> non_empty_group;
ec(69) -> group_id_not_found;
ec(70) -> fetch_session_id_not_found;
ec(71) -> invalid_fetch_session_epoch.