---
type: api
title: Create or update a stream
description: **Spaces method and path for this operation:**
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/kibana/v9/operation/operation-put-streams-name
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/kibana/v9/operation/operation-put-streams-name
products:
  - Kibana
---

# Create or update a stream

Availability: 9.1+

- Server: `https://{kibana_url}`

## Paths

- `PUT` `/api/streams/{name}`
- `PUT` `/s/{space_id}/api/streams/{name}`

- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/kibana/v9/authentication#apikeyauth)
- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/kibana/v9/authentication#basicauth)

#### Path Parameters

- `name` (string · max: 200)
  The name of the stream.

## Description

Refer to [Spaces](https://www.elastic.co/docs/deploy-manage/manage-spaces) for more information.

Creates or updates a stream definition. Classic streams can not be created through this API, only updated<br/><br/>[Required authorization] Route required privileges: manage_stream.

## Request Body

`application/json`

Any of:
- **WiredStreamUpsertRequest**
  - `dashboards` ([] string) — required
  - `rules` ([] string) — required
  - `stream` (object) — required
    - `description` (string) — required
    - `ingest` (object) — required
      - `failure_store` (union) — required
        - **{ inherit }**
          - `inherit` (object) — required
        - **{ disabled }**
          - `disabled` (object) — required
        - **object**
          - `lifecycle` (object) — required
            - `enabled` (object) — required
              - `data_retention` (string · min: 1) — optional
                A non-empty string.
        - **object**
          - `lifecycle` (object) — required
            - `disabled` (object) — required
      - `lifecycle` (union) — required
        - **{ dsl }**
          - `dsl` (object) — required
            - `data_retention` (string · min: 1) — optional
              A non-empty string.
            - `downsample` ([] object) — optional
              - `after` (string · min: 1) — required
                A non-empty string.
              - `fixed_interval` (string · min: 1) — required
                A non-empty string.
            - `frozen_after` (string · min: 1) — optional
              A non-empty string.
        - **{ ilm }**
          - `ilm` (object) — required
            - `policy` (string · min: 1) — required
              A non-empty string.
        - **{ inherit }**
          - `inherit` (object) — required
      - `processing` (object) — required
        - `steps` ([] union) — required
          - **action: grok**
            Grok processor - Extract fields from text using grok patterns
            - `action` (enum) — required
              Values: `grok`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
              Source field to parse with grok patterns
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
              Skip processing when source field is missing
            - `pattern_definitions` (map string to string) — optional
            - `patterns` ([] string · min: 1) — required
              Grok patterns applied in order to extract fields
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: grok`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: grok`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: grok`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: dissect**
            Dissect processor - Extract fields from text using a lightweight, delimiter-based parser
            - `action` (enum) — required
              Values: `dissect`
            - `append_separator` (string · min: 1) — optional
              Separator inserted when target fields are concatenated
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
              Source field to parse with dissect pattern
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
              Skip processing when source field is missing
            - `pattern` (string · min: 1) — required
              Dissect pattern describing field boundaries
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: dissect`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: dissect`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: dissect`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: uri_parts**
            URI parts processor - Parse a URI into components (scheme, domain, port, path, query, fragment, ...)
            - `action` (enum) — required
              Values: `uri_parts`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
              Source field holding the URI string to parse
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
              Skip processing when source field is missing
            - `keep_original` (boolean) — optional
              If true (default), preserve the original URI string alongside the extracted parts
            - `remove_if_successful` (boolean) — optional
              If true, remove the source field after a successful parse. Source field is kept on failure.
            - `to` (string · min: 1) — optional
              Target field / column prefix for the extracted URI components (defaults to "url"). May equal `from` — the canonical ECS shape parses the `url` field in place. Note: combining `to === from` with `remove_if_successful: true` nulls the parsed object after writing it.
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: uri_parts`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: uri_parts`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: uri_parts`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: date**
            Date processor - Parse dates from strings using one or more expected formats
            - `action` (enum) — required
              Values: `date`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `formats` ([] string) — required
              Accepted input date formats, tried in order
            - `from` (string · min: 1) — required
              Source field containing the date/time text
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `locale` (string · min: 1) — optional
              Optional locale for date parsing
            - `output_format` (string · min: 1) — optional
              Optional output format for storing the parsed date as text
            - `timezone` (string · min: 1) — optional
              Optional timezone for date parsing
            - `to` (string · min: 1) — optional
              Target field for the parsed date (defaults to source)
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: date`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: date`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: date`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: drop_document**
            - `action` (enum) — required
              Values: `drop_document`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: drop_document`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: drop_document`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: drop_document`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: math**
            - `action` (enum) — required
              Values: `math`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `expression` (string · min: 1) — required
              A non-empty string.
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
            - `to` (string · min: 1) — required
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: math`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: math`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: math`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: rename**
            Rename processor - Change a field name and optionally its location
            - `action` (enum) — required
              Values: `rename`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
              Existing source field to rename or move
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
              Skip when source field is missing
            - `override` (boolean) — optional
              Allow overwriting the target field if it already exists
            - `to` (string · min: 1) — required
              New field name or destination path
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: rename`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: rename`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: rename`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: set**
            Set processor - Assign a literal or copied value to a field (mutually exclusive inputs)
            - `action` (enum) — required
              Values: `set`
            - `copy_from` (string · min: 1) — optional
              Copy value from another field instead of providing a literal
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `override` (boolean) — optional
              Allow overwriting an existing target field
            - `to` (string · min: 1) — required
              Target field to set or create
            - `value` (object) — optional
              Literal value to assign to the target field
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: set`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: set`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: set`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: append**
            Append processor - Append one or more values to an existing or new array field
            - `action` (enum) — required
              Values: `append`
            - `allow_duplicates` (boolean) — optional
              If true, do not deduplicate appended values
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `to` (string · min: 1) — required
              Array field to append values to
            - `value` ([] object · min: 1) — required
              Values to append (must be literal, no templates)
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: append`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: append`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: append`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: remove_by_prefix**
            Remove by prefix processor - Remove a field and all nested fields matching the prefix
            - `action` (enum) — required
              Values: `remove_by_prefix`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
              Field to remove along with all its nested fields
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
          - **action: remove**
            Remove processor - Delete one or more fields from the document
            - `action` (enum) — required
              Values: `remove`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
              Field to remove from the document
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
              Skip processing when source field is missing
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: remove`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: remove`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: remove`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: replace**
            - `action` (enum) — required
              Values: `replace`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
            - `pattern` (string · min: 1) — required
            - `replacement` (string) — required
            - `to` (string · min: 1) — optional
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: replace`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: replace`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: replace`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: redact**
            Redact processor - Mask sensitive data using Grok patterns
            - `action` (enum) — required
              Values: `redact`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
              Source field to redact sensitive data from
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
              Skip processing when source field is missing (defaults to true)
            - `pattern_definitions` (map string to string) — optional
              Custom pattern definitions to use in the patterns
            - `patterns` ([] string · min: 1) — required
              Grok patterns to match sensitive data (for example, "%{IP:client}", "%{EMAILADDRESS:email}")
            - `prefix` (string) — optional
              Prefix to prepend to the redacted pattern name (defaults to "<")
            - `suffix` (string) — optional
              Suffix to append to the redacted pattern name (defaults to ">")
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: redact`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: redact`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: redact`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: uppercase**
            - `action` (enum) — required
              Values: `uppercase`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
            - `to` (string · min: 1) — optional
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: uppercase`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: uppercase`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: uppercase`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: lowercase**
            - `action` (enum) — required
              Values: `lowercase`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
            - `to` (string · min: 1) — optional
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: lowercase`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: lowercase`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: lowercase`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: trim**
            - `action` (enum) — required
              Values: `trim`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
            - `to` (string · min: 1) — optional
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: trim`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: trim`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: trim`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: join**
            - `action` (enum) — required
              Values: `join`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `delimiter` (string) — required
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` ([] string · min: 1) — required
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
            - `to` (string · min: 1) — required
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: join`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: join`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: join`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: split**
            Split processor - Split a field value into an array using a separator
            - `action` (enum) — required
              Values: `split`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
              Source field to split into an array
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
              Skip processing when source field is missing
            - `preserve_trailing` (boolean) — optional
              Preserve empty trailing fields in the split result
            - `separator` (string · min: 1) — required
              Regex separator used to split the field value into an array
            - `to` (string · min: 1) — optional
              Target field for the split array (defaults to source)
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: split`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: split`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: split`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: sort**
            - `action` (enum) — required
              Values: `sort`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
              Array field to sort
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
              Skip processing when source field is missing
            - `order` (enum) — optional
              Sort order - "asc" (ascending) or "desc" (descending). Defaults to "asc"
              Values: `asc`, `desc`
            - `to` (string · min: 1) — optional
              Target field for the sorted array (defaults to source)
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: sort`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: sort`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: sort`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: convert**
            Convert processor - Change the data type of a field value (integer, long, double, boolean, or string)
            - `action` (enum) — required
              Values: `convert`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` (string · min: 1) — required
              Source field to convert to a different data type
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
              Skip processing when source field is missing
            - `to` (string · min: 1) — optional
              Target field for the converted value (defaults to source)
            - `type` (enum) — required
              Target data type: integer, long, double, boolean, or string
              Values: `integer`, `long`, `double`, `boolean`, `string`
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: convert`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: convert`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: convert`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: concat**
            - `action` (enum) — required
              Values: `concat`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `from` ([] union anyOf · min: 1) — required
              - **type: field**
                - `type` (enum) — required
                  Values: `field`
                - `value` (string · min: 1) — required
              - **type: literal**
                - `type` (enum) — required
                  Values: `literal`
                - `value` (string) — required
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
            - `to` (string · min: 1) — required
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: concat`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: concat`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: concat`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: network_direction**
            - `action` (enum) — required
              Values: `network_direction`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `destination_ip` (string · min: 1) — required
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
            - `source_ip` (string · min: 1) — required
            - `target_field` (string · min: 1) — optional
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: network_direction`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: network_direction`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: network_direction`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: json_extract**
            JsonExtract processor - Extract values from JSON strings using JSONPath-like selectors
            - `action` (enum) — required
              Values: `json_extract`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `extractions` ([] object · min: 1) — required
              List of extraction specifications
              - `selector` (string · min: 1) — required
                JSONPath-like selector to extract value (e.g., "user.id", "$.metadata.client.ip", "items[0].name")
              - `target_field` (string · min: 1) — required
                Target field to store the extracted value
              - `type` (enum) — optional
                Data type for the extracted value. Defaults to "keyword". Ensures consistent types across transpilers.
                Values: `keyword`, `integer`, `long`, `double`, `boolean`
            - `field` (string · min: 1) — required
              Source field containing the JSON string to parse
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
              Skip processing when source field is missing
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: json_extract`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: json_extract`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: json_extract`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: enrich**
            - `action` (enum) — required
              Values: `enrich`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
            - `override` (boolean) — optional
            - `policy_name` (string · min: 1) — required
              A non-empty string.
            - `to` (string · min: 1) — required
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: enrich`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: enrich`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: enrich`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: user_agent**
            User agent processor - Extract browser, OS, and device details from a user agent string
            - `action` (enum) — required
              Values: `user_agent`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `extract_device_type` (boolean) — optional
              Extracts device type from the user agent string
            - `from` (string · min: 1) — required
              The field containing the user agent string
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
              Skip processing when source field is missing
            - `properties` ([] enum) — optional
              Specific properties to extract (defaults to all)
              Values: `name`, `os`, `device`, `original`, `version`
            - `regex_file` (string · min: 1) — optional
              Custom regex file name containing the regular expressions for parsing the user agent string
            - `to` (string · min: 1) — optional
              The field that will be filled with the user agent details
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: user_agent`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: user_agent`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: user_agent`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: registered_domain**
            Registered domain processor - extracts domain, registered_domain, top_level_domain, subdomain from a FQDN
            - `action` (enum) — required
              Values: `registered_domain`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `expression` (string · min: 1) — required
              The string expression containing the FQDN to parse
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `ignore_missing` (boolean) — optional
              Skip processing when expression field is missing
            - `prefix` (string · min: 1) — required
              The prefix for the output columns. The extracted parts are available as prefix.part_name
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: registered_domain`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: registered_domain`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: registered_domain`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **action: manual_ingest_pipeline**
            Manual ingest pipeline wrapper around native Elasticsearch processors
            - `action` (enum) — required
              Manual ingest pipeline - executes raw Elasticsearch ingest processors
              Values: `manual_ingest_pipeline`
            - `customIdentifier` (string · min: 1) — optional
              Custom identifier to correlate this processor across outputs
            - `description` (string) — optional
              Human-readable notes about this processor step
            - `ignore_failure` (boolean) — optional
              Continue pipeline execution if this processor fails
            - `on_failure` ([] string to object) — optional
              Fallback processors to run when a processor fails
            - `processors` ([] string to object) — required
              List of raw Elasticsearch ingest processors to run
            - `tag` (string) — optional
              Optional ingest processor tag for Elasticsearch
            - `where` (union) — optional
              The root condition object. It can be a simple filter or a combination of other conditions.
              - **FilterCondition**
                A basic filter condition, either unary or binary.
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `and` ([] union) — required — recursive
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  Same options as `where` in `action: manual_ingest_pipeline`
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `or` ([] union) — required — recursive
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  Same options as `where` in `action: manual_ingest_pipeline`
              - **{ not }**
                A logical NOT that negates a condition.
                - `not` (union) — required — recursive
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  Same options as `where` in `action: manual_ingest_pipeline`
              - **{ never }**
                A condition that always evaluates to false.
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `always` (object) — required
                  An empty object. This condition always matches.
          - **StreamlangConditionBlock**
            - `condition` (union) — required
              - **FilterCondition**
                A basic filter condition, either unary or binary.
                - `else` ([] union) — optional — recursive
                  Same options as `steps` in `processing`
                - `steps` ([] union) — required — recursive
                  Same options as `steps` in `processing`
              - **{ and }**
                A logical AND that groups multiple conditions.
                - `else` ([] union) — optional — recursive
                  Same options as `steps` in `processing`
                - `steps` ([] union) — required — recursive
                  Same options as `steps` in `processing`
                - `and` ([] union) — required
                  An array of conditions. All sub-conditions must be true for this condition to be true.
                  - **FilterCondition**
                    A basic filter condition, either unary or binary.
                  - **{ and }**
                    A logical AND that groups multiple conditions.
                    - `and` ([] union) — required — recursive
                      An array of conditions. All sub-conditions must be true for this condition to be true.
                      Same options as `and` in `{ and }`
                  - **{ or }**
                    A logical OR that groups multiple conditions.
                    - `or` ([] union) — required — recursive
                      An array of conditions. At least one sub-condition must be true for this condition to be true.
                      Same options as `and` in `{ and }`
                  - **{ not }**
                    A logical NOT that negates a condition.
                    - `not` (union) — required — recursive
                      The root condition object. It can be a simple filter or a combination of other conditions.
                      Same options as `and` in `{ and }`
                  - **{ never }**
                    A condition that always evaluates to false.
                    - `never` (object) — required
                      An empty object. This condition never matches.
                  - **{ always }**
                    A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                    - `always` (object) — required
                      An empty object. This condition always matches.
              - **{ or }**
                A logical OR that groups multiple conditions.
                - `else` ([] union) — optional — recursive
                  Same options as `steps` in `processing`
                - `steps` ([] union) — required — recursive
                  Same options as `steps` in `processing`
                - `or` ([] union) — required
                  An array of conditions. At least one sub-condition must be true for this condition to be true.
                  - **FilterCondition**
                    A basic filter condition, either unary or binary.
                  - **{ and }**
                    A logical AND that groups multiple conditions.
                    - `and` ([] union) — required — recursive
                      An array of conditions. All sub-conditions must be true for this condition to be true.
                      Same options as `or` in `{ or }`
                  - **{ or }**
                    A logical OR that groups multiple conditions.
                    - `or` ([] union) — required — recursive
                      An array of conditions. At least one sub-condition must be true for this condition to be true.
                      Same options as `or` in `{ or }`
                  - **{ not }**
                    A logical NOT that negates a condition.
                    - `not` (union) — required — recursive
                      The root condition object. It can be a simple filter or a combination of other conditions.
                      Same options as `or` in `{ or }`
                  - **{ never }**
                    A condition that always evaluates to false.
                    - `never` (object) — required
                      An empty object. This condition never matches.
                  - **{ always }**
                    A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                    - `always` (object) — required
                      An empty object. This condition always matches.
              - **{ not }**
                A logical NOT that negates a condition.
                - `else` ([] union) — optional — recursive
                  Same options as `steps` in `processing`
                - `steps` ([] union) — required — recursive
                  Same options as `steps` in `processing`
                - `not` (union) — required
                  The root condition object. It can be a simple filter or a combination of other conditions.
                  - **FilterCondition**
                    A basic filter condition, either unary or binary.
                  - **{ and }**
                    A logical AND that groups multiple conditions.
                    - `and` ([] union) — required — recursive
                      An array of conditions. All sub-conditions must be true for this condition to be true.
                      Same options as `not` in `{ not }`
                  - **{ or }**
                    A logical OR that groups multiple conditions.
                    - `or` ([] union) — required — recursive
                      An array of conditions. At least one sub-condition must be true for this condition to be true.
                      Same options as `not` in `{ not }`
                  - **{ not }**
                    A logical NOT that negates a condition.
                    - `not` (union) — required — recursive
                      The root condition object. It can be a simple filter or a combination of other conditions.
                      Same options as `not` in `{ not }`
                  - **{ never }**
                    A condition that always evaluates to false.
                    - `never` (object) — required
                      An empty object. This condition never matches.
                  - **{ always }**
                    A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                    - `always` (object) — required
                      An empty object. This condition always matches.
              - **{ never }**
                A condition that always evaluates to false.
                - `else` ([] union) — optional — recursive
                  Same options as `steps` in `processing`
                - `steps` ([] union) — required — recursive
                  Same options as `steps` in `processing`
                - `never` (object) — required
                  An empty object. This condition never matches.
              - **{ always }**
                A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
                - `else` ([] union) — optional — recursive
                  Same options as `steps` in `processing`
                - `steps` ([] union) — required — recursive
                  Same options as `steps` in `processing`
                - `always` (object) — required
                  An empty object. This condition always matches.
            - `customIdentifier` (string) — optional
        - `updated_at` (object) — optional
      - `settings` (object) — required
        - `index.number_of_replicas` (object) — optional
          - `value` (number) — required
        - `index.number_of_shards` (object) — optional
          - `value` (number) — required
        - `index.refresh_interval` (object) — optional
          - `value` (union string | enum) — required
            Values: `-1`
      - `wired` (object) — required
        - `draft` (boolean) — optional
        - `fields` (object) — required
        - `routing` ([] object) — required
          - `destination` (string · min: 1) — required
            A non-empty string.
          - `draft` (boolean) — optional
          - `status` (enum) — optional
            Values: `enabled`, `disabled`
          - `where` (union) — required
            The root condition object. It can be a simple filter or a combination of other conditions.
            - **FilterCondition**
              A basic filter condition, either unary or binary.
            - **{ and }**
              A logical AND that groups multiple conditions.
              - `and` ([] union) — required — recursive
                An array of conditions. All sub-conditions must be true for this condition to be true.
                Same options as `where` in `routing`
            - **{ or }**
              A logical OR that groups multiple conditions.
              - `or` ([] union) — required — recursive
                An array of conditions. At least one sub-condition must be true for this condition to be true.
                Same options as `where` in `routing`
            - **{ not }**
              A logical NOT that negates a condition.
              - `not` (union) — required — recursive
                The root condition object. It can be a simple filter or a combination of other conditions.
                Same options as `where` in `routing`
            - **{ never }**
              A condition that always evaluates to false.
              - `never` (object) — required
                An empty object. This condition never matches.
            - **{ always }**
              A condition that always evaluates to true. Useful for catch-all scenarios, but use with caution as partitions are ordered.
              - `always` (object) — required
                An empty object. This condition always matches.
    - `query_streams` ([] object) — optional
      - `name` (string) — required
    - `type` (enum) — required
      Values: `wired`
- **ClassicStreamUpsertRequest**
  - `dashboards` ([] string) — required
  - `rules` ([] string) — required
  - `stream` (object) — required
    - `description` (string) — required
    - `ingest` (object) — required
      - `classic` (object) — required
        - `field_overrides` (object) — optional
      - `failure_store` (union) — required
        - **{ inherit }**
          - `inherit` (object) — required
        - **{ disabled }**
          - `disabled` (object) — required
        - **object**
          - `lifecycle` (object) — required
            - `enabled` (object) — required
              - `data_retention` (string · min: 1) — optional
                A non-empty string.
        - **object**
          - `lifecycle` (object) — required
            - `disabled` (object) — required
      - `lifecycle` (union) — required
        - **{ dsl }**
          - `dsl` (object) — required
            - `data_retention` (string · min: 1) — optional
              A non-empty string.
            - `downsample` ([] object) — optional
              - `after` (string · min: 1) — required
                A non-empty string.
              - `fixed_interval` (string · min: 1) — required
                A non-empty string.
            - `frozen_after` (string · min: 1) — optional
              A non-empty string.
        - **{ ilm }**
          - `ilm` (object) — required
            - `policy` (string · min: 1) — required
              A non-empty string.
        - **{ inherit }**
          - `inherit` (object) — required
      - `processing` (object) — required
        - `steps` ([] union) — required
          Same options as `steps` in `processing`
        - `updated_at` (object) — optional
      - `settings` (object) — required
        - `index.number_of_replicas` (object) — optional
          - `value` (number) — required
        - `index.number_of_shards` (object) — optional
          - `value` (number) — required
        - `index.refresh_interval` (object) — optional
          - `value` (union string | enum) — required
            Values: `-1`
    - `query_streams` ([] object) — optional
      - `name` (string) — required
    - `type` (enum) — required
      Values: `classic`
- **QueryStreamUpsertRequest**
  - `dashboards` ([] string) — required
  - `rules` ([] string) — required
  - `stream` (object) — required
    - `description` (string) — required
    - `field_descriptions` (map string to string) — optional
    - `query` (object) — required
      - `esql` (string) — required
      - `view` (string) — required
    - `query_streams` ([] object) — optional
      - `name` (string) — required
    - `type` (enum) — required
      Values: `query`

## Response

The stream was created or updated successfully.

## Code Examples

#### Console

```console
PUT /api/streams/{name}
{
  "dashboards": [],
  "rules": [],
  "stream": {
    "description": "All error-level logs across every stream",
    "query": {
      "esql": "FROM logs* | WHERE log.level == \u0022error\u0022",
      "view": "logs.errors-view"
    },
    "type": "query"
  }
}
```

#### curl

```curl
curl -X PUT "https://{kibana_url}/api/streams/{name}" \
  -H "kbn-xsrf: true" \
  -H "Content-Type: application/json" \
  -d '{
  "dashboards": [],
  "rules": [],
  "stream": {
    "description": "All error-level logs across every stream",
    "query": {
      "esql": "FROM logs* | WHERE log.level == \u0022error\u0022",
      "view": "logs.errors-view"
    },
    "type": "query"
  }
}'
```

