/////////////
// CONFIGS //
/////////////

// A type of config.
ConfigResourceType int8 (
  2: TOPIC
  4: BROKER
  8: BROKER_LOGGER
)

// Where a config entry is from. If there are no config synonyms,
// the source is DEFAULT_CONFIG.
ConfigSource int8 (
  // Dynamic topic config for a specific topic.
  1: DYNAMIC_TOPIC_CONFIG
  // Dynamic broker config for a specific broker.
  2: DYNAMIC_BROKER_CONFIG
  // Dynamic broker config used as the default for all brokers in a cluster.
  3: DYNAMIC_DEFAULT_BROKER_CONFIG
  // Static broker config provided at start up.
  4: STATIC_BROKER_CONFIG
  // Built-in default configuration for those that have defaults.
  5: DEFAULT_CONFIG
  // Broker logger; see KIP-412.
  6: DYNAMIC_BROKER_LOGGER_CONFIG
)

// A configuration data type.
ConfigType int8 (
  1: BOOLEAN
  2: STRING
  3: INT
  4: SHORT
  5: LONG
  6: DOUBLE
  7: LIST
  8: CLASS
  9: PASSWORD
)

// An incremental configuration operation.
IncrementalAlterConfigOp int8 (
  0: SET
  1: DELETE
  2: APPEND
  3: SUBTRACT
)

//////////
// ACLS //
//////////

// ACLResourceType is a type of resource to use for ACLs.
ACLResourceType int8 (
  1: ANY
  2: TOPIC
  3: GROUP
  4: CLUSTER
  5: TRANSACTIONAL_ID
  6: DELEGATION_TOKEN
  7: USER
)

// ACLResourcePatternType is how an acl's ResourceName is understood.
//
// This field was added with Kafka 2.0.0 for KIP-290.
ACLResourcePatternType int8 (
  // Matches anything.
  1: ANY
  // Performs pattern matching; i.e., a literal match, or a prefix match, or wildcard.
  2: MATCH
  // The name must be an exact match.
  3: LITERAL
  // The name must have our requested name as a prefix (that is, "foo" will match on "foobar").
  4: PREFIXED
)

// An ACL permission type.
ACLPermissionType int8 (
  // Any permission.
  1: ANY
  // Any deny permission.
  2: DENY
  // Any allow permission.
  3: ALLOW
)

// An ACL operation.
ACLOperation int8 (
  // Matches anything.
  1: ANY
  // Matches anything granted all permissions.
  2: ALL
  3: READ
  4: WRITE
  5: CREATE
  6: DELETE
  7: ALTER
  8: DESCRIBE
  9: CLUSTER_ACTION
  10: DESCRIBE_CONFIGS
  11: ALTER_CONFIGS
  12: IDEMPOTENT_WRITE
  13: CREATE_TOKENS
  14: DESCRIBE_TOKENS
)

//////////
// TXNS //
//////////

// TransactionState is the state of a transaction.
TransactionState int8 camelcase (
  0: Empty
  1: Ongoing
  2: PrepareCommit
  3: PrepareAbort
  4: CompleteCommit
  5: CompleteAbort
  6: Dead
  7: PrepareEpochFence
)

////////////
// QUOTAS //
////////////

// QuotasMatchType specifies how to match a Quota entity as part of the DescribeClientQuotasRequestComponent.
QuotasMatchType int8 (
  // Matches all quotas for the given EntityType with names equal to the Match field.
  0: EXACT
  // Matches the default for the given EntityType.
  1: DEFAULT
  // Matches all named quotas and default quotas for the given EntityType.
  2: ANY
)

//////////
// MISC //
//////////

ControlRecordKeyType int8 (
  0: ABORT
  1: COMMIT
  2: QUORUM_REASSIGNMENT
  3: LEADER_CHANGE
)
