// IncrementalAlterConfigsRequest issues ar equest to alter either topic or
// broker configs.
//
// This API was added in Kafka 2.3.0 to replace AlterConfigs. The key benefit
// of this API is that consumers do not need to know the full config state
// to add or remove new config options. See KIP-339 for more details.
IncrementalAlterConfigsRequest => key 44, max version 1, flexible v1+
  // Resources is an array of configs to alter.
  Resources: [=>]
    // ResourceType is an enum corresponding to the type of config to alter.
    ResourceType: enum-ConfigResourceType
    // ResourceName is the name of config to alter.
    //
    // If the requested type is a topic, this corresponds to a topic name.
    //
    // If the requested type if a broker, this should either be empty or be
    // the ID of the broker this request is issued to. If it is empty, this
    // updates all broker configs. If a specific ID, this updates just the
    // broker. Using a specific ID also ensures that brokers reload config
    // or secret files even if the file path has not changed. Lastly, password
    // config options can only be defined on a per broker basis.
    //
    // If the type is broker logger, this must be a broker ID.
    ResourceName: string
    // Configs contains key/value config pairs to set on the resource.
    Configs: [=>]
      // Name is a key to modify (e.g. segment.bytes).
      //
      // For broker loggers, see KIP-412 section "Request/Response Overview"
      // for details on how to change per logger log levels.
      Name: string
      // Op is the type of operation to perform for this config name.
      //
      // SET (0) is to set a configuration value; the value must not be null.
      //
      // DELETE (1) is to delete a configuration key.
      //
      // APPEND (2) is to add a value to the list of values for a key (if the
      // key is for a list of values).
      //
      // SUBTRACT (3) is to remove a value from a list of values (if the key
      // is for a list of values).
      Op: enum-IncrementalAlterConfigOp
      // Value is a value to set for the key (e.g. 10).
      Value: nullable-string
  // ValidateOnly validates the request but does not apply it.
  ValidateOnly: bool

// IncrementalAlterConfigsResponse is returned from an IncrementalAlterConfigsRequest.
IncrementalAlterConfigsResponse =>
  ThrottleMillis
  // Resources are responses for each resources in the alter request.
  Resources: [=>]
    // ErrorCode is the error code returned for incrementally altering configs.
    //
    // CLUSTER_AUTHORIZATION_FAILED is returned if asking to alter broker
    // configs but the client is not authorized to do so.
    //
    // TOPIC_AUTHORIZATION_FAILED is returned if asking to alter topic
    // configs but the client is not authorized to do so.
    //
    // INVALID_TOPIC_EXCEPTION is returned if the requested topic was invalid.
    //
    // UNKNOWN_TOPIC_OR_PARTITION is returned if the broker does not know of
    // the requested topic.
    //
    // INVALID_REQUEST is returned if the requested config is invalid or if
    // asking Kafka to alter an invalid resource.
    ErrorCode: int16
    // ErrorMessage is an informative message if the incremental alter config failed.
    ErrorMessage: nullable-string
    // ResourceType is the enum corresponding to the type of altered config.
    ResourceType: enum-ConfigResourceType
    // ResourceName is the name corresponding to the incremental alter config
    // request.
    ResourceName: string
