---
type: api
title: Update visualization
description: Replaces the full configuration of an existing Lens visualization. Partial updates are not supported.
url: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/kibana/v0/operation/operation-upsert-visualization
resource: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/kibana/v0/operation/operation-upsert-visualization
products:
  - Kibana
---

# Update visualization

Availability: Generally available since 9.5

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

## Paths

- `PUT` `/api/visualizations/{id}`

#### Path parameters

- `id` (string) — required
  The visualization identifier, as returned by the create or search endpoints.

## Description

Replaces the full configuration of an existing Lens visualization. Partial updates are not supported.
To make incremental changes, retrieve the visualization first, modify the fields you need, then send the complete object back.

If no visualization exists with the specified ID, a new one is created.

ES|QL visualizations cannot be updated through this endpoint.

## Authentication

- Api key: `Authorization: <value>`
  These APIs use key-based authentication. You must create an API key and use the encoded value in the request header. For example: `Authorization: ApiKey base64AccessApiKey`
- Basic: `Authorization: Basic <credentials>`

## Header parameters

- `kbn-xsrf` (string) — required
  A required header to protect against CSRF attacks

## Request body

`application/json`

Any of:
- **Metric Chart (library)**
  - `type` (enum) — required
    Values: `metric`
  - `breakdown_by` (union anyOf) — optional
    - **Date Histogram Operation**
      - `operation` (enum) — required
        Values: `date_histogram`
      - `collapse_by` (union anyOf) — optional
        Aggregation function used to collapse a breakdown dimension into a single value.
        Values: `avg`, `sum`, `max`, `min`
      - `columns` (number · default: 3) — optional
        Number of columns.
      - `drop_partial_intervals` (boolean · default: false) — optional
        When `true`, drops partial intervals from the results.
      - `field` (string) — required
        Field to be used for the date histogram.
      - `include_empty_rows` (boolean · default: true) — optional
        When `true`, includes empty rows in the results.
      - `label` (string) — optional
        Label for the operation
      - `suggested_interval` (string · default: auto) — optional
        Suggested time interval.
      - `use_original_time_range` (boolean · default: false) — optional
        When `true`, uses the original time range instead of the current query time range.
    - **Terms Operation**
      - `operation` (enum) — required
        Values: `terms`
      - `collapse_by` (union anyOf) — optional
        Aggregation function used to collapse a breakdown dimension into a single value.
        Values: `avg`, `sum`, `max`, `min`
      - `columns` (number · default: 3) — optional
        Number of columns.
      - `excludes` (object) — optional
        - `as_regex` (boolean) — optional
          When `true`, treats the values as regular expressions.
        - `values` (union string[] | number[]) — required
          Values to exclude.
      - `fields` (string[] · min items: 1 · max items: 4) — required
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        - **Numeric Format**
          Number or percentage format with optional decimal places, suffix, and compact notation.
          - `compact` (boolean · default: false) — optional
            When `true`, uses compact notation (for example, 1.2k instead of 1,200). Defaults to `false`.
          - `decimals` (number · default: 2) — optional
            Number of decimal places to display.
          - `suffix` (string) — optional
            Suffix appended to the formatted value.
          - `type` (enum) — required
            Value format type: `number` for plain numbers, `percent` for percentages.
            Values: `number`, `percent`
        - **Byte Format**
          Data size format in bits or bytes, with optional decimal places and suffix.
          - `decimals` (number · default: 2) — optional
            Number of decimal places to display.
          - `suffix` (string) — optional
            Suffix appended to the formatted value.
          - `type` (enum) — required
            Data size unit: `bits` or `bytes`.
            Values: `bits`, `bytes`
        - **Duration Format**
          Duration format between time units.
          - `compact` (boolean) — optional
            When `true`, uses short unit suffixes (for example, `ms` instead of `Milliseconds`). Defaults to `true`. Ignored for `auto-approximate`.
          - `decimals` (number) — optional
            Number of decimal places to display. Defaults to `0`. Ignored for `auto-approximate`.
          - `from` (enum) — required
            Source time unit of the raw field value, including fine-grained units (`ps`, `ns`, `us`) in addition to standard units. This describes how the stored data is encoded, not a query duration literal.
            Values: `ps`, `ns`, `us`, `ms`, `s`, `min`, `h`, `d`, `w`, `mo`, `y`
          - `suffix` (string) — optional
            Suffix appended to the formatted value.
          - `to` (enum) — required
            Display time unit: `auto` (precise), `auto-approximate`, or a fixed conversion unit.
            Values: `auto`, `auto-approximate`, `ms`, `s`, `min`, `h`, `d`, `w`, `mo`, `y`
          - `type` (enum) — required
            Values: `duration`
        - **Custom Format**
          Custom format using a Kibana field format pattern string.
          - `pattern` (string) — required
            Kibana field format pattern string.
          - `type` (enum) — required
            Values: `custom`
      - `includes` (object) — optional
        - `as_regex` (boolean) — optional
          When `true`, treats the values as regular expressions.
        - `values` (union string[] | number[]) — required
          Values to include.
      - `increase_accuracy` (boolean) — optional
        When `true`, increases accuracy at the cost of performance.
      - `label` (string) — optional
        Label for the operation
      - `limit` (number · default: 5) — optional
        Number of terms to return.
      - `other_bucket` (object) — optional
        - `include_documents_without_field` (boolean) — required
          When `true`, includes documents that do not have the specified field.
      - `rank_by` (union anyOf) — optional
        - **Terms Rank By Alphabetical**
          Terms ranked alphabetically.
          - `direction` (enum) — required
            Direction
            Values: `asc`, `desc`
          - `type` (enum) — required
            Values: `alphabetical`
        - **Terms Rank By Rarity**
          Terms ranked by rarity.
          - `max` (number) — required
            Maximum number of rare terms to include.
          - `type` (enum) — required
            Values: `rare`
        - **Terms Rank By Significance**
          Terms ranked by significance.
          - `type` (enum) — required
            Values: `significant`
        - **Terms Rank By Metric**
          Terms ranked by a linked metric.
          - `direction` (enum) — required
            Direction
            Values: `asc`, `desc`
          - `metric_index` (number · min: 0 · default: 0) — optional
            Zero-based index into the metrics array identifying which metric to rank by.
          - `type` (enum) — required
            Values: `metric`
        - **Terms Rank By Custom Operation**
          Terms ranked by custom operation.
          - `direction` (enum) — required
            Direction
            Values: `asc`, `desc`
          - `field` (string) — required
            Numeric field to be used for the custom operation.
          - `operation` (enum) — required
            Values: `min`, `max`, `average`, `median`, `standard_deviation`, `unique_count`, `sum`, `last_value`
          - `type` (enum) — required
            Values: `custom`
        - **Terms Rank By Custom Count Operation**
          Terms ranked by count, either of all documents or of a specific field.
          - `direction` (enum) — required
            Direction
            Values: `asc`, `desc`
          - `field` (string) — optional
            Numeric field to be used for the custom operation.
          - `operation` (enum) — required
            Values: `count`
          - `type` (enum) — required
            Values: `custom`
        - **Terms Rank By Percentile Operation**
          Terms ranked by a percentile of a numeric field, for example the 95th percentile of response time.
          - `direction` (enum) — required
            Direction
            Values: `asc`, `desc`
          - `field` (string) — required
            Numeric field to be used for the custom operation.
          - `operation` (enum) — required
            Values: `percentile`
          - `percentile` (number · default: 95) — optional
            The percentile threshold (0–100) at which to compute the field value used for ranking terms.
          - `type` (enum) — required
            Values: `custom`
        - **Terms Rank By Percentile Rank Operation**
          Terms ranked by the percentile rank of a single value: the proportion of field values at or below that value.
          - `direction` (enum) — required
            Direction
            Values: `asc`, `desc`
          - `field` (string) — required
            Numeric field to be used for the custom operation.
          - `operation` (enum) — required
            Values: `percentile_rank`
          - `rank` (number · default: 0) — optional
            The numeric value for which to compute the percentile rank (the percentage of field values at or below this value).
          - `type` (enum) — required
            Values: `custom`
    - **Histogram Operation**
      - `operation` (enum) — required
        Values: `histogram`
      - `collapse_by` (union anyOf) — optional
        Aggregation function used to collapse a breakdown dimension into a single value.
        Values: `avg`, `sum`, `max`, `min`
      - `columns` (number · default: 3) — optional
        Number of columns.
      - `field` (string) — required
        Field to be used for the histogram.
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `granularity` (union number | enum · default: auto) — optional
        Values: `auto`
      - `include_empty_rows` (boolean · default: true) — optional
        When `true`, includes empty rows in the results.
      - `label` (string) — optional
        Label for the operation
    - **Ranges Operation**
      - `operation` (enum) — required
        Values: `range`
      - `collapse_by` (union anyOf) — optional
        Aggregation function used to collapse a breakdown dimension into a single value.
        Values: `avg`, `sum`, `max`, `min`
      - `columns` (number · default: 3) — optional
        Number of columns.
      - `field` (string) — required
        Field to be used for the range.
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `ranges` (object[] · max items: 100) — required
        - `gt` (number) — optional
          Greater than.
        - `label` (string) — optional
          Label.
        - `lte` (number) — optional
          Less than or equal to.
    - **Filters Operation**
      - `operation` (enum) — required
        Values: `filters`
      - `collapse_by` (union anyOf) — optional
        Aggregation function used to collapse a breakdown dimension into a single value.
        Values: `avg`, `sum`, `max`, `min`
      - `columns` (number · default: 3) — optional
        Number of columns.
      - `filters` (object[] · max items: 100) — required
        - `filter` (object) — required
          A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
          - `expression` (string) — required
            A query expression in KQL or Lucene syntax
          - `language` (enum · default: kql) — optional
            Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
            Values: `kql`, `lucene`
        - `label` (string) — optional
          Label for the filter
      - `label` (string) — optional
        Label for the operation
  - `data_source` (union oneOf) — required
    - **Data view reference** (`type: data_view_reference`)
      - `type` (enum) — required
        Values: `data_view_reference`
      - `ref_id` (string) — required
        The id of the Kibana data view to use as the data source. Example: "my-data-view".
    - **Data view inline spec** (`type: data_view_spec`)
      - `type` (enum) — required
        Values: `data_view_spec`
      - `allow_hidden_indices` (boolean) — optional
        When `true`, allows the data view to match hidden indices.
      - `field_filters` (string[] · max items: 10000) — optional
        Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
      - `field_settings` (map string to anyOf) — optional
      - `index_pattern` (string · min length: 1) — required
        The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
      - `name` (string · min length: 1 · max length: 256) — optional
        The name of the data view. Example: "Sample data view".
      - `time_field` (string) — optional
        The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
  - `description` (string) — optional
    The description of the chart. Optional. Any string value or undefined.
  - `filters` (union[] · max items: 100) — optional
    Filters applied to the panel
  - `ignore_global_filters` (boolean · default: false) — optional
    When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
  - `metrics` (union anyOf[] · min items: 1 · max items: 2) — required
    Metric dimensions to display. The first must be a primary metric; an optional second must be a secondary metric.
    - **type: primary**
      - `type` (enum) — required
        Values: `primary`
      - `apply_color_to` (enum) — optional
        Color target: `value` colors the metric text, `background` colors the cell or panel background.
        Values: `value`, `background`
      - `background_chart` (union anyOf) — optional
        Secondary visualization displayed behind the primary metric value, either a bar chart (with optional max value) or a trend line.
        - **type: bar**
          - `type` (enum) — required
            Values: `bar`
          - `max_value` (union anyOf) — required
            Metric dimension configuration, supporting field-based aggregations (count, sum, average, median, standard deviation, unique count, last value), percentile operations, time-series operations (differences, moving average, cumulative sum, counter rate), and mathematical formulas.
            - **Formula Operation**
              - `operation` (enum) — required
                Values: `formula`
              - `filter` (object) — optional
                A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                - `expression` (string) — required
                  A query expression in KQL or Lucene syntax
                - `language` (enum · default: kql) — optional
                  Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                  Values: `kql`, `lucene`
              - `format` (union anyOf) — optional
                Number display format for the dimension value.
                Same options as `format` in `Terms Operation`
              - `formula` (string) — required
                Formula
              - `label` (string) — optional
                Label for the operation
              - `reduced_time_range` (string) — optional
                Reduced time range
              - `time_scale` (enum) — optional
                Time scale
                Values: `s`, `m`, `h`, `d`
            - **Static Operation Definition**
              - `operation` (enum) — required
                Values: `static_value`
              - `format` (union anyOf) — optional
                Number display format for the dimension value.
                Same options as `format` in `Terms Operation`
              - `label` (string) — optional
                Label for the operation
              - `value` (number · default: 100) — optional
                Static value
            - **Field Metric Operations**
            - **Differences Operation**
              - `operation` (enum) — required
                Values: `differences`
              - `filter` (object) — optional
                A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                - `expression` (string) — required
                  A query expression in KQL or Lucene syntax
                - `language` (enum · default: kql) — optional
                  Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                  Values: `kql`, `lucene`
              - `format` (union anyOf) — optional
                Number display format for the dimension value.
                Same options as `format` in `Terms Operation`
              - `label` (string) — optional
                Label for the operation
              - `of` (union anyOf) — required
                - **Count Metric Operation**
                  - `empty_as_null` (boolean · default: false) — optional
                    When `true`, treats empty buckets as null instead of zero.
                  - `field` (string) — optional
                    Field to be used for the metric
                  - `filter` (object) — optional
                    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                    - `expression` (string) — required
                      A query expression in KQL or Lucene syntax
                    - `language` (enum · default: kql) — optional
                      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                      Values: `kql`, `lucene`
                  - `format` (union anyOf) — optional
                    Number display format for the dimension value.
                    Same options as `format` in `Terms Operation`
                  - `label` (string) — optional
                    Label for the operation
                  - `operation` (enum) — required
                    Values: `count`
                  - `reduced_time_range` (string) — optional
                    Reduced time range
                  - `time_scale` (union anyOf) — optional
                    Time scale
                    Values: `s`, `m`, `h`, `d`
                  - `time_shift` (string) — optional
                    Time shift
                - **Unique Count Metric Operation**
                  - `empty_as_null` (boolean · default: false) — optional
                    When `true`, treats empty buckets as null instead of zero.
                  - `field` (string) — required
                    Field to be used for the metric
                  - `filter` (object) — optional
                    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                    - `expression` (string) — required
                      A query expression in KQL or Lucene syntax
                    - `language` (enum · default: kql) — optional
                      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                      Values: `kql`, `lucene`
                  - `format` (union anyOf) — optional
                    Number display format for the dimension value.
                    Same options as `format` in `Terms Operation`
                  - `label` (string) — optional
                    Label for the operation
                  - `operation` (enum) — required
                    Values: `unique_count`
                  - `reduced_time_range` (string) — optional
                    Reduced time range
                  - `time_scale` (union anyOf) — optional
                    Time scale
                    Values: `s`, `m`, `h`, `d`
                  - `time_shift` (string) — optional
                    Time shift
                - **Stats Metric Operation**
                  - `field` (string) — required
                    Field to be used for the metric
                  - `filter` (object) — optional
                    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                    - `expression` (string) — required
                      A query expression in KQL or Lucene syntax
                    - `language` (enum · default: kql) — optional
                      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                      Values: `kql`, `lucene`
                  - `format` (union anyOf) — optional
                    Number display format for the dimension value.
                    Same options as `format` in `Terms Operation`
                  - `label` (string) — optional
                    Label for the operation
                  - `operation` (enum) — required
                    Values: `min`, `max`, `average`, `median`, `standard_deviation`
                  - `reduced_time_range` (string) — optional
                    Reduced time range
                  - `time_scale` (union anyOf) — optional
                    Time scale
                    Values: `s`, `m`, `h`, `d`
                  - `time_shift` (string) — optional
                    Time shift
                - **Sum Metric Operation**
                  - `empty_as_null` (boolean · default: false) — optional
                    When `true`, treats empty buckets as null instead of zero.
                  - `field` (string) — required
                    Field to be used for the metric
                  - `filter` (object) — optional
                    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                    - `expression` (string) — required
                      A query expression in KQL or Lucene syntax
                    - `language` (enum · default: kql) — optional
                      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                      Values: `kql`, `lucene`
                  - `format` (union anyOf) — optional
                    Number display format for the dimension value.
                    Same options as `format` in `Terms Operation`
                  - `label` (string) — optional
                    Label for the operation
                  - `operation` (enum) — required
                    Values: `sum`
                  - `reduced_time_range` (string) — optional
                    Reduced time range
                  - `time_scale` (union anyOf) — optional
                    Time scale
                    Values: `s`, `m`, `h`, `d`
                  - `time_shift` (string) — optional
                    Time shift
                - **Last Value Operation**
                  - `field` (string) — required
                    Field to be used for the metric
                  - `filter` (object) — optional
                    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                    - `expression` (string) — required
                      A query expression in KQL or Lucene syntax
                    - `language` (enum · default: kql) — optional
                      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                      Values: `kql`, `lucene`
                  - `format` (union anyOf) — optional
                    Number display format for the dimension value.
                    Same options as `format` in `Terms Operation`
                  - `label` (string) — optional
                    Label for the operation
                  - `multi_value` (boolean · default: false) — optional
                    Whether to return all values for multi-value fields. Only affects data table and metric charts; other charts use the last value from the array.
                  - `operation` (enum) — required
                    Values: `last_value`
                  - `reduced_time_range` (string) — optional
                    Reduced time range
                  - `time_field` (string) — required
                    Time field used to determine document recency
                  - `time_scale` (union anyOf) — optional
                    Time scale
                    Values: `s`, `m`, `h`, `d`
                  - `time_shift` (string) — optional
                    Time shift
                - **Percentile Operation**
                  - `field` (string) — required
                    Field to be used for the metric
                  - `filter` (object) — optional
                    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                    - `expression` (string) — required
                      A query expression in KQL or Lucene syntax
                    - `language` (enum · default: kql) — optional
                      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                      Values: `kql`, `lucene`
                  - `format` (union anyOf) — optional
                    Number display format for the dimension value.
                    Same options as `format` in `Terms Operation`
                  - `label` (string) — optional
                    Label for the operation
                  - `operation` (enum) — required
                    Values: `percentile`
                  - `percentile` (number · default: 95) — optional
                    Percentile
                  - `reduced_time_range` (string) — optional
                    Reduced time range
                  - `time_scale` (union anyOf) — optional
                    Time scale
                    Values: `s`, `m`, `h`, `d`
                  - `time_shift` (string) — optional
                    Time shift
                - **Percentile Ranks Operation**
                  - `field` (string) — required
                    Field to be used for the metric
                  - `filter` (object) — optional
                    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                    - `expression` (string) — required
                      A query expression in KQL or Lucene syntax
                    - `language` (enum · default: kql) — optional
                      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                      Values: `kql`, `lucene`
                  - `format` (union anyOf) — optional
                    Number display format for the dimension value.
                    Same options as `format` in `Terms Operation`
                  - `label` (string) — optional
                    Label for the operation
                  - `operation` (enum) — required
                    Values: `percentile_rank`
                  - `rank` (number · default: 0) — optional
                    Percentile Rank
                  - `reduced_time_range` (string) — optional
                    Reduced time range
                  - `time_scale` (union anyOf) — optional
                    Time scale
                    Values: `s`, `m`, `h`, `d`
                  - `time_shift` (string) — optional
                    Time shift
              - `reduced_time_range` (string) — optional
                Reduced time range
              - `time_scale` (union anyOf) — optional
                Time scale
                Values: `s`, `m`, `h`, `d`
              - `time_shift` (string) — optional
                Time shift
            - **Moving Average Operation**
              - `operation` (enum) — required
                Values: `moving_average`
              - `filter` (object) — optional
                A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                - `expression` (string) — required
                  A query expression in KQL or Lucene syntax
                - `language` (enum · default: kql) — optional
                  Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                  Values: `kql`, `lucene`
              - `format` (union anyOf) — optional
                Number display format for the dimension value.
                Same options as `format` in `Terms Operation`
              - `label` (string) — optional
                Label for the operation
              - `of` (union anyOf) — required
                Same options as `of` in `Differences Operation`
              - `reduced_time_range` (string) — optional
                Reduced time range
              - `time_scale` (union anyOf) — optional
                Time scale
                Values: `s`, `m`, `h`, `d`
              - `time_shift` (string) — optional
                Time shift
              - `window` (number · default: 5) — optional
                Window
            - **Cumulative Sum Operation**
              - `operation` (enum) — required
                Values: `cumulative_sum`
              - `field` (string) — optional
                Field to cumulatively sum. When omitted, cumulative sum is applied to the count of records.
              - `filter` (object) — optional
                A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                - `expression` (string) — required
                  A query expression in KQL or Lucene syntax
                - `language` (enum · default: kql) — optional
                  Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                  Values: `kql`, `lucene`
              - `format` (union anyOf) — optional
                Number display format for the dimension value.
                Same options as `format` in `Terms Operation`
              - `label` (string) — optional
                Label for the operation
              - `reduced_time_range` (string) — optional
                Reduced time range
              - `time_scale` (union anyOf) — optional
                Time scale
                Values: `s`, `m`, `h`, `d`
              - `time_shift` (string) — optional
                Time shift
            - **Counter Rate Operation**
              - `operation` (enum) — required
                Values: `counter_rate`
              - `field` (string) — required
                Field to be used for the metric
              - `filter` (object) — optional
                A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                - `expression` (string) — required
                  A query expression in KQL or Lucene syntax
                - `language` (enum · default: kql) — optional
                  Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                  Values: `kql`, `lucene`
              - `format` (union anyOf) — optional
                Number display format for the dimension value.
                Same options as `format` in `Terms Operation`
              - `label` (string) — optional
                Label for the operation
              - `reduced_time_range` (string) — optional
                Reduced time range
              - `time_scale` (union anyOf) — optional
                Time scale
                Values: `s`, `m`, `h`, `d`
              - `time_shift` (string) — optional
                Time shift
            - **Count Metric Operation**
              - `operation` (enum) — required
                Values: `count`
              - `empty_as_null` (boolean · default: false) — optional
                When `true`, treats empty buckets as null instead of zero.
              - `field` (string) — optional
                Field to be used for the metric
              - `filter` (object) — optional
                A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                - `expression` (string) — required
                  A query expression in KQL or Lucene syntax
                - `language` (enum · default: kql) — optional
                  Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                  Values: `kql`, `lucene`
              - `format` (union anyOf) — optional
                Number display format for the dimension value.
                Same options as `format` in `Terms Operation`
              - `label` (string) — optional
                Label for the operation
              - `reduced_time_range` (string) — optional
                Reduced time range
              - `time_scale` (union anyOf) — optional
                Time scale
                Values: `s`, `m`, `h`, `d`
              - `time_shift` (string) — optional
                Time shift
            - **Unique Count Metric Operation**
              - `operation` (enum) — required
                Values: `unique_count`
              - `empty_as_null` (boolean · default: false) — optional
                When `true`, treats empty buckets as null instead of zero.
              - `field` (string) — required
                Field to be used for the metric
              - `filter` (object) — optional
                A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                - `expression` (string) — required
                  A query expression in KQL or Lucene syntax
                - `language` (enum · default: kql) — optional
                  Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                  Values: `kql`, `lucene`
              - `format` (union anyOf) — optional
                Number display format for the dimension value.
                Same options as `format` in `Terms Operation`
              - `label` (string) — optional
                Label for the operation
              - `reduced_time_range` (string) — optional
                Reduced time range
              - `time_scale` (union anyOf) — optional
                Time scale
                Values: `s`, `m`, `h`, `d`
              - `time_shift` (string) — optional
                Time shift
            - **Last Value Operation**
              - `operation` (enum) — required
                Values: `last_value`
              - `field` (string) — required
                Field to be used for the metric
              - `filter` (object) — optional
                A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                - `expression` (string) — required
                  A query expression in KQL or Lucene syntax
                - `language` (enum · default: kql) — optional
                  Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                  Values: `kql`, `lucene`
              - `format` (union anyOf) — optional
                Number display format for the dimension value.
                Same options as `format` in `Terms Operation`
              - `label` (string) — optional
                Label for the operation
              - `multi_value` (boolean · default: false) — optional
                Whether to return all values for multi-value fields. Only affects data table and metric charts; other charts use the last value from the array.
              - `reduced_time_range` (string) — optional
                Reduced time range
              - `time_field` (string) — required
                Time field used to determine document recency
              - `time_scale` (union anyOf) — optional
                Time scale
                Values: `s`, `m`, `h`, `d`
              - `time_shift` (string) — optional
                Time shift
            - **Percentile Operation**
              - `operation` (enum) — required
                Values: `percentile`
              - `field` (string) — required
                Field to be used for the metric
              - `filter` (object) — optional
                A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                - `expression` (string) — required
                  A query expression in KQL or Lucene syntax
                - `language` (enum · default: kql) — optional
                  Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                  Values: `kql`, `lucene`
              - `format` (union anyOf) — optional
                Number display format for the dimension value.
                Same options as `format` in `Terms Operation`
              - `label` (string) — optional
                Label for the operation
              - `percentile` (number · default: 95) — optional
                Percentile
              - `reduced_time_range` (string) — optional
                Reduced time range
              - `time_scale` (union anyOf) — optional
                Time scale
                Values: `s`, `m`, `h`, `d`
              - `time_shift` (string) — optional
                Time shift
            - **Percentile Ranks Operation**
              - `operation` (enum) — required
                Values: `percentile_rank`
              - `field` (string) — required
                Field to be used for the metric
              - `filter` (object) — optional
                A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
                - `expression` (string) — required
                  A query expression in KQL or Lucene syntax
                - `language` (enum · default: kql) — optional
                  Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                  Values: `kql`, `lucene`
              - `format` (union anyOf) — optional
                Number display format for the dimension value.
                Same options as `format` in `Terms Operation`
              - `label` (string) — optional
                Label for the operation
              - `rank` (number · default: 0) — optional
                Percentile Rank
              - `reduced_time_range` (string) — optional
                Reduced time range
              - `time_scale` (union anyOf) — optional
                Time scale
                Values: `s`, `m`, `h`, `d`
              - `time_shift` (string) — optional
                Time shift
          - `orientation` (enum) — optional
            Orientation
            Values: `horizontal`, `vertical`
        - **type: trend**
          - `type` (enum) — required
            Values: `trend`
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration for the primary metric value or background.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Static Color**
          Fixed color for all values in the dimension.
          - `type` (enum) — required
            Values: `static`
          - `color` (string) — required
            The static color to be used for all values.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `subtitle` (string) — optional
        Subtitle below the primary metric value.
    - **type: secondary**
      - `type` (enum) — required
        Values: `secondary`
      - `color` (union anyOf · default: {
  "type": "none"
}) — optional
        - **Static Color**
          Fixed color for all values in the dimension.
          - `type` (enum) — required
            Values: `static`
          - `color` (string) — required
            The static color to be used for all values.
        - **No Color**
          Explicitly disables coloring
          - `type` (enum) — required
            Values: `none`
      - `compare` (union anyOf) — optional
        Compare the secondary metric to a baseline value or to the primary metric.
        - **Compare To Baseline**
          - `to` (enum) — required
            Values: `baseline`
          - `baseline` (number · default: 0) — optional
            Baseline value.
          - `icon` (boolean · default: true) — optional
            When `true`, displays the icon for the secondary value.
          - `palette` (string · default: compare_to) — optional
            Color palette name. Accepted values: 'default', 'elastic_line_optimized', 'severity', 'eui_amsterdam', 'kibana_v7_legacy', 'elastic_brand_2023'. Defaults to `default`.
          - `value` (boolean · default: true) — optional
            When `true`, displays the secondary value.
        - **Compare To Primary**
          - `to` (enum) — required
            Values: `primary`
          - `icon` (boolean · default: true) — optional
            When `true`, displays the icon for the secondary value.
          - `palette` (string · default: compare_to) — optional
            Color palette name. Accepted values: 'default', 'elastic_line_optimized', 'severity', 'eui_amsterdam', 'kibana_v7_legacy', 'elastic_brand_2023'. Defaults to `default`.
          - `value` (boolean · default: true) — optional
            When `true`, displays the secondary value.
  - `query` (object) — optional
    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
    - `expression` (string) — required
      A query expression in KQL or Lucene syntax
    - `language` (enum · default: kql) — optional
      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
      Values: `kql`, `lucene`
  - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
    Sampling factor between 0 (no sampling) and 1 (full sampling).
  - `styling` (object) — optional
    Visual chart styling options
    - `density` (enum · default: default) — optional
      Density preset for the metric chart layout. Use `compact` for a compact layout, or `default` for increased padding, element spacing, and font size.
      Values: `compact`, `default`
    - `icon` (object) — optional
      Icon configuration for the metric chart
      - `alignment` (enum · default: right) — optional
        Icon alignment. Accepted values: `left`, `right`. Defaults to `right`.
        Values: `left`, `right`
      - `name` (enum) — required
        Icon name
        Values: `alert`, `asterisk`, `bell`, `bolt`, `bug`, `compute`, `editor_comment`, `flag`, `globe`, `heart`, `map_marker`, `pin`, `sort_down`, `sort_up`, `star_empty`, `tag`, `temperature`
    - `primary` (object) — optional
      - `labels` (object) — optional
        Labels (title and subtitle) configuration
        - `alignment` (enum · default: left) — optional
          Horizontal alignment for the title and subtitle text. Accepted values: `left`, `center`, `right`. Defaults to `left`.
          Values: `left`, `center`, `right`
      - `position` (enum · default: bottom) — optional
        Position of the primary metric value (top, middle, or bottom).
        Values: `top`, `middle`, `bottom`
      - `value` (object) — optional
        Primary metric value configuration
        - `alignment` (enum · default: right) — optional
          Alignment for the primary metric value. Accepted values: `left`, `center`, `right`. Defaults to `right`.
          Values: `left`, `center`, `right`
        - `sizing` (enum · default: auto) — optional
          Controls how the primary value text is sized within the panel. 'auto' selects a font size from predefined breakpoints based on panel height, then shrinks if the text overflows horizontally. 'fill' scales the text to be as large as possible, filling all available space.
          Values: `auto`, `fill`
    - `secondary` (object) — optional
      - `label` (object) — optional
        - `placement` (enum · default: before) — optional
          How the secondary metric name is shown: before the value, after the value, or in a tooltip. Ignored when the label is not visible.
          Values: `before`, `after`, `tooltip`
        - `visible` (boolean · default: false) — optional
          When `true`, displays the secondary metric name as its label.
      - `value` (object) — optional
        Secondary metric value configuration
        - `alignment` (enum · default: right) — optional
          Alignment for secondary values. Accepted values: `left`, `center`, `right`. Defaults to `right`.
          Values: `left`, `center`, `right`
  - `tags` (string[] · max items: 1000 · default: []) — optional
    Tag IDs to associate with this visualization.
  - `title` (string) — optional
    The title of the chart displayed in the panel. Optional. Any string value or undefined.
- **Legacy Metric Chart (library)**
  - `type` (enum) — required
    Values: `legacy_metric`
  - `data_source` (union oneOf) — required
    - **Data view reference** (`type: data_view_reference`)
      - `type` (enum) — required
        Values: `data_view_reference`
      - `ref_id` (string) — required
        The id of the Kibana data view to use as the data source. Example: "my-data-view".
    - **Data view inline spec** (`type: data_view_spec`)
      - `type` (enum) — required
        Values: `data_view_spec`
      - `allow_hidden_indices` (boolean) — optional
        When `true`, allows the data view to match hidden indices.
      - `field_filters` (string[] · max items: 10000) — optional
        Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
      - `field_settings` (map string to anyOf) — optional
      - `index_pattern` (string · min length: 1) — required
        The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
      - `name` (string · min length: 1 · max length: 256) — optional
        The name of the data view. Example: "Sample data view".
      - `time_field` (string) — optional
        The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
  - `description` (string) — optional
    The description of the chart. Optional. Any string value or undefined.
  - `filters` (union[] · max items: 100) — optional
    Filters applied to the panel
  - `ignore_global_filters` (boolean · default: false) — optional
    When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
  - `metric` (union anyOf) — required
    - **Count Metric Operation**
      - `apply_color_to` (enum) — optional
        Color target: `value` colors the metric text, `background` colors the cell or panel background.
        Values: `value`, `background`
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration based on the metric value.
        - **Color By Value (Absolute)**
          Color by absolute value configuration
          - `type` (enum) — required
            Values: `dynamic`
          - `range` (enum) — required
            Values: `absolute`
          - `steps` (object[] · min items: 1 · max items: 100) — required
            Array of ordered color steps defining the range each color is applied.
            - `color` (string) — required
              The color to use for this step.
            - `gte` (number) — optional — nullable
              The lower bound of range from which this color applies (inclusive).
            - `lt` (number) — optional — nullable
              The upper bound of range to which this color applies (exclusive).
            - `lte` (number) — optional — nullable
              The upper bound of range to which this color applies (inclusive).
        - **Color By Value (Palette)**
          Color by value using a palette, with colors distributed across the range of values.
          - `type` (enum) — required
            Values: `distributed_palette`
          - `palette` (enum) — required
            The name of the palette to apply across the value range.
            Values: `status`, `temperature`, `complementary`, `negative`, `positive`, `cool`, `warm`, `gray`
        - **Legacy color by value (absolute)**
          Legacy color by absolute value configuration
          - `type` (enum) — required
            Values: `legacy_dynamic`
          - `palette` (string) — required
            The legacy palette name.
          - `range` (enum) — required
            Values: `absolute`
          - `shift` (boolean) — required
            When `true`, shifts the palette colors so they start from a different offset. Defaults to `false`.
          - `steps` (object[] · min items: 1 · max items: 100) — required
            Array of ordered color steps defining the range each color is applied.
            - `color` (string) — required
              The color to use for this step.
            - `gte` (number) — optional — nullable
              The lower bound of range from which this color applies (inclusive).
            - `lt` (number) — optional — nullable
              The upper bound of range to which this color applies (exclusive).
            - `lte` (number) — optional — nullable
              The upper bound of range to which this color applies (inclusive).
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `labels` (object) — optional
        Labels configuration
        - `alignment` (enum · default: top) — optional
          Label alignment
          Values: `top`, `bottom`
      - `size` (enum · default: m) — optional
        Font size for the label and value
        Values: `xs`, `s`, `m`, `l`, `xl`, `xxl`
      - `values` (object) — optional
        Values configuration
        - `alignment` (enum · default: left) — optional
          Value alignment
          Values: `left`, `center`, `right`
      - `empty_as_null` (boolean · default: false) — optional
        When `true`, treats empty buckets as null instead of zero.
      - `field` (string) — optional
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `count`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Unique Count Metric Operation**
      - `apply_color_to` (enum) — optional
        Color target: `value` colors the metric text, `background` colors the cell or panel background.
        Values: `value`, `background`
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration based on the metric value.
        Same options as `color` in `Count Metric Operation`
      - `labels` (object) — optional
        Labels configuration
        - `alignment` (enum · default: top) — optional
          Label alignment
          Values: `top`, `bottom`
      - `size` (enum · default: m) — optional
        Font size for the label and value
        Values: `xs`, `s`, `m`, `l`, `xl`, `xxl`
      - `values` (object) — optional
        Values configuration
        - `alignment` (enum · default: left) — optional
          Value alignment
          Values: `left`, `center`, `right`
      - `empty_as_null` (boolean · default: false) — optional
        When `true`, treats empty buckets as null instead of zero.
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `unique_count`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Stats Metric Operation**
      - `apply_color_to` (enum) — optional
        Color target: `value` colors the metric text, `background` colors the cell or panel background.
        Values: `value`, `background`
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration based on the metric value.
        Same options as `color` in `Count Metric Operation`
      - `labels` (object) — optional
        Labels configuration
        - `alignment` (enum · default: top) — optional
          Label alignment
          Values: `top`, `bottom`
      - `size` (enum · default: m) — optional
        Font size for the label and value
        Values: `xs`, `s`, `m`, `l`, `xl`, `xxl`
      - `values` (object) — optional
        Values configuration
        - `alignment` (enum · default: left) — optional
          Value alignment
          Values: `left`, `center`, `right`
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `min`, `max`, `average`, `median`, `standard_deviation`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Sum Metric Operation**
      - `apply_color_to` (enum) — optional
        Color target: `value` colors the metric text, `background` colors the cell or panel background.
        Values: `value`, `background`
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration based on the metric value.
        Same options as `color` in `Count Metric Operation`
      - `labels` (object) — optional
        Labels configuration
        - `alignment` (enum · default: top) — optional
          Label alignment
          Values: `top`, `bottom`
      - `size` (enum · default: m) — optional
        Font size for the label and value
        Values: `xs`, `s`, `m`, `l`, `xl`, `xxl`
      - `values` (object) — optional
        Values configuration
        - `alignment` (enum · default: left) — optional
          Value alignment
          Values: `left`, `center`, `right`
      - `empty_as_null` (boolean · default: false) — optional
        When `true`, treats empty buckets as null instead of zero.
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `sum`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Last Value Operation**
      - `apply_color_to` (enum) — optional
        Color target: `value` colors the metric text, `background` colors the cell or panel background.
        Values: `value`, `background`
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration based on the metric value.
        Same options as `color` in `Count Metric Operation`
      - `labels` (object) — optional
        Labels configuration
        - `alignment` (enum · default: top) — optional
          Label alignment
          Values: `top`, `bottom`
      - `size` (enum · default: m) — optional
        Font size for the label and value
        Values: `xs`, `s`, `m`, `l`, `xl`, `xxl`
      - `values` (object) — optional
        Values configuration
        - `alignment` (enum · default: left) — optional
          Value alignment
          Values: `left`, `center`, `right`
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `multi_value` (boolean · default: false) — optional
        Whether to return all values for multi-value fields. Only affects data table and metric charts; other charts use the last value from the array.
      - `operation` (enum) — required
        Values: `last_value`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_field` (string) — required
        Time field used to determine document recency
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Percentile Operation**
      - `apply_color_to` (enum) — optional
        Color target: `value` colors the metric text, `background` colors the cell or panel background.
        Values: `value`, `background`
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration based on the metric value.
        Same options as `color` in `Count Metric Operation`
      - `labels` (object) — optional
        Labels configuration
        - `alignment` (enum · default: top) — optional
          Label alignment
          Values: `top`, `bottom`
      - `size` (enum · default: m) — optional
        Font size for the label and value
        Values: `xs`, `s`, `m`, `l`, `xl`, `xxl`
      - `values` (object) — optional
        Values configuration
        - `alignment` (enum · default: left) — optional
          Value alignment
          Values: `left`, `center`, `right`
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `percentile`
      - `percentile` (number · default: 95) — optional
        Percentile
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Percentile Ranks Operation**
      - `apply_color_to` (enum) — optional
        Color target: `value` colors the metric text, `background` colors the cell or panel background.
        Values: `value`, `background`
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration based on the metric value.
        Same options as `color` in `Count Metric Operation`
      - `labels` (object) — optional
        Labels configuration
        - `alignment` (enum · default: top) — optional
          Label alignment
          Values: `top`, `bottom`
      - `size` (enum · default: m) — optional
        Font size for the label and value
        Values: `xs`, `s`, `m`, `l`, `xl`, `xxl`
      - `values` (object) — optional
        Values configuration
        - `alignment` (enum · default: left) — optional
          Value alignment
          Values: `left`, `center`, `right`
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `percentile_rank`
      - `rank` (number · default: 0) — optional
        Percentile Rank
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Formula Operation**
      - `apply_color_to` (enum) — optional
        Color target: `value` colors the metric text, `background` colors the cell or panel background.
        Values: `value`, `background`
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration based on the metric value.
        Same options as `color` in `Count Metric Operation`
      - `labels` (object) — optional
        Labels configuration
        - `alignment` (enum · default: top) — optional
          Label alignment
          Values: `top`, `bottom`
      - `size` (enum · default: m) — optional
        Font size for the label and value
        Values: `xs`, `s`, `m`, `l`, `xl`, `xxl`
      - `values` (object) — optional
        Values configuration
        - `alignment` (enum · default: left) — optional
          Value alignment
          Values: `left`, `center`, `right`
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `formula` (string) — required
        Formula
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `formula`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (enum) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
  - `query` (object) — optional
    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
    - `expression` (string) — required
      A query expression in KQL or Lucene syntax
    - `language` (enum · default: kql) — optional
      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
      Values: `kql`, `lucene`
  - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
    Sampling factor between 0 (no sampling) and 1 (full sampling).
  - `tags` (string[] · max items: 1000 · default: []) — optional
    Tag IDs to associate with this visualization.
  - `title` (string) — optional
    The title of the chart displayed in the panel. Optional. Any string value or undefined.
- **XY Chart (library)**
  - `type` (enum) — required
    Values: `xy`
  - `axis` (object) — optional
    Axis configuration for X, Y, and Y2 axes. The Y axis is on the start (leading) side, the Y2 axis is on the end (trailing) side.
    - `x` (object) — optional
      X-axis configuration
      - `domain` (union anyOf) — optional
        X-axis domain configuration
        - **type: fit**
          Uses tight domain bounds from the observed data minimum to maximum, without baseline expansion.
          - `type` (enum) — required
            Values: `fit`
          - `rounding` (boolean · default: true) — optional
            Whether to round axis domain bounds outward to readable “nice” values (for example 1, 5, 10, 100) instead of exact data min/max.
        - **type: custom**
          Uses explicitly provided domain bounds (min and max).
          - `type` (enum) — required
            Values: `custom`
          - `max` (number) — required
            Max domain value
          - `min` (number) — required
            Min domain value
          - `rounding` (boolean · default: true) — optional
            Whether to round axis domain bounds outward to readable “nice” values (for example 1, 5, 10, 100) instead of exact data min/max.
      - `grid` (object) — optional
        Axis grid lines configuration
        - `visible` (boolean) — required
          Show grid lines for this axis
      - `labels` (object) — optional
        Label configuration
        - `orientation` (enum) — optional
          Orientation
          Values: `horizontal`, `vertical`, `angled`
      - `scale` (enum) — optional
        X-axis scale type. Use 'temporal' for timestamp/date fields (for example, @timestamp or DATE_TRUNC results). Use 'ordinal' for categorical/text fields. Use 'linear' for numeric fields.
        Values: `ordinal`, `temporal`, `linear`
      - `ticks` (object) — optional
        Axis tick marks configuration
        - `visible` (boolean) — required
          Show tick marks on the axis
      - `title` (object) — optional
        Axis title configuration
        - `text` (string) — optional
          Axis title text.
        - `visible` (boolean) — optional
          When `true`, displays the title.
    - `y` (object) — optional
      Y-axis configuration with scale and bounds. The axis position is determined by the key: y renders on the start side (left in vertical charts), y2 on the end side (right in vertical charts).
      - `domain` (union oneOf · default: {
  "rounding": true,
  "type": "full"
}) — optional
        Y-axis domain configuration
        - **type: full** (`type: full`)
          Uses the full chart domain, including baseline expansion when applicable (for example, includes zero for bar-like series).
          - `type` (enum) — required
            Values: `full`
          - `rounding` (boolean · default: true) — optional
            Whether to round axis domain bounds outward to readable “nice” values (for example 1, 5, 10, 100) instead of exact data min/max.
        - **type: fit** (`type: fit`)
          Uses tight domain bounds from the observed data minimum to maximum, without baseline expansion.
          - `type` (enum) — required
            Values: `fit`
          - `rounding` (boolean · default: true) — optional
            Whether to round axis domain bounds outward to readable “nice” values (for example 1, 5, 10, 100) instead of exact data min/max.
        - **type: custom** (`type: custom`)
          Uses explicitly provided domain bounds (min and max).
          - `type` (enum) — required
            Values: `custom`
          - `max` (number) — required
            Max domain value
          - `min` (number) — required
            Min domain value
          - `rounding` (boolean · default: true) — optional
            Whether to round axis domain bounds outward to readable “nice” values (for example 1, 5, 10, 100) instead of exact data min/max.
      - `grid` (object) — optional
        Axis grid lines configuration
        - `visible` (boolean) — required
          Show grid lines for this axis
      - `labels` (object) — optional
        Label configuration
        - `orientation` (enum) — optional
          Orientation
          Values: `horizontal`, `vertical`, `angled`
      - `scale` (enum) — optional
        Y-axis scale type for data transformation
        Values: `linear`, `log`, `sqrt`
      - `ticks` (object) — optional
        Axis tick marks configuration
        - `visible` (boolean) — required
          Show tick marks on the axis
      - `title` (object) — optional
        Axis title configuration
        - `text` (string) — optional
          Axis title text.
        - `visible` (boolean) — optional
          When `true`, displays the title.
    - `y2` (object) — optional
      Y-axis configuration with scale and bounds. The axis position is determined by the key: y renders on the start side (left in vertical charts), y2 on the end side (right in vertical charts).
      - `domain` (union oneOf · default: {
  "rounding": true,
  "type": "full"
}) — optional
        Y-axis domain configuration
        - **type: full** (`type: full`)
          Uses the full chart domain, including baseline expansion when applicable (for example, includes zero for bar-like series).
          - `type` (enum) — required
            Values: `full`
          - `rounding` (boolean · default: true) — optional
            Whether to round axis domain bounds outward to readable “nice” values (for example 1, 5, 10, 100) instead of exact data min/max.
        - **type: fit** (`type: fit`)
          Uses tight domain bounds from the observed data minimum to maximum, without baseline expansion.
          - `type` (enum) — required
            Values: `fit`
          - `rounding` (boolean · default: true) — optional
            Whether to round axis domain bounds outward to readable “nice” values (for example 1, 5, 10, 100) instead of exact data min/max.
        - **type: custom** (`type: custom`)
          Uses explicitly provided domain bounds (min and max).
          - `type` (enum) — required
            Values: `custom`
          - `max` (number) — required
            Max domain value
          - `min` (number) — required
            Min domain value
          - `rounding` (boolean · default: true) — optional
            Whether to round axis domain bounds outward to readable “nice” values (for example 1, 5, 10, 100) instead of exact data min/max.
      - `grid` (object) — optional
        Axis grid lines configuration
        - `visible` (boolean) — required
          Show grid lines for this axis
      - `labels` (object) — optional
        Label configuration
        - `orientation` (enum) — optional
          Orientation
          Values: `horizontal`, `vertical`, `angled`
      - `scale` (enum) — optional
        Y-axis scale type for data transformation
        Values: `linear`, `log`, `sqrt`
      - `ticks` (object) — optional
        Axis tick marks configuration
        - `visible` (boolean) — required
          Show tick marks on the axis
      - `title` (object) — optional
        Axis title configuration
        - `text` (string) — optional
          Axis title text.
        - `visible` (boolean) — optional
          When `true`, displays the title.
  - `description` (string) — optional
    The description of the chart. Optional. Any string value or undefined.
  - `filters` (union[] · max items: 100) — optional
    Filters applied to the panel
  - `layers` (union anyOf[] · min items: 1 · max items: 100) — required
    Chart layers
    - **Layer (DSL)**
      Data layer for standard queries with metrics and buckets
      - `breakdown_by` (union anyOf) — optional
        - **Date Histogram Operation**
          - `operation` (enum) — required
            Values: `date_histogram`
          - `aggregate_first` (boolean) — optional
            When `true`, aggregates data before splitting into series. Defaults to `false`.
          - `collapse_by` (union anyOf) — optional
            Aggregation function used to collapse a breakdown dimension into a single value.
            Values: `avg`, `sum`, `max`, `min`
          - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
            Color mapping for dimension values, either categorical (for specific values) or as a gradient.
            - **Categorical Color Mapping**
              Palette color assignment for specific categorical values. Unmapped values receive the unassigned color.
              - `mode` (enum) — required
                Values: `categorical`
              - `mapping` (object[] · max items: 1000) — required
                - `color` (union anyOf) — required
                  - **Color From Palette**
                    Color at a fixed index position in a named palette.
                    - `type` (enum) — required
                      Values: `from_palette`
                    - `index` (number) — required
                      The index of the color in the palette.
                    - `palette` (string) — optional
                      Color palette name. Accepted values: 'default', 'elastic_line_optimized', 'severity', 'eui_amsterdam', 'kibana_v7_legacy', 'elastic_brand_2023'. Defaults to `default`.
                  - **Color Code**
                    A color specified as a hex or CSS color code string.
                    - `type` (enum) — required
                      Values: `color_code`
                    - `value` (string) — required
                      The static color value to use.
                - `values` (union anyOf[] · max items: 1000) — required
                  - **string**
                  - **number**
                  - **Range Key**
                    - `type` (enum) — required
                      Values: `range_key`
                    - `from` (number | string) — required
                    - `ranges` (object[] · max items: 100) — required
                      - `from` (number | string) — required
                      - `label` (string) — required
                      - `to` (number | string) — required
                    - `to` (number | string) — required
                  - **Multi Field Key**
                    - `type` (enum) — required
                      Values: `multi_field_key`
                    - `keys` (string[] · max items: 100) — required
              - `palette` (string) — required
                Color palette name. Accepted values: 'default', 'elastic_line_optimized', 'severity', 'eui_amsterdam', 'kibana_v7_legacy', 'elastic_brand_2023'. Defaults to `default`.
              - `unassigned` (union anyOf) — optional
                The color to use for unassigned values.
                - **Color From Palette**
                  Color at a fixed index position in a named palette.
                  - `type` (enum) — required
                    Values: `from_palette`
                  - `index` (number) — required
                    The index of the color in the palette.
                  - `palette` (string) — optional
                    Color palette name. Accepted values: 'default', 'elastic_line_optimized', 'severity', 'eui_amsterdam', 'kibana_v7_legacy', 'elastic_brand_2023'. Defaults to `default`.
                - **Color Code**
                  A color specified as a hex or CSS color code string.
                  - `type` (enum) — required
                    Values: `color_code`
                  - `value` (string) — required
                    The static color value to use.
            - **Gradient Color Mapping**
              Gradient color mapping across categorical values.
              - `mode` (enum) — required
                Values: `gradient`
              - `gradient` (union anyOf[] · max items: 3) — optional
                - **Color From Palette**
                  Color at a fixed index position in a named palette.
                  - `type` (enum) — required
                    Values: `from_palette`
                  - `index` (number) — required
                    The index of the color in the palette.
                  - `palette` (string) — optional
                    Color palette name. Accepted values: 'default', 'elastic_line_optimized', 'severity', 'eui_amsterdam', 'kibana_v7_legacy', 'elastic_brand_2023'. Defaults to `default`.
                - **Color Code**
                  A color specified as a hex or CSS color code string.
                  - `type` (enum) — required
                    Values: `color_code`
                  - `value` (string) — required
                    The static color value to use.
              - `mapping` (object[] · max items: 100) — optional
                - `values` (union anyOf[] · max items: 100) — required
                  - **string**
                  - **number**
                  - **Range Key**
                    - `type` (enum) — required
                      Values: `range_key`
                    - `from` (number | string) — required
                    - `ranges` (object[] · max items: 100) — required
                      - `from` (number | string) — required
                      - `label` (string) — required
                      - `to` (number | string) — required
                    - `to` (number | string) — required
                  - **Multi Field Key**
                    - `type` (enum) — required
                      Values: `multi_field_key`
                    - `keys` (string[] · max items: 100) — required
              - `palette` (string) — required
                Color palette name. Accepted values: 'default', 'elastic_line_optimized', 'severity', 'eui_amsterdam', 'kibana_v7_legacy', 'elastic_brand_2023'. Defaults to `default`.
              - `sort` (enum) — optional
                Sort direction
                Values: `asc`, `desc`
              - `unassigned` (union anyOf) — optional
                The color to use for unassigned values.
                - **Color From Palette**
                  Color at a fixed index position in a named palette.
                  - `type` (enum) — required
                    Values: `from_palette`
                  - `index` (number) — required
                    The index of the color in the palette.
                  - `palette` (string) — optional
                    Color palette name. Accepted values: 'default', 'elastic_line_optimized', 'severity', 'eui_amsterdam', 'kibana_v7_legacy', 'elastic_brand_2023'. Defaults to `default`.
                - **Color Code**
                  A color specified as a hex or CSS color code string.
                  - `type` (enum) — required
                    Values: `color_code`
                  - `value` (string) — required
                    The static color value to use.
          - `drop_partial_intervals` (boolean · default: false) — optional
            When `true`, drops partial intervals from the results.
          - `field` (string) — required
            Field to be used for the date histogram.
          - `include_empty_rows` (boolean · default: true) — optional
            When `true`, includes empty rows in the results.
          - `label` (string) — optional
            Label for the operation
          - `suggested_interval` (string · default: auto) — optional
            Suggested time interval.
          - `use_original_time_range` (boolean · default: false) — optional
            When `true`, uses the original time range instead of the current query time range.
        - **Terms Operation**
          - `operation` (enum) — required
            Values: `terms`
          - `aggregate_first` (boolean) — optional
            When `true`, aggregates data before splitting into series. Defaults to `false`.
          - `collapse_by` (union anyOf) — optional
            Aggregation function used to collapse a breakdown dimension into a single value.
            Values: `avg`, `sum`, `max`, `min`
          - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
            Color mapping for dimension values, either categorical (for specific values) or as a gradient.
            Same options as `color` in `Date Histogram Operation`
          - `excludes` (object) — optional
            - `as_regex` (boolean) — optional
              When `true`, treats the values as regular expressions.
            - `values` (union string[] | number[]) — required
              Values to exclude.
          - `fields` (string[] · min items: 1 · max items: 4) — required
          - `format` (union anyOf) — optional
            Number display format for the dimension value.
            Same options as `format` in `Terms Operation`
          - `includes` (object) — optional
            - `as_regex` (boolean) — optional
              When `true`, treats the values as regular expressions.
            - `values` (union string[] | number[]) — required
              Values to include.
          - `increase_accuracy` (boolean) — optional
            When `true`, increases accuracy at the cost of performance.
          - `label` (string) — optional
            Label for the operation
          - `limit` (number · default: 5) — optional
            Number of terms to return.
          - `other_bucket` (object) — optional
            - `include_documents_without_field` (boolean) — required
              When `true`, includes documents that do not have the specified field.
          - `rank_by` (union anyOf) — optional
            Same options as `rank_by` in `Terms Operation`
        - **Histogram Operation**
          - `operation` (enum) — required
            Values: `histogram`
          - `aggregate_first` (boolean) — optional
            When `true`, aggregates data before splitting into series. Defaults to `false`.
          - `collapse_by` (union anyOf) — optional
            Aggregation function used to collapse a breakdown dimension into a single value.
            Values: `avg`, `sum`, `max`, `min`
          - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
            Color mapping for dimension values, either categorical (for specific values) or as a gradient.
            Same options as `color` in `Date Histogram Operation`
          - `field` (string) — required
            Field to be used for the histogram.
          - `format` (union anyOf) — optional
            Number display format for the dimension value.
            Same options as `format` in `Terms Operation`
          - `granularity` (union number | enum · default: auto) — optional
            Values: `auto`
          - `include_empty_rows` (boolean · default: true) — optional
            When `true`, includes empty rows in the results.
          - `label` (string) — optional
            Label for the operation
        - **Ranges Operation**
          - `operation` (enum) — required
            Values: `range`
          - `aggregate_first` (boolean) — optional
            When `true`, aggregates data before splitting into series. Defaults to `false`.
          - `collapse_by` (union anyOf) — optional
            Aggregation function used to collapse a breakdown dimension into a single value.
            Values: `avg`, `sum`, `max`, `min`
          - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
            Color mapping for dimension values, either categorical (for specific values) or as a gradient.
            Same options as `color` in `Date Histogram Operation`
          - `field` (string) — required
            Field to be used for the range.
          - `format` (union anyOf) — optional
            Number display format for the dimension value.
            Same options as `format` in `Terms Operation`
          - `label` (string) — optional
            Label for the operation
          - `ranges` (object[] · max items: 100) — required
            - `gt` (number) — optional
              Greater than.
            - `label` (string) — optional
              Label.
            - `lte` (number) — optional
              Less than or equal to.
        - **Filters Operation**
          - `operation` (enum) — required
            Values: `filters`
          - `aggregate_first` (boolean) — optional
            When `true`, aggregates data before splitting into series. Defaults to `false`.
          - `collapse_by` (union anyOf) — optional
            Aggregation function used to collapse a breakdown dimension into a single value.
            Values: `avg`, `sum`, `max`, `min`
          - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
            Color mapping for dimension values, either categorical (for specific values) or as a gradient.
            Same options as `color` in `Date Histogram Operation`
          - `filters` (object[] · max items: 100) — required
            - `filter` (object) — required
              A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
              - `expression` (string) — required
                A query expression in KQL or Lucene syntax
              - `language` (enum · default: kql) — optional
                Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                Values: `kql`, `lucene`
            - `label` (string) — optional
              Label for the filter
          - `label` (string) — optional
            Label for the operation
      - `data_source` (union oneOf) — required
        - **Data view reference** (`type: data_view_reference`)
          - `type` (enum) — required
            Values: `data_view_reference`
          - `ref_id` (string) — required
            The id of the Kibana data view to use as the data source. Example: "my-data-view".
        - **Data view inline spec** (`type: data_view_spec`)
          - `type` (enum) — required
            Values: `data_view_spec`
          - `allow_hidden_indices` (boolean) — optional
            When `true`, allows the data view to match hidden indices.
          - `field_filters` (string[] · max items: 10000) — optional
            Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
          - `field_settings` (map string to anyOf) — optional
          - `index_pattern` (string · min length: 1) — required
            The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
          - `name` (string · min length: 1 · max length: 256) — optional
            The name of the data view. Example: "Sample data view".
          - `time_field` (string) — optional
            The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
      - `ignore_global_filters` (boolean · default: false) — optional
        When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
      - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
        Sampling factor between 0 (no sampling) and 1 (full sampling).
      - `type` (enum) — required
        Chart type for the data layer
        Values: `area`, `area_percentage`, `area_stacked`, `bar`, `bar_horizontal`, `bar_horizontal_stacked`, `bar_horizontal_percentage`, `bar_percentage`, `bar_stacked`, `line`
      - `x` (union anyOf) — optional
        - **Date Histogram Operation**
          - `operation` (enum) — required
            Values: `date_histogram`
          - `drop_partial_intervals` (boolean · default: false) — optional
            When `true`, drops partial intervals from the results.
          - `field` (string) — required
            Field to be used for the date histogram.
          - `include_empty_rows` (boolean · default: true) — optional
            When `true`, includes empty rows in the results.
          - `label` (string) — optional
            Label for the operation
          - `suggested_interval` (string · default: auto) — optional
            Suggested time interval.
          - `use_original_time_range` (boolean · default: false) — optional
            When `true`, uses the original time range instead of the current query time range.
        - **Terms Operation**
          - `operation` (enum) — required
            Values: `terms`
          - `excludes` (object) — optional
            - `as_regex` (boolean) — optional
              When `true`, treats the values as regular expressions.
            - `values` (union string[] | number[]) — required
              Values to exclude.
          - `fields` (string[] · min items: 1 · max items: 4) — required
          - `format` (union anyOf) — optional
            Number display format for the dimension value.
            Same options as `format` in `Terms Operation`
          - `includes` (object) — optional
            - `as_regex` (boolean) — optional
              When `true`, treats the values as regular expressions.
            - `values` (union string[] | number[]) — required
              Values to include.
          - `increase_accuracy` (boolean) — optional
            When `true`, increases accuracy at the cost of performance.
          - `label` (string) — optional
            Label for the operation
          - `limit` (number · default: 5) — optional
            Number of terms to return.
          - `other_bucket` (object) — optional
            - `include_documents_without_field` (boolean) — required
              When `true`, includes documents that do not have the specified field.
          - `rank_by` (union anyOf) — optional
            Same options as `rank_by` in `Terms Operation`
        - **Histogram Operation**
          - `operation` (enum) — required
            Values: `histogram`
          - `field` (string) — required
            Field to be used for the histogram.
          - `format` (union anyOf) — optional
            Number display format for the dimension value.
            Same options as `format` in `Terms Operation`
          - `granularity` (union number | enum · default: auto) — optional
            Values: `auto`
          - `include_empty_rows` (boolean · default: true) — optional
            When `true`, includes empty rows in the results.
          - `label` (string) — optional
            Label for the operation
        - **Ranges Operation**
          - `operation` (enum) — required
            Values: `range`
          - `field` (string) — required
            Field to be used for the range.
          - `format` (union anyOf) — optional
            Number display format for the dimension value.
            Same options as `format` in `Terms Operation`
          - `label` (string) — optional
            Label for the operation
          - `ranges` (object[] · max items: 100) — required
            - `gt` (number) — optional
              Greater than.
            - `label` (string) — optional
              Label.
            - `lte` (number) — optional
              Less than or equal to.
        - **Filters Operation**
          - `operation` (enum) — required
            Values: `filters`
          - `filters` (object[] · max items: 100) — required
            - `filter` (object) — required
              A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
              - `expression` (string) — required
                A query expression in KQL or Lucene syntax
              - `language` (enum · default: kql) — optional
                Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
                Values: `kql`, `lucene`
            - `label` (string) — optional
              Label for the filter
          - `label` (string) — optional
            Label for the operation
      - `y` (union anyOf[] · max items: 100) — required
        Array of metrics to display on Y-axis
        - `axis` (enum · default: y) — optional
          The Y axis this metric is plotted on. Values match the root axis configuration keys (axis.y, axis.y2). If omitted, defaults to the Y axis start (leading) side.
          Values: `y`, `y2`
        - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
          - **Static Color**
            Fixed color for all values in the dimension.
            - `type` (enum) — required
              Values: `static`
            - `color` (string) — required
              The static color to be used for all values.
          - **Auto Color**
            Coloring determined at runtime based on chart defaults
            - `type` (enum) — required
              Values: `auto`
    - **Reference Line Layer (DSL)**
      Reference line layer for standard queries
      - `data_source` (union oneOf) — required
        - **Data view reference** (`type: data_view_reference`)
          - `type` (enum) — required
            Values: `data_view_reference`
          - `ref_id` (string) — required
            The id of the Kibana data view to use as the data source. Example: "my-data-view".
        - **Data view inline spec** (`type: data_view_spec`)
          - `type` (enum) — required
            Values: `data_view_spec`
          - `allow_hidden_indices` (boolean) — optional
            When `true`, allows the data view to match hidden indices.
          - `field_filters` (string[] · max items: 10000) — optional
            Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
          - `field_settings` (map string to anyOf) — optional
          - `index_pattern` (string · min length: 1) — required
            The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
          - `name` (string · min length: 1 · max length: 256) — optional
            The name of the data view. Example: "Sample data view".
          - `time_field` (string) — optional
            The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
      - `ignore_global_filters` (boolean · default: false) — optional
        When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
      - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
        Sampling factor between 0 (no sampling) and 1 (full sampling).
      - `thresholds` (union anyOf[] · min items: 1 · max items: 100) — required
        Array of reference line thresholds
        - `axis` (enum · default: y) — optional
          The axis this reference line is drawn on. Values match the root axis configuration keys. If omitted, defaults to the primary Y axis.
          Values: `x`, `y`, `y2`
        - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
          - **Static Color**
            Fixed color for all values in the dimension.
            - `type` (enum) — required
              Values: `static`
            - `color` (string) — required
              The static color to be used for all values.
          - **Auto Color**
            Coloring determined at runtime based on chart defaults
            - `type` (enum) — required
              Values: `auto`
        - `fill` (enum) — optional
          Fill direction for reference line
          Values: `above`, `below`
        - `icon` (enum) — optional
          Icon to display on the reference line
          Values: `asterisk`, `alert`, `bell`, `bolt`, `bug`, `circle`, `editor_comment`, `flag`, `heart`, `map_marker`, `pin_filled`, `star_empty`, `star_filled`, `tag`, `triangle`
        - `position` (enum) — optional
          Position of the icon and label relative to the reference line
          Values: `auto`, `left`, `right`
        - `stroke_dash` (enum) — optional
          Line style
          Values: `solid`, `dashed`, `dotted`
        - `stroke_width` (number · min: 1 · max: 10) — optional
          Line width in pixels
        - `text` (object) — optional
          Reference line text label configuration
          - `visible` (boolean) — required
            Show text label on the reference line
      - `type` (enum) — required
        Values: `reference_lines`
    - **Annotation Layer (DSL)**
      Layer containing annotations (query-based, points, and ranges)
      - `data_source` (union oneOf) — optional
        - **Data view reference** (`type: data_view_reference`)
          - `type` (enum) — required
            Values: `data_view_reference`
          - `ref_id` (string) — required
            The id of the Kibana data view to use as the data source. Example: "my-data-view".
        - **Data view inline spec** (`type: data_view_spec`)
          - `type` (enum) — required
            Values: `data_view_spec`
          - `allow_hidden_indices` (boolean) — optional
            When `true`, allows the data view to match hidden indices.
          - `field_filters` (string[] · max items: 10000) — optional
            Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
          - `field_settings` (map string to anyOf) — optional
          - `index_pattern` (string · min length: 1) — required
            The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
          - `name` (string · min length: 1 · max length: 256) — optional
            The name of the data view. Example: "Sample data view".
          - `time_field` (string) — optional
            The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
      - `events` (union anyOf[] · min items: 1 · max items: 100) — required
        Array of annotation configurations
        - **type: query**
          Annotation from query results matching a filter
          - `type` (enum) — required
            Values: `query`
          - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
            - **Static Color**
              Fixed color for all values in the dimension.
              - `type` (enum) — required
                Values: `static`
              - `color` (string) — required
                The static color to be used for all values.
            - **Auto Color**
              Coloring determined at runtime based on chart defaults
              - `type` (enum) — required
                Values: `auto`
          - `extra_fields` (string[] · max items: 100) — optional
            Additional fields for annotation tooltip
          - `icon` (enum) — optional
            Icon to display at the annotation point
            Values: `asterisk`, `alert`, `bell`, `bolt`, `bug`, `circle`, `editor_comment`, `flag`, `heart`, `map_marker`, `pin_filled`, `star_empty`, `star_filled`, `tag`, `triangle`
          - `label` (string) — optional
            Label text for the annotation
          - `line` (object) — optional
            Vertical line configuration for point annotation
            - `stroke_dash` (enum) — required
              Vertical line style
              Values: `solid`, `dashed`, `dotted`
            - `stroke_width` (number · min: 1 · max: 10) — required
              Vertical line width in pixels
          - `query` (object) — required
            A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
            - `expression` (string) — required
              A query expression in KQL or Lucene syntax
            - `language` (enum · default: kql) — optional
              Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
              Values: `kql`, `lucene`
          - `text` (object) — optional
            Annotation text label configuration
            - `field` (string) — optional
              Field name for text label source
            - `visible` (boolean) — required
              Show text label on the annotation
          - `time_field` (string) — required
            Field containing the timestamp
          - `visible` (boolean) — optional
            Show the annotation
        - **type: point**
          Manual point annotation at specific timestamp
          - `type` (enum) — required
            Values: `point`
          - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
            - **Static Color**
              Fixed color for all values in the dimension.
              - `type` (enum) — required
                Values: `static`
              - `color` (string) — required
                The static color to be used for all values.
            - **Auto Color**
              Coloring determined at runtime based on chart defaults
              - `type` (enum) — required
                Values: `auto`
          - `icon` (enum) — optional
            Icon to display at the annotation point
            Values: `asterisk`, `alert`, `bell`, `bolt`, `bug`, `circle`, `editor_comment`, `flag`, `heart`, `map_marker`, `pin_filled`, `star_empty`, `star_filled`, `tag`, `triangle`
          - `label` (string) — optional
            Label text for the annotation
          - `line` (object) — optional
            Vertical line configuration for point annotation
            - `stroke_dash` (enum) — required
              Vertical line style
              Values: `solid`, `dashed`, `dotted`
            - `stroke_width` (number · min: 1 · max: 10) — required
              Vertical line width in pixels
          - `text` (object) — optional
            Annotation text label visibility
            - `visible` (boolean) — required
              Show text label on the annotation
          - `timestamp` (union number | string) — required
          - `visible` (boolean) — optional
            Show the annotation
        - **type: range**
          Manual range annotation spanning time interval
          - `type` (enum) — required
            Values: `range`
          - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
            - **Static Color**
              Fixed color for all values in the dimension.
              - `type` (enum) — required
                Values: `static`
              - `color` (string) — required
                The static color to be used for all values.
            - **Auto Color**
              Coloring determined at runtime based on chart defaults
              - `type` (enum) — required
                Values: `auto`
          - `fill` (enum · default: inside) — optional
            Fill direction for range
            Values: `inside`, `outside`
          - `interval` (object) — required
            Time range for annotation
            - `from` (union number | string) — required
            - `to` (union number | string) — required
          - `label` (string) — optional
            Label text for the annotation
          - `visible` (boolean) — optional
            Show the annotation
      - `ignore_global_filters` (boolean · default: false) — optional
        When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
      - `type` (enum) — required
        Values: `annotations`
    - **Annotation Layer (By Reference)**
      Reference to a library annotation group
      - `group_id` (string) — required
        ID of the linked annotation group from the library
      - `type` (enum) — required
        Values: `annotation_group`
  - `legend` (union anyOf) — optional
    Legend configuration for XY chart
    - **Outside horizontal**
      Outside legend positioned horizontal (top/bottom) of the chart
      - `layout` (union anyOf) — optional
        - **type: grid**
          - `type` (enum) — required
            Values: `grid`
          - `truncate` (object) — optional
            - `enabled` (boolean) — optional
              Enable truncation of legend items
            - `max_lines` (number · min: 1 · max: 10 · default: 1) — optional
              Number of lines before legend items are truncated.
        - **type: list**
          - `type` (enum) — required
            Values: `list`
      - `placement` (enum) — optional
        Values: `outside`
      - `position` (enum) — optional
        Values: `top`, `bottom`
      - `series_header` (object) — optional
        Legend table series header configuration.
        - `text` (string) — optional
          Legend table series header text.
        - `visible` (boolean) — optional
          When true, shows the legend table series header.
      - `statistics` (enum[] · max items: 17) — optional
        Statistics to display in legend
        Values: `min`, `max`, `avg`, `median`, `range`, `last_value`, `last_non_null_value`, `first_value`, `first_non_null_value`, `difference`, `difference_percentage`, `count`, `total`, `standard_deviation`, `variance`, `distinct_count`, `current_and_last_value`
      - `visibility` (enum) — optional
        Legend visibility.
        Values: `auto`, `visible`, `hidden`
    - **Outside vertical**
      Outside legend positioned vertical (left/right) of the chart
      - `layout` (object) — optional
        - `truncate` (object) — optional
          - `enabled` (boolean) — optional
            Enable truncation of legend items
          - `max_lines` (number · min: 1 · max: 10 · default: 1) — optional
            Number of lines before legend items are truncated.
        - `type` (enum) — required
          Values: `grid`
      - `placement` (enum) — optional
        Values: `outside`
      - `position` (enum) — optional
        Values: `left`, `right`
      - `series_header` (object) — optional
        Legend table series header configuration.
        - `text` (string) — optional
          Legend table series header text.
        - `visible` (boolean) — optional
          When true, shows the legend table series header.
      - `size` (union anyOf) — optional
        Legend size.
        Values: `auto`, `s`, `m`, `l`, `xl`
      - `statistics` (enum[] · max items: 17) — optional
        Statistics to display in legend
        Values: `min`, `max`, `avg`, `median`, `range`, `last_value`, `last_non_null_value`, `first_value`, `first_non_null_value`, `difference`, `difference_percentage`, `count`, `total`, `standard_deviation`, `variance`, `distinct_count`, `current_and_last_value`
      - `visibility` (enum) — optional
        Legend visibility.
        Values: `auto`, `visible`, `hidden`
    - **Inside**
      Inside legend
      - `columns` (number · min: 1 · max: 5) — optional
        Number of legend columns
      - `layout` (object) — optional
        - `truncate` (object) — optional
          - `enabled` (boolean) — optional
            Enable truncation of legend items
          - `max_lines` (number · min: 1 · max: 10 · default: 1) — optional
            Number of lines before legend items are truncated.
        - `type` (enum) — required
          Values: `grid`
      - `placement` (enum) — required
        Values: `inside`
      - `position` (enum) — optional
        Legend position inside the chart
        Values: `top_left`, `top_right`, `bottom_left`, `bottom_right`
      - `series_header` (object) — optional
        Legend table series header configuration.
        - `text` (string) — optional
          Legend table series header text.
        - `visible` (boolean) — optional
          When true, shows the legend table series header.
      - `statistics` (enum[] · max items: 17) — optional
        Statistics to display in legend
        Values: `min`, `max`, `avg`, `median`, `range`, `last_value`, `last_non_null_value`, `first_value`, `first_non_null_value`, `difference`, `difference_percentage`, `count`, `total`, `standard_deviation`, `variance`, `distinct_count`, `current_and_last_value`
      - `visibility` (enum) — optional
        Legend visibility.
        Values: `auto`, `visible`, `hidden`
  - `query` (object) — optional
    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
    - `expression` (string) — required
      A query expression in KQL or Lucene syntax
    - `language` (enum · default: kql) — optional
      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
      Values: `kql`, `lucene`
  - `styling` (object) — optional
    Visual styling options for the chart
    - `areas` (object) — optional
      Area-specific rendering settings
      - `fill` (enum · default: solid) — optional
        Area fill type: solid or gradient. Defaults to solid.
        Values: `solid`, `gradient`
      - `fill_opacity` (number · min: 0 · max: 2 · default: 0.3) — optional
        Area fill opacity (0-1 typical, max 2 for legacy)
    - `bars` (object) — optional
      Bar-specific rendering settings
      - `data_labels` (object) — optional
        Data label configuration for bar series
        - `visible` (boolean · default: false) — optional
          Display value labels on bar data points
      - `minimum_height` (number · min: 0 · default: 1) — optional
        Minimum bar height in pixels
    - `fitting` (object) — optional
      Missing data interpolation configuration for line and area series
      - `emphasize` (boolean) — optional
        Visually distinguish fitted segments with a dashed line style and reduced area opacity
      - `extend` (enum) — optional
        How to render line and area edges when data does not cover the full X domain
        Values: `none`, `zero`, `nearest`
      - `type` (enum) — required
        Fitting function type for missing data
        Values: `none`, `zero`, `linear`, `carry`, `lookahead`, `average`, `nearest`
    - `interpolation` (enum · default: linear) — optional
      Curve interpolation method for line and area series
      Values: `linear`, `smooth`, `stepped`
    - `overlays` (object) — optional
      Visual overlays drawn on top of the chart canvas
      - `current_time_marker` (object) — optional
        Current time marker configuration
        - `visible` (boolean · default: false) — optional
          Show current time marker line
      - `partial_buckets` (object) — optional
        Partial (incomplete) bucket indicator configuration
        - `visible` (boolean · default: false) — optional
          Show partial bucket indicators at time range edges
    - `points` (object) — optional
      Data point marker settings for line and area series
      - `visibility` (enum · default: auto) — optional
        Data point marker visibility on line and area series
        Values: `auto`, `visible`, `hidden`
  - `tags` (string[] · max items: 1000 · default: []) — optional
    Tag IDs to associate with this visualization.
  - `title` (string) — optional
    The title of the chart displayed in the panel. Optional. Any string value or undefined.
- **Gauge Chart (library)**
  - `type` (enum) — required
    Values: `gauge`
  - `data_source` (union oneOf) — required
    - **Data view reference** (`type: data_view_reference`)
      - `type` (enum) — required
        Values: `data_view_reference`
      - `ref_id` (string) — required
        The id of the Kibana data view to use as the data source. Example: "my-data-view".
    - **Data view inline spec** (`type: data_view_spec`)
      - `type` (enum) — required
        Values: `data_view_spec`
      - `allow_hidden_indices` (boolean) — optional
        When `true`, allows the data view to match hidden indices.
      - `field_filters` (string[] · max items: 10000) — optional
        Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
      - `field_settings` (map string to anyOf) — optional
      - `index_pattern` (string · min length: 1) — required
        The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
      - `name` (string · min length: 1 · max length: 256) — optional
        The name of the data view. Example: "Sample data view".
      - `time_field` (string) — optional
        The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
  - `description` (string) — optional
    The description of the chart. Optional. Any string value or undefined.
  - `filters` (union[] · max items: 100) — optional
    Filters applied to the panel
  - `ignore_global_filters` (boolean · default: false) — optional
    When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
  - `metric` (union anyOf) — required
    - **Count Metric Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration for the gauge fill.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **No Color**
          Explicitly disables coloring
          - `type` (enum) — required
            Values: `none`
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `goal` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        - **Field Metric Operations**
        - **Static Operation Definition**
          - `operation` (enum) — required
            Values: `static_value`
          - `format` (union anyOf) — optional
            Number display format for the dimension value.
            Same options as `format` in `Terms Operation`
          - `label` (string) — optional
            Label for the operation
          - `value` (number · default: 100) — optional
            Static value
        - **Formula Operation**
          - `operation` (enum) — required
            Values: `formula`
          - `filter` (object) — optional
            A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
            - `expression` (string) — required
              A query expression in KQL or Lucene syntax
            - `language` (enum · default: kql) — optional
              Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
              Values: `kql`, `lucene`
          - `format` (union anyOf) — optional
            Number display format for the dimension value.
            Same options as `format` in `Terms Operation`
          - `formula` (string) — required
            Formula
          - `label` (string) — optional
            Label for the operation
          - `reduced_time_range` (string) — optional
            Reduced time range
          - `time_scale` (enum) — optional
            Time scale
            Values: `s`, `m`, `h`, `d`
      - `max` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `min` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `subtitle` (string) — optional
        Subtitle below the gauge value.
      - `ticks` (object) — optional
        Ticks configuration
        - `mode` (enum · default: bands) — optional
          Tick placement mode.
          Values: `auto`, `bands`
        - `visible` (boolean · default: true) — optional
          When `true`, displays tick marks on the gauge.
      - `title` (object) — optional
        Title configuration
        - `text` (string) — optional
          Title text.
        - `visible` (boolean · default: true) — optional
          When `true`, displays the title.
      - `empty_as_null` (boolean · default: false) — optional
        When `true`, treats empty buckets as null instead of zero.
      - `field` (string) — optional
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `count`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Unique Count Metric Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration for the gauge fill.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **No Color**
          Explicitly disables coloring
          - `type` (enum) — required
            Values: `none`
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `goal` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `max` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `min` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `subtitle` (string) — optional
        Subtitle below the gauge value.
      - `ticks` (object) — optional
        Ticks configuration
        - `mode` (enum · default: bands) — optional
          Tick placement mode.
          Values: `auto`, `bands`
        - `visible` (boolean · default: true) — optional
          When `true`, displays tick marks on the gauge.
      - `title` (object) — optional
        Title configuration
        - `text` (string) — optional
          Title text.
        - `visible` (boolean · default: true) — optional
          When `true`, displays the title.
      - `empty_as_null` (boolean · default: false) — optional
        When `true`, treats empty buckets as null instead of zero.
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `unique_count`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Stats Metric Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration for the gauge fill.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **No Color**
          Explicitly disables coloring
          - `type` (enum) — required
            Values: `none`
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `goal` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `max` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `min` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `subtitle` (string) — optional
        Subtitle below the gauge value.
      - `ticks` (object) — optional
        Ticks configuration
        - `mode` (enum · default: bands) — optional
          Tick placement mode.
          Values: `auto`, `bands`
        - `visible` (boolean · default: true) — optional
          When `true`, displays tick marks on the gauge.
      - `title` (object) — optional
        Title configuration
        - `text` (string) — optional
          Title text.
        - `visible` (boolean · default: true) — optional
          When `true`, displays the title.
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `min`, `max`, `average`, `median`, `standard_deviation`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Sum Metric Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration for the gauge fill.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **No Color**
          Explicitly disables coloring
          - `type` (enum) — required
            Values: `none`
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `goal` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `max` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `min` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `subtitle` (string) — optional
        Subtitle below the gauge value.
      - `ticks` (object) — optional
        Ticks configuration
        - `mode` (enum · default: bands) — optional
          Tick placement mode.
          Values: `auto`, `bands`
        - `visible` (boolean · default: true) — optional
          When `true`, displays tick marks on the gauge.
      - `title` (object) — optional
        Title configuration
        - `text` (string) — optional
          Title text.
        - `visible` (boolean · default: true) — optional
          When `true`, displays the title.
      - `empty_as_null` (boolean · default: false) — optional
        When `true`, treats empty buckets as null instead of zero.
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `sum`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Last Value Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration for the gauge fill.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **No Color**
          Explicitly disables coloring
          - `type` (enum) — required
            Values: `none`
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `goal` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `max` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `min` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `subtitle` (string) — optional
        Subtitle below the gauge value.
      - `ticks` (object) — optional
        Ticks configuration
        - `mode` (enum · default: bands) — optional
          Tick placement mode.
          Values: `auto`, `bands`
        - `visible` (boolean · default: true) — optional
          When `true`, displays tick marks on the gauge.
      - `title` (object) — optional
        Title configuration
        - `text` (string) — optional
          Title text.
        - `visible` (boolean · default: true) — optional
          When `true`, displays the title.
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `multi_value` (boolean · default: false) — optional
        Whether to return all values for multi-value fields. Only affects data table and metric charts; other charts use the last value from the array.
      - `operation` (enum) — required
        Values: `last_value`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_field` (string) — required
        Time field used to determine document recency
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Percentile Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration for the gauge fill.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **No Color**
          Explicitly disables coloring
          - `type` (enum) — required
            Values: `none`
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `goal` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `max` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `min` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `subtitle` (string) — optional
        Subtitle below the gauge value.
      - `ticks` (object) — optional
        Ticks configuration
        - `mode` (enum · default: bands) — optional
          Tick placement mode.
          Values: `auto`, `bands`
        - `visible` (boolean · default: true) — optional
          When `true`, displays tick marks on the gauge.
      - `title` (object) — optional
        Title configuration
        - `text` (string) — optional
          Title text.
        - `visible` (boolean · default: true) — optional
          When `true`, displays the title.
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `percentile`
      - `percentile` (number · default: 95) — optional
        Percentile
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Percentile Ranks Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration for the gauge fill.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **No Color**
          Explicitly disables coloring
          - `type` (enum) — required
            Values: `none`
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `goal` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `max` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `min` (union anyOf) — optional
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
        Same options as `goal` in `Count Metric Operation`
      - `subtitle` (string) — optional
        Subtitle below the gauge value.
      - `ticks` (object) — optional
        Ticks configuration
        - `mode` (enum · default: bands) — optional
          Tick placement mode.
          Values: `auto`, `bands`
        - `visible` (boolean · default: true) — optional
          When `true`, displays tick marks on the gauge.
      - `title` (object) — optional
        Title configuration
        - `text` (string) — optional
          Title text.
        - `visible` (boolean · default: true) — optional
          When `true`, displays the title.
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `percentile_rank`
      - `rank` (number · default: 0) — optional
        Percentile Rank
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Formula Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color configuration for the gauge fill.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **No Color**
          Explicitly disables coloring
          - `type` (enum) — required
            Values: `none`
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `goal` (union anyOf) — optional — recursive
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
      - `max` (union anyOf) — optional — recursive
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
      - `min` (union anyOf) — optional — recursive
        Metric dimension using a field-based aggregation, a static value, or a mathematical formula.
      - `subtitle` (string) — optional
        Subtitle below the gauge value.
      - `ticks` (object) — optional
        Ticks configuration
        - `mode` (enum · default: bands) — optional
          Tick placement mode.
          Values: `auto`, `bands`
        - `visible` (boolean · default: true) — optional
          When `true`, displays tick marks on the gauge.
      - `title` (object) — optional
        Title configuration
        - `text` (string) — optional
          Title text.
        - `visible` (boolean · default: true) — optional
          When `true`, displays the title.
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `formula` (string) — required
        Formula
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `formula`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (enum) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
  - `query` (object) — optional
    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
    - `expression` (string) — required
      A query expression in KQL or Lucene syntax
    - `language` (enum · default: kql) — optional
      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
      Values: `kql`, `lucene`
  - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
    Sampling factor between 0 (no sampling) and 1 (full sampling).
  - `styling` (object) — optional
    Visual chart styling options
    - `shape` (union anyOf · default: {
  "orientation": "horizontal",
  "type": "bullet"
}) — optional
      - **Shape (Bullet)**
        Bullet gauge shape.
        - `orientation` (enum) — optional
          Orientation
          Values: `horizontal`, `vertical`
        - `type` (enum) — required
          Values: `bullet`
      - **Shape (Circular)**
        Circular gauge shape.
        - `type` (enum) — required
          Values: `circle`, `semi_circle`, `arc`
  - `tags` (string[] · max items: 1000 · default: []) — optional
    Tag IDs to associate with this visualization.
  - `title` (string) — optional
    The title of the chart displayed in the panel. Optional. Any string value or undefined.
- **Heatmap Chart (library)**
  - `type` (enum) — required
    Values: `heatmap`
  - `axis` (object) — optional
    Axis configuration for X and Y axes
    - `x` (object) — optional
      X axis configuration
      - `labels` (object) — optional
        - `orientation` (enum) — optional
          Orientation
          Values: `horizontal`, `vertical`, `angled`
        - `visible` (boolean · default: true) — optional
          Show axis labels
      - `scale` (enum) — required
        X-axis scale type. Use 'temporal' for timestamp/date fields (for example, @timestamp or DATE_TRUNC results). Use 'ordinal' for categorical/text fields. Use 'linear' for numeric fields.
        Values: `ordinal`, `temporal`, `linear`
      - `sort` (enum) — optional
        Axis sort order; omit or use undefined for no sorting
        Values: `asc`, `desc`
      - `title` (object) — optional
        - `text` (string) — optional
          Axis title text.
        - `visible` (boolean) — optional
          When `true`, displays the title.
    - `y` (object) — optional
      Y axis configuration
      - `labels` (object) — optional
        - `visible` (boolean · default: true) — optional
          Show axis labels
      - `sort` (enum) — optional
        Axis sort order; omit or use undefined for no sorting
        Values: `asc`, `desc`
      - `title` (object) — optional
        - `text` (string) — optional
          Axis title text.
        - `visible` (boolean) — optional
          When `true`, displays the title.
  - `data_source` (union oneOf) — required
    - **Data view reference** (`type: data_view_reference`)
      - `type` (enum) — required
        Values: `data_view_reference`
      - `ref_id` (string) — required
        The id of the Kibana data view to use as the data source. Example: "my-data-view".
    - **Data view inline spec** (`type: data_view_spec`)
      - `type` (enum) — required
        Values: `data_view_spec`
      - `allow_hidden_indices` (boolean) — optional
        When `true`, allows the data view to match hidden indices.
      - `field_filters` (string[] · max items: 10000) — optional
        Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
      - `field_settings` (map string to anyOf) — optional
      - `index_pattern` (string · min length: 1) — required
        The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
      - `name` (string · min length: 1 · max length: 256) — optional
        The name of the data view. Example: "Sample data view".
      - `time_field` (string) — optional
        The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
  - `description` (string) — optional
    The description of the chart. Optional. Any string value or undefined.
  - `filters` (union[] · max items: 100) — optional
    Filters applied to the panel
  - `ignore_global_filters` (boolean · default: false) — optional
    When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
  - `legend` (object) — optional
    Legend configuration
    - `position` (enum) — optional
      Values: `top`, `bottom`, `left`, `right`
    - `size` (union anyOf) — optional
      Legend size.
      Values: `auto`, `s`, `m`, `l`, `xl`
    - `truncate_after_lines` (number · min: 1 · max: 10 · default: 1) — optional
      Number of lines before legend items are truncated.
    - `visibility` (enum) — optional
      Legend visibility.
      Values: `visible`, `hidden`
  - `metric` (union anyOf) — required
    - **Count Metric Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color scale configuration for the heatmap cells.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `empty_as_null` (boolean · default: false) — optional
        When `true`, treats empty buckets as null instead of zero.
      - `field` (string) — optional
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `count`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Unique Count Metric Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color scale configuration for the heatmap cells.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `empty_as_null` (boolean · default: false) — optional
        When `true`, treats empty buckets as null instead of zero.
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `unique_count`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Stats Metric Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color scale configuration for the heatmap cells.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `min`, `max`, `average`, `median`, `standard_deviation`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Sum Metric Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color scale configuration for the heatmap cells.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `empty_as_null` (boolean · default: false) — optional
        When `true`, treats empty buckets as null instead of zero.
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `sum`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Last Value Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color scale configuration for the heatmap cells.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `multi_value` (boolean · default: false) — optional
        Whether to return all values for multi-value fields. Only affects data table and metric charts; other charts use the last value from the array.
      - `operation` (enum) — required
        Values: `last_value`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_field` (string) — required
        Time field used to determine document recency
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Percentile Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color scale configuration for the heatmap cells.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `percentile`
      - `percentile` (number · default: 95) — optional
        Percentile
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Percentile Ranks Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color scale configuration for the heatmap cells.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `percentile_rank`
      - `rank` (number · default: 0) — optional
        Percentile Rank
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Differences Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color scale configuration for the heatmap cells.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `of` (union anyOf) — required
        Same options as `of` in `Differences Operation`
      - `operation` (enum) — required
        Values: `differences`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Moving Average Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color scale configuration for the heatmap cells.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `of` (union anyOf) — required
        Same options as `of` in `Differences Operation`
      - `operation` (enum) — required
        Values: `moving_average`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
      - `window` (number · default: 5) — optional
        Window
    - **Cumulative Sum Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color scale configuration for the heatmap cells.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `field` (string) — optional
        Field to cumulatively sum. When omitted, cumulative sum is applied to the count of records.
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `cumulative_sum`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Counter Rate Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color scale configuration for the heatmap cells.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `counter_rate`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Formula Operation**
      - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
        Color scale configuration for the heatmap cells.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum) — required
            Values: `auto`
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `formula` (string) — required
        Formula
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `formula`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (enum) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
  - `query` (object) — optional
    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
    - `expression` (string) — required
      A query expression in KQL or Lucene syntax
    - `language` (enum · default: kql) — optional
      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
      Values: `kql`, `lucene`
  - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
    Sampling factor between 0 (no sampling) and 1 (full sampling).
  - `styling` (object) — optional
    Visual chart styling options
    - `cells` (object) — optional
      Cells configuration
      - `labels` (object) — optional
        - `visible` (boolean · default: false) — optional
          Show cell labels
  - `tags` (string[] · max items: 1000 · default: []) — optional
    Tag IDs to associate with this visualization.
  - `title` (string) — optional
    The title of the chart displayed in the panel. Optional. Any string value or undefined.
  - `x` (union anyOf) — required
    Breakdown dimension configuration using date histogram, terms, numeric histogram, value ranges, or custom filters.
    Same options as `x` in `Layer (DSL)`
  - `y` (union anyOf) — optional
    Breakdown dimension configuration using date histogram, terms, numeric histogram, value ranges, or custom filters.
    Same options as `x` in `Layer (DSL)`
- **Tag Cloud Chart (library)**
  - `type` (enum) — required
    Values: `tag_cloud`
  - `data_source` (union oneOf) — required
    - **Data view reference** (`type: data_view_reference`)
      - `type` (enum) — required
        Values: `data_view_reference`
      - `ref_id` (string) — required
        The id of the Kibana data view to use as the data source. Example: "my-data-view".
    - **Data view inline spec** (`type: data_view_spec`)
      - `type` (enum) — required
        Values: `data_view_spec`
      - `allow_hidden_indices` (boolean) — optional
        When `true`, allows the data view to match hidden indices.
      - `field_filters` (string[] · max items: 10000) — optional
        Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
      - `field_settings` (map string to anyOf) — optional
      - `index_pattern` (string · min length: 1) — required
        The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
      - `name` (string · min length: 1 · max length: 256) — optional
        The name of the data view. Example: "Sample data view".
      - `time_field` (string) — optional
        The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
  - `description` (string) — optional
    The description of the chart. Optional. Any string value or undefined.
  - `filters` (union[] · max items: 100) — optional
    Filters applied to the panel
  - `ignore_global_filters` (boolean · default: false) — optional
    When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
  - `metric` (union anyOf) — required
    - **Count Metric Operation**
      - `empty_as_null` (boolean · default: false) — optional
        When `true`, treats empty buckets as null instead of zero.
      - `field` (string) — optional
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `count`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Unique Count Metric Operation**
      - `empty_as_null` (boolean · default: false) — optional
        When `true`, treats empty buckets as null instead of zero.
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `unique_count`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Stats Metric Operation**
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `min`, `max`, `average`, `median`, `standard_deviation`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Sum Metric Operation**
      - `empty_as_null` (boolean · default: false) — optional
        When `true`, treats empty buckets as null instead of zero.
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `sum`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Last Value Operation**
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `multi_value` (boolean · default: false) — optional
        Whether to return all values for multi-value fields. Only affects data table and metric charts; other charts use the last value from the array.
      - `operation` (enum) — required
        Values: `last_value`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_field` (string) — required
        Time field used to determine document recency
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Percentile Operation**
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `percentile`
      - `percentile` (number · default: 95) — optional
        Percentile
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Percentile Ranks Operation**
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `percentile_rank`
      - `rank` (number · default: 0) — optional
        Percentile Rank
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Differences Operation**
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `of` (union anyOf) — required
        Same options as `of` in `Differences Operation`
      - `operation` (enum) — required
        Values: `differences`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Moving Average Operation**
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `of` (union anyOf) — required
        Same options as `of` in `Differences Operation`
      - `operation` (enum) — required
        Values: `moving_average`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
      - `window` (number · default: 5) — optional
        Window
    - **Cumulative Sum Operation**
      - `field` (string) — optional
        Field to cumulatively sum. When omitted, cumulative sum is applied to the count of records.
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `cumulative_sum`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Counter Rate Operation**
      - `field` (string) — required
        Field to be used for the metric
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `counter_rate`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (union anyOf) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
      - `time_shift` (string) — optional
        Time shift
    - **Formula Operation**
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `formula` (string) — required
        Formula
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `formula`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (enum) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
  - `query` (object) — optional
    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
    - `expression` (string) — required
      A query expression in KQL or Lucene syntax
    - `language` (enum · default: kql) — optional
      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
      Values: `kql`, `lucene`
  - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
    Sampling factor between 0 (no sampling) and 1 (full sampling).
  - `styling` (object) — optional
    Visual chart styling options
    - `caption` (object) — optional
      Caption configuration representing the metric and the tag_by operations labels
      - `visible` (boolean · default: true) — optional
        When `true`, displays the caption.
    - `font_size` (object) — optional
      Font size range for tags.
      - `max` (number · max: 120 · default: 72) — optional
        Maximum font size.
      - `min` (number · min: 1 · default: 18) — optional
        Minimum font size.
    - `orientation` (enum) — optional
      Orientation
      Values: `horizontal`, `vertical`, `angled`
  - `tag_by` (union anyOf) — required
    - **Date Histogram Operation**
      - `operation` (enum) — required
        Values: `date_histogram`
      - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
        Color mapping for dimension values, either categorical (for specific values) or as a gradient.
        Same options as `color` in `Date Histogram Operation`
      - `drop_partial_intervals` (boolean · default: false) — optional
        When `true`, drops partial intervals from the results.
      - `field` (string) — required
        Field to be used for the date histogram.
      - `include_empty_rows` (boolean · default: true) — optional
        When `true`, includes empty rows in the results.
      - `label` (string) — optional
        Label for the operation
      - `suggested_interval` (string · default: auto) — optional
        Suggested time interval.
      - `use_original_time_range` (boolean · default: false) — optional
        When `true`, uses the original time range instead of the current query time range.
    - **Terms Operation**
      - `operation` (enum) — required
        Values: `terms`
      - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
        Color mapping for dimension values, either categorical (for specific values) or as a gradient.
        Same options as `color` in `Date Histogram Operation`
      - `excludes` (object) — optional
        - `as_regex` (boolean) — optional
          When `true`, treats the values as regular expressions.
        - `values` (union string[] | number[]) — required
          Values to exclude.
      - `fields` (string[] · min items: 1 · max items: 4) — required
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `includes` (object) — optional
        - `as_regex` (boolean) — optional
          When `true`, treats the values as regular expressions.
        - `values` (union string[] | number[]) — required
          Values to include.
      - `increase_accuracy` (boolean) — optional
        When `true`, increases accuracy at the cost of performance.
      - `label` (string) — optional
        Label for the operation
      - `limit` (number · default: 5) — optional
        Number of terms to return.
      - `other_bucket` (object) — optional
        - `include_documents_without_field` (boolean) — required
          When `true`, includes documents that do not have the specified field.
      - `rank_by` (union anyOf) — optional
        Same options as `rank_by` in `Terms Operation`
    - **Histogram Operation**
      - `operation` (enum) — required
        Values: `histogram`
      - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
        Color mapping for dimension values, either categorical (for specific values) or as a gradient.
        Same options as `color` in `Date Histogram Operation`
      - `field` (string) — required
        Field to be used for the histogram.
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `granularity` (union number | enum · default: auto) — optional
        Values: `auto`
      - `include_empty_rows` (boolean · default: true) — optional
        When `true`, includes empty rows in the results.
      - `label` (string) — optional
        Label for the operation
    - **Ranges Operation**
      - `operation` (enum) — required
        Values: `range`
      - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
        Color mapping for dimension values, either categorical (for specific values) or as a gradient.
        Same options as `color` in `Date Histogram Operation`
      - `field` (string) — required
        Field to be used for the range.
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `ranges` (object[] · max items: 100) — required
        - `gt` (number) — optional
          Greater than.
        - `label` (string) — optional
          Label.
        - `lte` (number) — optional
          Less than or equal to.
    - **Filters Operation**
      - `operation` (enum) — required
        Values: `filters`
      - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
        Color mapping for dimension values, either categorical (for specific values) or as a gradient.
        Same options as `color` in `Date Histogram Operation`
      - `filters` (object[] · max items: 100) — required
        - `filter` (object) — required
          A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
          - `expression` (string) — required
            A query expression in KQL or Lucene syntax
          - `language` (enum · default: kql) — optional
            Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
            Values: `kql`, `lucene`
        - `label` (string) — optional
          Label for the filter
      - `label` (string) — optional
        Label for the operation
  - `tags` (string[] · max items: 1000 · default: []) — optional
    Tag IDs to associate with this visualization.
  - `title` (string) — optional
    The title of the chart displayed in the panel. Optional. Any string value or undefined.
- **Region Map Chart (library)**
  - `type` (enum) — required
    Values: `region_map`
  - `data_source` (union oneOf) — required
    - **Data view reference** (`type: data_view_reference`)
      - `type` (enum) — required
        Values: `data_view_reference`
      - `ref_id` (string) — required
        The id of the Kibana data view to use as the data source. Example: "my-data-view".
    - **Data view inline spec** (`type: data_view_spec`)
      - `type` (enum) — required
        Values: `data_view_spec`
      - `allow_hidden_indices` (boolean) — optional
        When `true`, allows the data view to match hidden indices.
      - `field_filters` (string[] · max items: 10000) — optional
        Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
      - `field_settings` (map string to anyOf) — optional
      - `index_pattern` (string · min length: 1) — required
        The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
      - `name` (string · min length: 1 · max length: 256) — optional
        The name of the data view. Example: "Sample data view".
      - `time_field` (string) — optional
        The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
  - `description` (string) — optional
    The description of the chart. Optional. Any string value or undefined.
  - `filters` (union[] · max items: 100) — optional
    Filters applied to the panel
  - `ignore_global_filters` (boolean · default: false) — optional
    When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
  - `metric` (union anyOf) — required
    Metric dimension using a field-based aggregation or a mathematical formula.
    - **Field Metric Operations**
    - **Formula Operation**
      - `filter` (object) — optional
        A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
        - `expression` (string) — required
          A query expression in KQL or Lucene syntax
        - `language` (enum · default: kql) — optional
          Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
          Values: `kql`, `lucene`
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `formula` (string) — required
        Formula
      - `label` (string) — optional
        Label for the operation
      - `operation` (enum) — required
        Values: `formula`
      - `reduced_time_range` (string) — optional
        Reduced time range
      - `time_scale` (enum) — optional
        Time scale
        Values: `s`, `m`, `h`, `d`
  - `query` (object) — optional
    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
    - `expression` (string) — required
      A query expression in KQL or Lucene syntax
    - `language` (enum · default: kql) — optional
      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
      Values: `kql`, `lucene`
  - `region` (union anyOf) — required
    - **Date Histogram Operation**
      - `operation` (enum) — required
        Values: `date_histogram`
      - `ems` (object) — optional
        - `boundaries` (string) — required
          EMS boundaries
        - `join` (string) — required
          EMS join field
      - `drop_partial_intervals` (boolean · default: false) — optional
        When `true`, drops partial intervals from the results.
      - `field` (string) — required
        Field to be used for the date histogram.
      - `include_empty_rows` (boolean · default: true) — optional
        When `true`, includes empty rows in the results.
      - `label` (string) — optional
        Label for the operation
      - `suggested_interval` (string · default: auto) — optional
        Suggested time interval.
      - `use_original_time_range` (boolean · default: false) — optional
        When `true`, uses the original time range instead of the current query time range.
    - **Terms Operation**
      - `operation` (enum) — required
        Values: `terms`
      - `ems` (object) — optional
        - `boundaries` (string) — required
          EMS boundaries
        - `join` (string) — required
          EMS join field
      - `excludes` (object) — optional
        - `as_regex` (boolean) — optional
          When `true`, treats the values as regular expressions.
        - `values` (union string[] | number[]) — required
          Values to exclude.
      - `fields` (string[] · min items: 1 · max items: 4) — required
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `includes` (object) — optional
        - `as_regex` (boolean) — optional
          When `true`, treats the values as regular expressions.
        - `values` (union string[] | number[]) — required
          Values to include.
      - `increase_accuracy` (boolean) — optional
        When `true`, increases accuracy at the cost of performance.
      - `label` (string) — optional
        Label for the operation
      - `limit` (number · default: 5) — optional
        Number of terms to return.
      - `other_bucket` (object) — optional
        - `include_documents_without_field` (boolean) — required
          When `true`, includes documents that do not have the specified field.
      - `rank_by` (union anyOf) — optional
        Same options as `rank_by` in `Terms Operation`
    - **Histogram Operation**
      - `operation` (enum) — required
        Values: `histogram`
      - `ems` (object) — optional
        - `boundaries` (string) — required
          EMS boundaries
        - `join` (string) — required
          EMS join field
      - `field` (string) — required
        Field to be used for the histogram.
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `granularity` (union number | enum · default: auto) — optional
        Values: `auto`
      - `include_empty_rows` (boolean · default: true) — optional
        When `true`, includes empty rows in the results.
      - `label` (string) — optional
        Label for the operation
    - **Ranges Operation**
      - `operation` (enum) — required
        Values: `range`
      - `ems` (object) — optional
        - `boundaries` (string) — required
          EMS boundaries
        - `join` (string) — required
          EMS join field
      - `field` (string) — required
        Field to be used for the range.
      - `format` (union anyOf) — optional
        Number display format for the dimension value.
        Same options as `format` in `Terms Operation`
      - `label` (string) — optional
        Label for the operation
      - `ranges` (object[] · max items: 100) — required
        - `gt` (number) — optional
          Greater than.
        - `label` (string) — optional
          Label.
        - `lte` (number) — optional
          Less than or equal to.
    - **Filters Operation**
      - `operation` (enum) — required
        Values: `filters`
      - `ems` (object) — optional
        - `boundaries` (string) — required
          EMS boundaries
        - `join` (string) — required
          EMS join field
      - `filters` (object[] · max items: 100) — required
        - `filter` (object) — required
          A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
          - `expression` (string) — required
            A query expression in KQL or Lucene syntax
          - `language` (enum · default: kql) — optional
            Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
            Values: `kql`, `lucene`
        - `label` (string) — optional
          Label for the filter
      - `label` (string) — optional
        Label for the operation
  - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
    Sampling factor between 0 (no sampling) and 1 (full sampling).
  - `tags` (string[] · max items: 1000 · default: []) — optional
    Tag IDs to associate with this visualization.
  - `title` (string) — optional
    The title of the chart displayed in the panel. Optional. Any string value or undefined.
- **Datatable Chart (library)**
  - `type` (enum) — required
    Values: `data_table`
  - `data_source` (union oneOf) — required
    - **Data view reference** (`type: data_view_reference`)
      - `type` (enum) — required
        Values: `data_view_reference`
      - `ref_id` (string) — required
        The id of the Kibana data view to use as the data source. Example: "my-data-view".
    - **Data view inline spec** (`type: data_view_spec`)
      - `type` (enum) — required
        Values: `data_view_spec`
      - `allow_hidden_indices` (boolean) — optional
        When `true`, allows the data view to match hidden indices.
      - `field_filters` (string[] · max items: 10000) — optional
        Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
      - `field_settings` (map string to anyOf) — optional
      - `index_pattern` (string · min length: 1) — required
        The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
      - `name` (string · min length: 1 · max length: 256) — optional
        The name of the data view. Example: "Sample data view".
      - `time_field` (string) — optional
        The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
  - `description` (string) — optional
    The description of the chart. Optional. Any string value or undefined.
  - `filters` (union[] · max items: 100) — optional
    Filters applied to the panel
  - `ignore_global_filters` (boolean · default: false) — optional
    When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
  - `metrics` (union anyOf[] · min items: 1 · max items: 1000) — required
    Array of metrics to display as columns in the datatable
    - `alignment` (enum · default: right) — optional
      Alignment of the columns.
      Values: `left`, `center`, `right`
    - `apply_color_to` (enum) — optional
      Column color target: `value` for cell text, `background` for cell background, or `badge` for a badge overlay.
      Values: `value`, `background`, `badge`
    - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
      Color configuration for datatable metrics. Use dynamic coloring for numeric data and categorical/gradient mode for categorical data.
      - **Color By Value**
        Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
      - **Color Mapping**
        Color mapping for dimension values, either categorical (for specific values) or as a gradient.
      - **Auto Color**
        Coloring determined at runtime based on chart defaults
        - `type` (enum) — required
          Values: `auto`
    - `summary` (object) — optional
      Summary row configuration
      - `label` (string) — optional
        Summary row label.
      - `type` (enum) — required
        Type of summary function to apply to the column.
        Values: `sum`, `avg`, `count`, `min`, `max`
    - `visible` (boolean · default: true) — optional
      When `false`, hides the column from the datatable.
    - `width` (number · min: 0) — optional
      Column width in pixels.
  - `query` (object) — optional
    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
    - `expression` (string) — required
      A query expression in KQL or Lucene syntax
    - `language` (enum · default: kql) — optional
      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
      Values: `kql`, `lucene`
  - `rows` (union anyOf[] · min items: 1 · max items: 50) — optional
    Array of operations to split the datatable rows by
    - `alignment` (enum · default: left) — optional
      Alignment of the rows.
      Values: `left`, `center`, `right`
    - `apply_color_to` (enum) — optional
      Column color target: `value` for cell text, `background` for cell background, or `badge` for a badge overlay.
      Values: `value`, `background`, `badge`
    - `click_filter` (boolean · default: false) — optional
      When `true`, enables one-click filtering on cell values.
    - `collapse_by` (union anyOf) — optional
      Aggregation function used to collapse a breakdown dimension into a single value.
      Values: `avg`, `sum`, `max`, `min`
    - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
      - **Color Mapping**
        Color mapping for dimension values, either categorical (for specific values) or as a gradient.
      - **Auto Color**
        Coloring determined at runtime based on chart defaults
        - `type` (enum) — required
          Values: `auto`
    - `visible` (boolean · default: true) — optional
      When `false`, hides the column from the datatable.
    - `width` (number · min: 0) — optional
      Column width in pixels.
  - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
    Sampling factor between 0 (no sampling) and 1 (full sampling).
  - `split_metrics_by` (union anyOf[] · min items: 1 · max items: 20) — optional
    Array of operations to split the metric columns by
    Same options as `x` in `Layer (DSL)`
  - `styling` (object) — optional
    Visual chart styling options
    - `density` (object) — optional
      Density configuration for the datatable.
      - `height` (object) — optional
        - `header` (union anyOf) — optional
          Number of lines before the header is truncated.
          - **type: auto**
            - `type` (enum) — required
              Values: `auto`
          - **type: custom**
            - `type` (enum) — required
              Values: `custom`
            - `max_lines` (number · min: 1 · max: 5 · default: 3) — optional
        - `value` (union anyOf) — optional
          Number of lines to display per table body cell.
          - **type: auto**
            - `type` (enum) — required
              Values: `auto`
          - **type: custom**
            - `type` (enum) — required
              Values: `custom`
            - `lines` (number · min: 1 · max: 20 · default: 1) — optional
      - `mode` (enum · default: default) — optional
        Display density mode.
        Values: `compact`, `default`, `expanded`
    - `paging` (enum) — optional
      Rows per page. When set, pagination is enabled with the specified number of rows.
      Values: `10`, `20`, `30`, `50`, `100`
    - `row_numbers` (object) — optional
      Configuration for row numbers
      - `visible` (boolean) — required
        When `true`, displays row numbers.
    - `sort_by` (union anyOf) — optional
      Sorting configuration. Only one column can be sorted at a time. Use "column_type" to specify the column type.
      - **object**
        Sort by a metric or row column
        - `column_type` (enum) — required
          Type of column to sort by.
          Values: `metric`, `row`
        - `direction` (enum) — required
          Direction
          Values: `asc`, `desc`
        - `index` (number · min: 0) — required
          Index of the column or row to sort by (0-based).
      - **column_type: pivoted_metric**
        Sort by a pivoted metric column (created when metrics are pivoted by split_metrics_by)
        - `column_type` (enum) — required
          Values: `pivoted_metric`
        - `direction` (enum) — required
          Direction
          Values: `asc`, `desc`
        - `index` (number · min: 0) — required
          0-based index into the "metrics" array for the metric to sort; use "values" to identify the pivoted column
        - `values` (string[] · min items: 1 · max items: 20) — required
          Array of pivot values, one for each split_metrics_by column in order
  - `tags` (string[] · max items: 1000 · default: []) — optional
    Tag IDs to associate with this visualization.
  - `title` (string) — optional
    The title of the chart displayed in the panel. Optional. Any string value or undefined.
- **Pie Chart (library)**
  - `type` (enum) — required
    Values: `pie`
  - `data_source` (union oneOf) — required
    - **Data view reference** (`type: data_view_reference`)
      - `type` (enum) — required
        Values: `data_view_reference`
      - `ref_id` (string) — required
        The id of the Kibana data view to use as the data source. Example: "my-data-view".
    - **Data view inline spec** (`type: data_view_spec`)
      - `type` (enum) — required
        Values: `data_view_spec`
      - `allow_hidden_indices` (boolean) — optional
        When `true`, allows the data view to match hidden indices.
      - `field_filters` (string[] · max items: 10000) — optional
        Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
      - `field_settings` (map string to anyOf) — optional
      - `index_pattern` (string · min length: 1) — required
        The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
      - `name` (string · min length: 1 · max length: 256) — optional
        The name of the data view. Example: "Sample data view".
      - `time_field` (string) — optional
        The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
  - `description` (string) — optional
    The description of the chart. Optional. Any string value or undefined.
  - `filters` (union[] · max items: 100) — optional
    Filters applied to the panel
  - `group_by` (union anyOf[] · min items: 1 · max items: 100) — optional
    Array of breakdown dimensions (minimum 1)
    - `collapse_by` (union anyOf) — optional
      Aggregation function used to collapse a breakdown dimension into a single value.
      Values: `avg`, `sum`, `max`, `min`
    - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
      Color mapping for dimension values, either categorical (for specific values) or as a gradient.
      Same options as `color` in `Date Histogram Operation`
  - `ignore_global_filters` (boolean · default: false) — optional
    When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
  - `legend` (object) — optional
    Legend configuration for pie chart
    - `nested` (boolean · default: false) — optional
      Show nested legend with hierarchical breakdown levels
    - `position` (enum · default: right) — optional
      Legend Position.
      Values: `top`, `bottom`, `left`, `right`
    - `size` (union anyOf) — optional
      Legend size.
      Values: `auto`, `s`, `m`, `l`, `xl`
    - `truncate_after_lines` (number · min: 1 · max: 10 · default: 1) — optional
      Number of lines before legend items are truncated.
    - `visibility` (enum) — optional
      Legend visibility.
      Values: `auto`, `visible`, `hidden`
  - `metrics` (union anyOf[] · min items: 1 · max items: 100) — required
    Array of metric configurations (minimum 1)
    - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
      - **Static Color**
        Fixed color for all values in the dimension.
        - `type` (enum) — required
          Values: `static`
        - `color` (string) — required
          The static color to be used for all values.
      - **Auto Color**
        Coloring determined at runtime based on chart defaults
        - `type` (enum) — required
          Values: `auto`
  - `query` (object) — optional
    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
    - `expression` (string) — required
      A query expression in KQL or Lucene syntax
    - `language` (enum · default: kql) — optional
      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
      Values: `kql`, `lucene`
  - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
    Sampling factor between 0 (no sampling) and 1 (full sampling).
  - `styling` (object) — optional
    Visual chart styling options
    - `donut_hole` (enum) — optional
      Donut hole size. Accepted values: `none` (full pie), `s`, `m`, `l`.
      Values: `none`, `s`, `m`, `l`
    - `labels` (object) — optional
      Label configuration for pie chart slice labels inside or outside the pie
      - `position` (enum) — optional
        Slice label position: `inside` or `outside`.
        Values: `inside`, `outside`
      - `visible` (boolean) — optional
        When `true`, displays slice labels.
    - `values` (object) — optional
      Configure the visibility and the format of the values rendered on each chart partition section
      - `mode` (enum) — optional
        How to format values when visible.
        Values: `absolute`, `percentage`
      - `percent_decimals` (number · min: 0 · max: 10 · default: 2) — optional
        Decimal places for percentage display (0-10)
      - `visible` (boolean) — optional
        Show metric values on the chart
  - `tags` (string[] · max items: 1000 · default: []) — optional
    Tag IDs to associate with this visualization.
  - `title` (string) — optional
    The title of the chart displayed in the panel. Optional. Any string value or undefined.
- **Mosaic Chart (library)**
  - `type` (enum) — required
    Values: `mosaic`
  - `data_source` (union oneOf) — required
    - **Data view reference** (`type: data_view_reference`)
      - `type` (enum) — required
        Values: `data_view_reference`
      - `ref_id` (string) — required
        The id of the Kibana data view to use as the data source. Example: "my-data-view".
    - **Data view inline spec** (`type: data_view_spec`)
      - `type` (enum) — required
        Values: `data_view_spec`
      - `allow_hidden_indices` (boolean) — optional
        When `true`, allows the data view to match hidden indices.
      - `field_filters` (string[] · max items: 10000) — optional
        Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
      - `field_settings` (map string to anyOf) — optional
      - `index_pattern` (string · min length: 1) — required
        The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
      - `name` (string · min length: 1 · max length: 256) — optional
        The name of the data view. Example: "Sample data view".
      - `time_field` (string) — optional
        The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
  - `description` (string) — optional
    The description of the chart. Optional. Any string value or undefined.
  - `filters` (union[] · max items: 100) — optional
    Filters applied to the panel
  - `group_breakdown_by` (union anyOf[] · min items: 1 · max items: 100) — optional
    Array of group breakdown dimensions (minimum 1)
    - `collapse_by` (union anyOf) — optional
      Aggregation function used to collapse a breakdown dimension into a single value.
      Values: `avg`, `sum`, `max`, `min`
  - `group_by` (union anyOf[] · min items: 1 · max items: 100) — optional
    Array of breakdown dimensions (minimum 1)
    - `collapse_by` (union anyOf) — optional
      Aggregation function used to collapse a breakdown dimension into a single value.
      Values: `avg`, `sum`, `max`, `min`
    - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
      Color mapping for dimension values, either categorical (for specific values) or as a gradient.
      Same options as `color` in `Date Histogram Operation`
  - `ignore_global_filters` (boolean · default: false) — optional
    When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
  - `legend` (object) — optional
    Legend configuration for mosaic chart appearance and behavior
    - `nested` (boolean · default: false) — optional
      Show nested legend with hierarchical breakdown levels
    - `position` (enum · default: right) — optional
      Legend Position.
      Values: `top`, `bottom`, `left`, `right`
    - `size` (union anyOf) — optional
      Legend size.
      Values: `auto`, `s`, `m`, `l`, `xl`
    - `truncate_after_lines` (number · min: 1 · max: 10 · default: 1) — optional
      Number of lines before legend items are truncated.
    - `visibility` (enum) — optional
      Legend visibility.
      Values: `auto`, `visible`, `hidden`
  - `metric` (union anyOf) — required
    Same options as `metric` in `Tag Cloud Chart (library)`
  - `query` (object) — optional
    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
    - `expression` (string) — required
      A query expression in KQL or Lucene syntax
    - `language` (enum · default: kql) — optional
      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
      Values: `kql`, `lucene`
  - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
    Sampling factor between 0 (no sampling) and 1 (full sampling).
  - `styling` (object) — optional
    Visual chart styling options
    - `values` (object) — optional
      Configure the visibility and the format of the values rendered on each chart partition section
      - `mode` (enum) — optional
        How to format values when visible.
        Values: `absolute`, `percentage`
      - `percent_decimals` (number · min: 0 · max: 10 · default: 2) — optional
        Decimal places for percentage display (0-10)
      - `visible` (boolean) — optional
        Show metric values on the chart
  - `tags` (string[] · max items: 1000 · default: []) — optional
    Tag IDs to associate with this visualization.
  - `title` (string) — optional
    The title of the chart displayed in the panel. Optional. Any string value or undefined.
- **Treemap Chart (library)**
  - `type` (enum) — required
    Values: `treemap`
  - `data_source` (union oneOf) — required
    - **Data view reference** (`type: data_view_reference`)
      - `type` (enum) — required
        Values: `data_view_reference`
      - `ref_id` (string) — required
        The id of the Kibana data view to use as the data source. Example: "my-data-view".
    - **Data view inline spec** (`type: data_view_spec`)
      - `type` (enum) — required
        Values: `data_view_spec`
      - `allow_hidden_indices` (boolean) — optional
        When `true`, allows the data view to match hidden indices.
      - `field_filters` (string[] · max items: 10000) — optional
        Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
      - `field_settings` (map string to anyOf) — optional
      - `index_pattern` (string · min length: 1) — required
        The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
      - `name` (string · min length: 1 · max length: 256) — optional
        The name of the data view. Example: "Sample data view".
      - `time_field` (string) — optional
        The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
  - `description` (string) — optional
    The description of the chart. Optional. Any string value or undefined.
  - `filters` (union[] · max items: 100) — optional
    Filters applied to the panel
  - `group_by` (union anyOf[] · min items: 1 · max items: 100) — optional
    Array of breakdown dimensions (minimum 1)
    - `collapse_by` (union anyOf) — optional
      Aggregation function used to collapse a breakdown dimension into a single value.
      Values: `avg`, `sum`, `max`, `min`
    - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
      Color mapping for dimension values, either categorical (for specific values) or as a gradient.
      Same options as `color` in `Date Histogram Operation`
  - `ignore_global_filters` (boolean · default: false) — optional
    When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
  - `legend` (object) — optional
    Configuration for the treemap chart legend appearance and behavior
    - `nested` (boolean · default: false) — optional
      Show nested legend with hierarchical breakdown levels
    - `position` (enum · default: right) — optional
      Legend Position.
      Values: `top`, `bottom`, `left`, `right`
    - `size` (union anyOf) — optional
      Legend size.
      Values: `auto`, `s`, `m`, `l`, `xl`
    - `truncate_after_lines` (number · min: 1 · max: 10 · default: 1) — optional
      Number of lines before legend items are truncated.
    - `visibility` (enum) — optional
      Legend visibility.
      Values: `auto`, `visible`, `hidden`
  - `metrics` (union anyOf[] · min items: 1 · max items: 100) — required
    Array of metric configurations (minimum 1)
    - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
      - **Static Color**
        Fixed color for all values in the dimension.
        - `type` (enum) — required
          Values: `static`
        - `color` (string) — required
          The static color to be used for all values.
      - **Auto Color**
        Coloring determined at runtime based on chart defaults
        - `type` (enum) — required
          Values: `auto`
  - `query` (object) — optional
    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
    - `expression` (string) — required
      A query expression in KQL or Lucene syntax
    - `language` (enum · default: kql) — optional
      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
      Values: `kql`, `lucene`
  - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
    Sampling factor between 0 (no sampling) and 1 (full sampling).
  - `styling` (object) — optional
    Visual chart styling options
    - `labels` (object) — optional
      Labels configuration
      - `visible` (boolean) — optional
        Show category labels
    - `values` (object) — optional
      Configure the visibility and the format of the values rendered on each chart partition section
      - `mode` (enum) — optional
        How to format values when visible.
        Values: `absolute`, `percentage`
      - `percent_decimals` (number · min: 0 · max: 10 · default: 2) — optional
        Decimal places for percentage display (0-10)
      - `visible` (boolean) — optional
        Show metric values on the chart
  - `tags` (string[] · max items: 1000 · default: []) — optional
    Tag IDs to associate with this visualization.
  - `title` (string) — optional
    The title of the chart displayed in the panel. Optional. Any string value or undefined.
- **Waffle Chart (library)**
  - `type` (enum) — required
    Values: `waffle`
  - `data_source` (union oneOf) — required
    - **Data view reference** (`type: data_view_reference`)
      - `type` (enum) — required
        Values: `data_view_reference`
      - `ref_id` (string) — required
        The id of the Kibana data view to use as the data source. Example: "my-data-view".
    - **Data view inline spec** (`type: data_view_spec`)
      - `type` (enum) — required
        Values: `data_view_spec`
      - `allow_hidden_indices` (boolean) — optional
        When `true`, allows the data view to match hidden indices.
      - `field_filters` (string[] · max items: 10000) — optional
        Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
      - `field_settings` (map string to anyOf) — optional
      - `index_pattern` (string · min length: 1) — required
        The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
      - `name` (string · min length: 1 · max length: 256) — optional
        The name of the data view. Example: "Sample data view".
      - `time_field` (string) — optional
        The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
  - `description` (string) — optional
    The description of the chart. Optional. Any string value or undefined.
  - `filters` (union[] · max items: 100) — optional
    Filters applied to the panel
  - `group_by` (union anyOf[] · min items: 1 · max items: 100) — optional
    Array of breakdown dimensions (minimum 1)
    - `collapse_by` (union anyOf) — optional
      Aggregation function used to collapse a breakdown dimension into a single value.
      Values: `avg`, `sum`, `max`, `min`
    - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
}) — optional
      Color mapping for dimension values, either categorical (for specific values) or as a gradient.
      Same options as `color` in `Date Histogram Operation`
  - `ignore_global_filters` (boolean · default: false) — optional
    When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
  - `legend` (object) — optional
    Legend configuration for waffle chart
    - `position` (enum · default: right) — optional
      Legend Position.
      Values: `top`, `bottom`, `left`, `right`
    - `size` (union anyOf) — optional
      Legend size.
      Values: `auto`, `s`, `m`, `l`, `xl`
    - `truncate_after_lines` (number · min: 1 · max: 10 · default: 1) — optional
      Number of lines before legend items are truncated.
    - `values` (enum[] · min items: 1 · max items: 1) — optional
      Values: `absolute`
    - `visibility` (enum) — optional
      Legend visibility.
      Values: `auto`, `visible`, `hidden`
  - `metrics` (union anyOf[] · min items: 1 · max items: 100) — required
    Array of metric configurations (minimum 1)
    - `color` (union anyOf · default: {
  "type": "auto"
}) — optional
      - **Static Color**
        Fixed color for all values in the dimension.
        - `type` (enum) — required
          Values: `static`
        - `color` (string) — required
          The static color to be used for all values.
      - **Auto Color**
        Coloring determined at runtime based on chart defaults
        - `type` (enum) — required
          Values: `auto`
  - `query` (object) — optional
    A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
    - `expression` (string) — required
      A query expression in KQL or Lucene syntax
    - `language` (enum · default: kql) — optional
      Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
      Values: `kql`, `lucene`
  - `sampling` (number · min: 0 · max: 1 · default: 1) — optional
    Sampling factor between 0 (no sampling) and 1 (full sampling).
  - `styling` (object) — optional
    Visual chart styling options
    - `values` (object) — optional
      Configure the visibility and the format of the values rendered on each chart partition section
      - `mode` (enum) — optional
        How to format values when visible.
        Values: `absolute`, `percentage`
      - `percent_decimals` (number · min: 0 · max: 10 · default: 2) — optional
        Decimal places for percentage display (0-10)
      - `visible` (boolean) — optional
        Show metric values on the chart
  - `tags` (string[] · max items: 1000 · default: []) — optional
    Tag IDs to associate with this visualization.
  - `title` (string) — optional
    The title of the chart displayed in the panel. Optional. Any string value or undefined.

## Responses

#### `200`

Ok

`application/json`

- `data` (union anyOf)
  - **Metric Chart (library)**
    - `type` (enum)
      Values: `metric`
    - `breakdown_by` (union anyOf)
      Same options as `breakdown_by` in `Metric Chart (library)`
    - `data_source` (union oneOf)
      - **Data view reference** (`type: data_view_reference`)
        - `type` (enum)
          Values: `data_view_reference`
        - `ref_id` (string)
          The id of the Kibana data view to use as the data source. Example: "my-data-view".
      - **Data view inline spec** (`type: data_view_spec`)
        - `type` (enum)
          Values: `data_view_spec`
        - `allow_hidden_indices` (boolean)
          When `true`, allows the data view to match hidden indices.
        - `field_filters` (string[] · max items: 10000)
          Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
        - `field_settings` (map string to anyOf)
        - `index_pattern` (string · min length: 1)
          The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
        - `name` (string · min length: 1 · max length: 256)
          The name of the data view. Example: "Sample data view".
        - `time_field` (string)
          The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
    - `description` (string)
      The description of the chart. Optional. Any string value or undefined.
    - `filters` (union[] · max items: 100)
      Filters applied to the panel
    - `ignore_global_filters` (boolean · default: false)
      When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
    - `metrics` (union anyOf[] · min items: 1 · max items: 2)
      Metric dimensions to display. The first must be a primary metric; an optional second must be a secondary metric.
      Same options as `metrics` in `Metric Chart (library)`
    - `query` (object)
      A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
      - `expression` (string)
        A query expression in KQL or Lucene syntax
      - `language` (enum · default: kql)
        Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
        Values: `kql`, `lucene`
    - `sampling` (number · min: 0 · max: 1 · default: 1)
      Sampling factor between 0 (no sampling) and 1 (full sampling).
    - `styling` (object)
      Visual chart styling options
      Same fields as `styling` in `Metric Chart (library)`
    - `tags` (string[] · max items: 1000 · default: [])
      Tag IDs to associate with this visualization.
    - `title` (string)
      The title of the chart displayed in the panel. Optional. Any string value or undefined.
  - **Legacy Metric Chart (library)**
    - `type` (enum)
      Values: `legacy_metric`
    - `data_source` (union oneOf)
      - **Data view reference** (`type: data_view_reference`)
        - `type` (enum)
          Values: `data_view_reference`
        - `ref_id` (string)
          The id of the Kibana data view to use as the data source. Example: "my-data-view".
      - **Data view inline spec** (`type: data_view_spec`)
        - `type` (enum)
          Values: `data_view_spec`
        - `allow_hidden_indices` (boolean)
          When `true`, allows the data view to match hidden indices.
        - `field_filters` (string[] · max items: 10000)
          Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
        - `field_settings` (map string to anyOf)
        - `index_pattern` (string · min length: 1)
          The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
        - `name` (string · min length: 1 · max length: 256)
          The name of the data view. Example: "Sample data view".
        - `time_field` (string)
          The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
    - `description` (string)
      The description of the chart. Optional. Any string value or undefined.
    - `filters` (union[] · max items: 100)
      Filters applied to the panel
    - `ignore_global_filters` (boolean · default: false)
      When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
    - `metric` (union anyOf)
      Same options as `metric` in `Legacy Metric Chart (library)`
    - `query` (object)
      A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
      - `expression` (string)
        A query expression in KQL or Lucene syntax
      - `language` (enum · default: kql)
        Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
        Values: `kql`, `lucene`
    - `sampling` (number · min: 0 · max: 1 · default: 1)
      Sampling factor between 0 (no sampling) and 1 (full sampling).
    - `tags` (string[] · max items: 1000 · default: [])
      Tag IDs to associate with this visualization.
    - `title` (string)
      The title of the chart displayed in the panel. Optional. Any string value or undefined.
  - **XY Chart (library)**
    - `type` (enum)
      Values: `xy`
    - `axis` (object)
      Axis configuration for X, Y, and Y2 axes. The Y axis is on the start (leading) side, the Y2 axis is on the end (trailing) side.
      Same fields as `axis` in `XY Chart (library)`
    - `description` (string)
      The description of the chart. Optional. Any string value or undefined.
    - `filters` (union[] · max items: 100)
      Filters applied to the panel
    - `layers` (union anyOf[] · min items: 1 · max items: 100)
      Chart layers
      Same options as `layers` in `XY Chart (library)`
    - `legend` (union anyOf)
      Legend configuration for XY chart
      Same options as `legend` in `XY Chart (library)`
    - `query` (object)
      A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
      - `expression` (string)
        A query expression in KQL or Lucene syntax
      - `language` (enum · default: kql)
        Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
        Values: `kql`, `lucene`
    - `styling` (object)
      Visual styling options for the chart
      Same fields as `styling` in `XY Chart (library)`
    - `tags` (string[] · max items: 1000 · default: [])
      Tag IDs to associate with this visualization.
    - `title` (string)
      The title of the chart displayed in the panel. Optional. Any string value or undefined.
  - **Gauge Chart (library)**
    - `type` (enum)
      Values: `gauge`
    - `data_source` (union oneOf)
      - **Data view reference** (`type: data_view_reference`)
        - `type` (enum)
          Values: `data_view_reference`
        - `ref_id` (string)
          The id of the Kibana data view to use as the data source. Example: "my-data-view".
      - **Data view inline spec** (`type: data_view_spec`)
        - `type` (enum)
          Values: `data_view_spec`
        - `allow_hidden_indices` (boolean)
          When `true`, allows the data view to match hidden indices.
        - `field_filters` (string[] · max items: 10000)
          Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
        - `field_settings` (map string to anyOf)
        - `index_pattern` (string · min length: 1)
          The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
        - `name` (string · min length: 1 · max length: 256)
          The name of the data view. Example: "Sample data view".
        - `time_field` (string)
          The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
    - `description` (string)
      The description of the chart. Optional. Any string value or undefined.
    - `filters` (union[] · max items: 100)
      Filters applied to the panel
    - `ignore_global_filters` (boolean · default: false)
      When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
    - `metric` (union anyOf)
      Same options as `metric` in `Gauge Chart (library)`
    - `query` (object)
      A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
      - `expression` (string)
        A query expression in KQL or Lucene syntax
      - `language` (enum · default: kql)
        Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
        Values: `kql`, `lucene`
    - `sampling` (number · min: 0 · max: 1 · default: 1)
      Sampling factor between 0 (no sampling) and 1 (full sampling).
    - `styling` (object)
      Visual chart styling options
      - `shape` (union anyOf · default: {
  "orientation": "horizontal",
  "type": "bullet"
})
        - **Shape (Bullet)**
          Bullet gauge shape.
          - `orientation` (enum)
            Orientation
            Values: `horizontal`, `vertical`
          - `type` (enum)
            Values: `bullet`
        - **Shape (Circular)**
          Circular gauge shape.
          - `type` (enum)
            Values: `circle`, `semi_circle`, `arc`
    - `tags` (string[] · max items: 1000 · default: [])
      Tag IDs to associate with this visualization.
    - `title` (string)
      The title of the chart displayed in the panel. Optional. Any string value or undefined.
  - **Heatmap Chart (library)**
    - `type` (enum)
      Values: `heatmap`
    - `axis` (object)
      Axis configuration for X and Y axes
      Same fields as `axis` in `Heatmap Chart (library)`
    - `data_source` (union oneOf)
      - **Data view reference** (`type: data_view_reference`)
        - `type` (enum)
          Values: `data_view_reference`
        - `ref_id` (string)
          The id of the Kibana data view to use as the data source. Example: "my-data-view".
      - **Data view inline spec** (`type: data_view_spec`)
        - `type` (enum)
          Values: `data_view_spec`
        - `allow_hidden_indices` (boolean)
          When `true`, allows the data view to match hidden indices.
        - `field_filters` (string[] · max items: 10000)
          Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
        - `field_settings` (map string to anyOf)
        - `index_pattern` (string · min length: 1)
          The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
        - `name` (string · min length: 1 · max length: 256)
          The name of the data view. Example: "Sample data view".
        - `time_field` (string)
          The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
    - `description` (string)
      The description of the chart. Optional. Any string value or undefined.
    - `filters` (union[] · max items: 100)
      Filters applied to the panel
    - `ignore_global_filters` (boolean · default: false)
      When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
    - `legend` (object)
      Legend configuration
      - `position` (enum)
        Values: `top`, `bottom`, `left`, `right`
      - `size` (union anyOf)
        Legend size.
        Values: `auto`, `s`, `m`, `l`, `xl`
      - `truncate_after_lines` (number · min: 1 · max: 10 · default: 1)
        Number of lines before legend items are truncated.
      - `visibility` (enum)
        Legend visibility.
        Values: `visible`, `hidden`
    - `metric` (union anyOf)
      Same options as `metric` in `Heatmap Chart (library)`
    - `query` (object)
      A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
      - `expression` (string)
        A query expression in KQL or Lucene syntax
      - `language` (enum · default: kql)
        Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
        Values: `kql`, `lucene`
    - `sampling` (number · min: 0 · max: 1 · default: 1)
      Sampling factor between 0 (no sampling) and 1 (full sampling).
    - `styling` (object)
      Visual chart styling options
      - `cells` (object)
        Cells configuration
        - `labels` (object)
          - `visible` (boolean · default: false)
            Show cell labels
    - `tags` (string[] · max items: 1000 · default: [])
      Tag IDs to associate with this visualization.
    - `title` (string)
      The title of the chart displayed in the panel. Optional. Any string value or undefined.
    - `x` (union anyOf)
      Breakdown dimension configuration using date histogram, terms, numeric histogram, value ranges, or custom filters.
      Same options as `x` in `Layer (DSL)`
    - `y` (union anyOf)
      Breakdown dimension configuration using date histogram, terms, numeric histogram, value ranges, or custom filters.
      Same options as `x` in `Layer (DSL)`
  - **Tag Cloud Chart (library)**
    - `type` (enum)
      Values: `tag_cloud`
    - `data_source` (union oneOf)
      - **Data view reference** (`type: data_view_reference`)
        - `type` (enum)
          Values: `data_view_reference`
        - `ref_id` (string)
          The id of the Kibana data view to use as the data source. Example: "my-data-view".
      - **Data view inline spec** (`type: data_view_spec`)
        - `type` (enum)
          Values: `data_view_spec`
        - `allow_hidden_indices` (boolean)
          When `true`, allows the data view to match hidden indices.
        - `field_filters` (string[] · max items: 10000)
          Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
        - `field_settings` (map string to anyOf)
        - `index_pattern` (string · min length: 1)
          The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
        - `name` (string · min length: 1 · max length: 256)
          The name of the data view. Example: "Sample data view".
        - `time_field` (string)
          The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
    - `description` (string)
      The description of the chart. Optional. Any string value or undefined.
    - `filters` (union[] · max items: 100)
      Filters applied to the panel
    - `ignore_global_filters` (boolean · default: false)
      When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
    - `metric` (union anyOf)
      Same options as `metric` in `Tag Cloud Chart (library)`
    - `query` (object)
      A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
      - `expression` (string)
        A query expression in KQL or Lucene syntax
      - `language` (enum · default: kql)
        Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
        Values: `kql`, `lucene`
    - `sampling` (number · min: 0 · max: 1 · default: 1)
      Sampling factor between 0 (no sampling) and 1 (full sampling).
    - `styling` (object)
      Visual chart styling options
      - `caption` (object)
        Caption configuration representing the metric and the tag_by operations labels
        - `visible` (boolean · default: true)
          When `true`, displays the caption.
      - `font_size` (object)
        Font size range for tags.
        - `max` (number · max: 120 · default: 72)
          Maximum font size.
        - `min` (number · min: 1 · default: 18)
          Minimum font size.
      - `orientation` (enum)
        Orientation
        Values: `horizontal`, `vertical`, `angled`
    - `tag_by` (union anyOf)
      Same options as `tag_by` in `Tag Cloud Chart (library)`
    - `tags` (string[] · max items: 1000 · default: [])
      Tag IDs to associate with this visualization.
    - `title` (string)
      The title of the chart displayed in the panel. Optional. Any string value or undefined.
  - **Region Map Chart (library)**
    - `type` (enum)
      Values: `region_map`
    - `data_source` (union oneOf)
      - **Data view reference** (`type: data_view_reference`)
        - `type` (enum)
          Values: `data_view_reference`
        - `ref_id` (string)
          The id of the Kibana data view to use as the data source. Example: "my-data-view".
      - **Data view inline spec** (`type: data_view_spec`)
        - `type` (enum)
          Values: `data_view_spec`
        - `allow_hidden_indices` (boolean)
          When `true`, allows the data view to match hidden indices.
        - `field_filters` (string[] · max items: 10000)
          Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
        - `field_settings` (map string to anyOf)
        - `index_pattern` (string · min length: 1)
          The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
        - `name` (string · min length: 1 · max length: 256)
          The name of the data view. Example: "Sample data view".
        - `time_field` (string)
          The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
    - `description` (string)
      The description of the chart. Optional. Any string value or undefined.
    - `filters` (union[] · max items: 100)
      Filters applied to the panel
    - `ignore_global_filters` (boolean · default: false)
      When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
    - `metric` (union anyOf)
      Metric dimension using a field-based aggregation or a mathematical formula.
      - **Field Metric Operations**
      - **Formula Operation**
        - `filter` (object)
          A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
          - `expression` (string)
            A query expression in KQL or Lucene syntax
          - `language` (enum · default: kql)
            Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
            Values: `kql`, `lucene`
        - `format` (union anyOf)
          Number display format for the dimension value.
          Same options as `format` in `Terms Operation`
        - `formula` (string)
          Formula
        - `label` (string)
          Label for the operation
        - `operation` (enum)
          Values: `formula`
        - `reduced_time_range` (string)
          Reduced time range
        - `time_scale` (enum)
          Time scale
          Values: `s`, `m`, `h`, `d`
    - `query` (object)
      A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
      - `expression` (string)
        A query expression in KQL or Lucene syntax
      - `language` (enum · default: kql)
        Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
        Values: `kql`, `lucene`
    - `region` (union anyOf)
      Same options as `region` in `Region Map Chart (library)`
    - `sampling` (number · min: 0 · max: 1 · default: 1)
      Sampling factor between 0 (no sampling) and 1 (full sampling).
    - `tags` (string[] · max items: 1000 · default: [])
      Tag IDs to associate with this visualization.
    - `title` (string)
      The title of the chart displayed in the panel. Optional. Any string value or undefined.
  - **Datatable Chart (library)**
    - `type` (enum)
      Values: `data_table`
    - `data_source` (union oneOf)
      - **Data view reference** (`type: data_view_reference`)
        - `type` (enum)
          Values: `data_view_reference`
        - `ref_id` (string)
          The id of the Kibana data view to use as the data source. Example: "my-data-view".
      - **Data view inline spec** (`type: data_view_spec`)
        - `type` (enum)
          Values: `data_view_spec`
        - `allow_hidden_indices` (boolean)
          When `true`, allows the data view to match hidden indices.
        - `field_filters` (string[] · max items: 10000)
          Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
        - `field_settings` (map string to anyOf)
        - `index_pattern` (string · min length: 1)
          The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
        - `name` (string · min length: 1 · max length: 256)
          The name of the data view. Example: "Sample data view".
        - `time_field` (string)
          The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
    - `description` (string)
      The description of the chart. Optional. Any string value or undefined.
    - `filters` (union[] · max items: 100)
      Filters applied to the panel
    - `ignore_global_filters` (boolean · default: false)
      When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
    - `metrics` (union anyOf[] · min items: 1 · max items: 1000)
      Array of metrics to display as columns in the datatable
      - `alignment` (enum · default: right)
        Alignment of the columns.
        Values: `left`, `center`, `right`
      - `apply_color_to` (enum)
        Column color target: `value` for cell text, `background` for cell background, or `badge` for a badge overlay.
        Values: `value`, `background`, `badge`
      - `color` (union anyOf · default: {
  "type": "auto"
})
        Color configuration for datatable metrics. Use dynamic coloring for numeric data and categorical/gradient mode for categorical data.
        - **Color By Value**
          Dynamic color mapping by numeric range, with support for absolute and percentage-based ranges and for named palettes.
        - **Color Mapping**
          Color mapping for dimension values, either categorical (for specific values) or as a gradient.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum)
            Values: `auto`
      - `summary` (object)
        Summary row configuration
        - `label` (string)
          Summary row label.
        - `type` (enum)
          Type of summary function to apply to the column.
          Values: `sum`, `avg`, `count`, `min`, `max`
      - `visible` (boolean · default: true)
        When `false`, hides the column from the datatable.
      - `width` (number · min: 0)
        Column width in pixels.
    - `query` (object)
      A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
      - `expression` (string)
        A query expression in KQL or Lucene syntax
      - `language` (enum · default: kql)
        Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
        Values: `kql`, `lucene`
    - `rows` (union anyOf[] · min items: 1 · max items: 50)
      Array of operations to split the datatable rows by
      - `alignment` (enum · default: left)
        Alignment of the rows.
        Values: `left`, `center`, `right`
      - `apply_color_to` (enum)
        Column color target: `value` for cell text, `background` for cell background, or `badge` for a badge overlay.
        Values: `value`, `background`, `badge`
      - `click_filter` (boolean · default: false)
        When `true`, enables one-click filtering on cell values.
      - `collapse_by` (union anyOf)
        Aggregation function used to collapse a breakdown dimension into a single value.
        Values: `avg`, `sum`, `max`, `min`
      - `color` (union anyOf · default: {
  "type": "auto"
})
        - **Color Mapping**
          Color mapping for dimension values, either categorical (for specific values) or as a gradient.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum)
            Values: `auto`
      - `visible` (boolean · default: true)
        When `false`, hides the column from the datatable.
      - `width` (number · min: 0)
        Column width in pixels.
    - `sampling` (number · min: 0 · max: 1 · default: 1)
      Sampling factor between 0 (no sampling) and 1 (full sampling).
    - `split_metrics_by` (union anyOf[] · min items: 1 · max items: 20)
      Array of operations to split the metric columns by
      Same options as `x` in `Layer (DSL)`
    - `styling` (object)
      Visual chart styling options
      Same fields as `styling` in `Datatable Chart (library)`
    - `tags` (string[] · max items: 1000 · default: [])
      Tag IDs to associate with this visualization.
    - `title` (string)
      The title of the chart displayed in the panel. Optional. Any string value or undefined.
  - **Pie Chart (library)**
    - `type` (enum)
      Values: `pie`
    - `data_source` (union oneOf)
      - **Data view reference** (`type: data_view_reference`)
        - `type` (enum)
          Values: `data_view_reference`
        - `ref_id` (string)
          The id of the Kibana data view to use as the data source. Example: "my-data-view".
      - **Data view inline spec** (`type: data_view_spec`)
        - `type` (enum)
          Values: `data_view_spec`
        - `allow_hidden_indices` (boolean)
          When `true`, allows the data view to match hidden indices.
        - `field_filters` (string[] · max items: 10000)
          Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
        - `field_settings` (map string to anyOf)
        - `index_pattern` (string · min length: 1)
          The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
        - `name` (string · min length: 1 · max length: 256)
          The name of the data view. Example: "Sample data view".
        - `time_field` (string)
          The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
    - `description` (string)
      The description of the chart. Optional. Any string value or undefined.
    - `filters` (union[] · max items: 100)
      Filters applied to the panel
    - `group_by` (union anyOf[] · min items: 1 · max items: 100)
      Array of breakdown dimensions (minimum 1)
      - `collapse_by` (union anyOf)
        Aggregation function used to collapse a breakdown dimension into a single value.
        Values: `avg`, `sum`, `max`, `min`
      - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
})
        Color mapping for dimension values, either categorical (for specific values) or as a gradient.
        Same options as `color` in `Date Histogram Operation`
    - `ignore_global_filters` (boolean · default: false)
      When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
    - `legend` (object)
      Legend configuration for pie chart
      - `nested` (boolean · default: false)
        Show nested legend with hierarchical breakdown levels
      - `position` (enum · default: right)
        Legend Position.
        Values: `top`, `bottom`, `left`, `right`
      - `size` (union anyOf)
        Legend size.
        Values: `auto`, `s`, `m`, `l`, `xl`
      - `truncate_after_lines` (number · min: 1 · max: 10 · default: 1)
        Number of lines before legend items are truncated.
      - `visibility` (enum)
        Legend visibility.
        Values: `auto`, `visible`, `hidden`
    - `metrics` (union anyOf[] · min items: 1 · max items: 100)
      Array of metric configurations (minimum 1)
      - `color` (union anyOf · default: {
  "type": "auto"
})
        - **Static Color**
          Fixed color for all values in the dimension.
          - `type` (enum)
            Values: `static`
          - `color` (string)
            The static color to be used for all values.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum)
            Values: `auto`
    - `query` (object)
      A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
      - `expression` (string)
        A query expression in KQL or Lucene syntax
      - `language` (enum · default: kql)
        Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
        Values: `kql`, `lucene`
    - `sampling` (number · min: 0 · max: 1 · default: 1)
      Sampling factor between 0 (no sampling) and 1 (full sampling).
    - `styling` (object)
      Visual chart styling options
      - `donut_hole` (enum)
        Donut hole size. Accepted values: `none` (full pie), `s`, `m`, `l`.
        Values: `none`, `s`, `m`, `l`
      - `labels` (object)
        Label configuration for pie chart slice labels inside or outside the pie
        - `position` (enum)
          Slice label position: `inside` or `outside`.
          Values: `inside`, `outside`
        - `visible` (boolean)
          When `true`, displays slice labels.
      - `values` (object)
        Configure the visibility and the format of the values rendered on each chart partition section
        - `mode` (enum)
          How to format values when visible.
          Values: `absolute`, `percentage`
        - `percent_decimals` (number · min: 0 · max: 10 · default: 2)
          Decimal places for percentage display (0-10)
        - `visible` (boolean)
          Show metric values on the chart
    - `tags` (string[] · max items: 1000 · default: [])
      Tag IDs to associate with this visualization.
    - `title` (string)
      The title of the chart displayed in the panel. Optional. Any string value or undefined.
  - **Mosaic Chart (library)**
    - `type` (enum)
      Values: `mosaic`
    - `data_source` (union oneOf)
      - **Data view reference** (`type: data_view_reference`)
        - `type` (enum)
          Values: `data_view_reference`
        - `ref_id` (string)
          The id of the Kibana data view to use as the data source. Example: "my-data-view".
      - **Data view inline spec** (`type: data_view_spec`)
        - `type` (enum)
          Values: `data_view_spec`
        - `allow_hidden_indices` (boolean)
          When `true`, allows the data view to match hidden indices.
        - `field_filters` (string[] · max items: 10000)
          Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
        - `field_settings` (map string to anyOf)
        - `index_pattern` (string · min length: 1)
          The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
        - `name` (string · min length: 1 · max length: 256)
          The name of the data view. Example: "Sample data view".
        - `time_field` (string)
          The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
    - `description` (string)
      The description of the chart. Optional. Any string value or undefined.
    - `filters` (union[] · max items: 100)
      Filters applied to the panel
    - `group_breakdown_by` (union anyOf[] · min items: 1 · max items: 100)
      Array of group breakdown dimensions (minimum 1)
      - `collapse_by` (union anyOf)
        Aggregation function used to collapse a breakdown dimension into a single value.
        Values: `avg`, `sum`, `max`, `min`
    - `group_by` (union anyOf[] · min items: 1 · max items: 100)
      Array of breakdown dimensions (minimum 1)
      - `collapse_by` (union anyOf)
        Aggregation function used to collapse a breakdown dimension into a single value.
        Values: `avg`, `sum`, `max`, `min`
      - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
})
        Color mapping for dimension values, either categorical (for specific values) or as a gradient.
        Same options as `color` in `Date Histogram Operation`
    - `ignore_global_filters` (boolean · default: false)
      When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
    - `legend` (object)
      Legend configuration for mosaic chart appearance and behavior
      - `nested` (boolean · default: false)
        Show nested legend with hierarchical breakdown levels
      - `position` (enum · default: right)
        Legend Position.
        Values: `top`, `bottom`, `left`, `right`
      - `size` (union anyOf)
        Legend size.
        Values: `auto`, `s`, `m`, `l`, `xl`
      - `truncate_after_lines` (number · min: 1 · max: 10 · default: 1)
        Number of lines before legend items are truncated.
      - `visibility` (enum)
        Legend visibility.
        Values: `auto`, `visible`, `hidden`
    - `metric` (union anyOf)
      Same options as `metric` in `Tag Cloud Chart (library)`
    - `query` (object)
      A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
      - `expression` (string)
        A query expression in KQL or Lucene syntax
      - `language` (enum · default: kql)
        Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
        Values: `kql`, `lucene`
    - `sampling` (number · min: 0 · max: 1 · default: 1)
      Sampling factor between 0 (no sampling) and 1 (full sampling).
    - `styling` (object)
      Visual chart styling options
      - `values` (object)
        Configure the visibility and the format of the values rendered on each chart partition section
        - `mode` (enum)
          How to format values when visible.
          Values: `absolute`, `percentage`
        - `percent_decimals` (number · min: 0 · max: 10 · default: 2)
          Decimal places for percentage display (0-10)
        - `visible` (boolean)
          Show metric values on the chart
    - `tags` (string[] · max items: 1000 · default: [])
      Tag IDs to associate with this visualization.
    - `title` (string)
      The title of the chart displayed in the panel. Optional. Any string value or undefined.
  - **Treemap Chart (library)**
    - `type` (enum)
      Values: `treemap`
    - `data_source` (union oneOf)
      - **Data view reference** (`type: data_view_reference`)
        - `type` (enum)
          Values: `data_view_reference`
        - `ref_id` (string)
          The id of the Kibana data view to use as the data source. Example: "my-data-view".
      - **Data view inline spec** (`type: data_view_spec`)
        - `type` (enum)
          Values: `data_view_spec`
        - `allow_hidden_indices` (boolean)
          When `true`, allows the data view to match hidden indices.
        - `field_filters` (string[] · max items: 10000)
          Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
        - `field_settings` (map string to anyOf)
        - `index_pattern` (string · min length: 1)
          The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
        - `name` (string · min length: 1 · max length: 256)
          The name of the data view. Example: "Sample data view".
        - `time_field` (string)
          The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
    - `description` (string)
      The description of the chart. Optional. Any string value or undefined.
    - `filters` (union[] · max items: 100)
      Filters applied to the panel
    - `group_by` (union anyOf[] · min items: 1 · max items: 100)
      Array of breakdown dimensions (minimum 1)
      - `collapse_by` (union anyOf)
        Aggregation function used to collapse a breakdown dimension into a single value.
        Values: `avg`, `sum`, `max`, `min`
      - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
})
        Color mapping for dimension values, either categorical (for specific values) or as a gradient.
        Same options as `color` in `Date Histogram Operation`
    - `ignore_global_filters` (boolean · default: false)
      When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
    - `legend` (object)
      Configuration for the treemap chart legend appearance and behavior
      - `nested` (boolean · default: false)
        Show nested legend with hierarchical breakdown levels
      - `position` (enum · default: right)
        Legend Position.
        Values: `top`, `bottom`, `left`, `right`
      - `size` (union anyOf)
        Legend size.
        Values: `auto`, `s`, `m`, `l`, `xl`
      - `truncate_after_lines` (number · min: 1 · max: 10 · default: 1)
        Number of lines before legend items are truncated.
      - `visibility` (enum)
        Legend visibility.
        Values: `auto`, `visible`, `hidden`
    - `metrics` (union anyOf[] · min items: 1 · max items: 100)
      Array of metric configurations (minimum 1)
      - `color` (union anyOf · default: {
  "type": "auto"
})
        - **Static Color**
          Fixed color for all values in the dimension.
          - `type` (enum)
            Values: `static`
          - `color` (string)
            The static color to be used for all values.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum)
            Values: `auto`
    - `query` (object)
      A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
      - `expression` (string)
        A query expression in KQL or Lucene syntax
      - `language` (enum · default: kql)
        Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
        Values: `kql`, `lucene`
    - `sampling` (number · min: 0 · max: 1 · default: 1)
      Sampling factor between 0 (no sampling) and 1 (full sampling).
    - `styling` (object)
      Visual chart styling options
      - `labels` (object)
        Labels configuration
        - `visible` (boolean)
          Show category labels
      - `values` (object)
        Configure the visibility and the format of the values rendered on each chart partition section
        - `mode` (enum)
          How to format values when visible.
          Values: `absolute`, `percentage`
        - `percent_decimals` (number · min: 0 · max: 10 · default: 2)
          Decimal places for percentage display (0-10)
        - `visible` (boolean)
          Show metric values on the chart
    - `tags` (string[] · max items: 1000 · default: [])
      Tag IDs to associate with this visualization.
    - `title` (string)
      The title of the chart displayed in the panel. Optional. Any string value or undefined.
  - **Waffle Chart (library)**
    - `type` (enum)
      Values: `waffle`
    - `data_source` (union oneOf)
      - **Data view reference** (`type: data_view_reference`)
        - `type` (enum)
          Values: `data_view_reference`
        - `ref_id` (string)
          The id of the Kibana data view to use as the data source. Example: "my-data-view".
      - **Data view inline spec** (`type: data_view_spec`)
        - `type` (enum)
          Values: `data_view_spec`
        - `allow_hidden_indices` (boolean)
          When `true`, allows the data view to match hidden indices.
        - `field_filters` (string[] · max items: 10000)
          Field filters can be used to exclude one or more fields when fetching a document. They may contain wildcards, such as `user*` which filters fields starting with 'user'.
        - `field_settings` (map string to anyOf)
        - `index_pattern` (string · min length: 1)
          The index pattern (Elasticsearch index expression) to use as the data source. Example: "my-index-*".
        - `name` (string · min length: 1 · max length: 256)
          The name of the data view. Example: "Sample data view".
        - `time_field` (string)
          The name of the time field in the index. Used for time-based filtering. Example: "@timestamp".
    - `description` (string)
      The description of the chart. Optional. Any string value or undefined.
    - `filters` (union[] · max items: 100)
      Filters applied to the panel
    - `group_by` (union anyOf[] · min items: 1 · max items: 100)
      Array of breakdown dimensions (minimum 1)
      - `collapse_by` (union anyOf)
        Aggregation function used to collapse a breakdown dimension into a single value.
        Values: `avg`, `sum`, `max`, `min`
      - `color` (union anyOf · default: {
  "mapping": [],
  "mode": "categorical",
  "palette": "default"
})
        Color mapping for dimension values, either categorical (for specific values) or as a gradient.
        Same options as `color` in `Date Histogram Operation`
    - `ignore_global_filters` (boolean · default: false)
      When `true`, ignores global filters when fetching data for this layer. Defaults to `false`.
    - `legend` (object)
      Legend configuration for waffle chart
      - `position` (enum · default: right)
        Legend Position.
        Values: `top`, `bottom`, `left`, `right`
      - `size` (union anyOf)
        Legend size.
        Values: `auto`, `s`, `m`, `l`, `xl`
      - `truncate_after_lines` (number · min: 1 · max: 10 · default: 1)
        Number of lines before legend items are truncated.
      - `values` (enum[] · min items: 1 · max items: 1)
        Values: `absolute`
      - `visibility` (enum)
        Legend visibility.
        Values: `auto`, `visible`, `hidden`
    - `metrics` (union anyOf[] · min items: 1 · max items: 100)
      Array of metric configurations (minimum 1)
      - `color` (union anyOf · default: {
  "type": "auto"
})
        - **Static Color**
          Fixed color for all values in the dimension.
          - `type` (enum)
            Values: `static`
          - `color` (string)
            The static color to be used for all values.
        - **Auto Color**
          Coloring determined at runtime based on chart defaults
          - `type` (enum)
            Values: `auto`
    - `query` (object)
      A KQL or Lucene query that filters panel data. Applied on top of any dashboard-level filters.
      - `expression` (string)
        A query expression in KQL or Lucene syntax
      - `language` (enum · default: kql)
        Query language: `kql` (Kibana Query Language) or `lucene`. Defaults to `kql`.
        Values: `kql`, `lucene`
    - `sampling` (number · min: 0 · max: 1 · default: 1)
      Sampling factor between 0 (no sampling) and 1 (full sampling).
    - `styling` (object)
      Visual chart styling options
      - `values` (object)
        Configure the visibility and the format of the values rendered on each chart partition section
        - `mode` (enum)
          How to format values when visible.
          Values: `absolute`, `percentage`
        - `percent_decimals` (number · min: 0 · max: 10 · default: 2)
          Decimal places for percentage display (0-10)
        - `visible` (boolean)
          Show metric values on the chart
    - `tags` (string[] · max items: 1000 · default: [])
      Tag IDs to associate with this visualization.
    - `title` (string)
      The title of the chart displayed in the panel. Optional. Any string value or undefined.
- `id` (string)
- `meta` (object)
  - `created_at` (string)
    Timestamp when the object was created (ISO 8601).
  - `created_by` (string)
    User profile ID of the user who created the object.
  - `managed` (boolean)
    When `true`, the object is managed by Kibana and cannot be edited by users.
  - `owner` (string)
    Identifier of the plugin or team that owns this object.
  - `updated_at` (string)
    Timestamp when the object was last updated (ISO 8601).
  - `updated_by` (string)
    User profile ID of the user who last updated the object.
  - `version` (string)
    Internal version identifier for optimistic concurrency control.
#### `201`

Created

`application/json`

- `data` (union anyOf)
  Same options as `data`
- `id` (string)
- `meta` (object)
  - `created_at` (string)
    Timestamp when the object was created (ISO 8601).
  - `created_by` (string)
    User profile ID of the user who created the object.
  - `managed` (boolean)
    When `true`, the object is managed by Kibana and cannot be edited by users.
  - `owner` (string)
    Identifier of the plugin or team that owns this object.
  - `updated_at` (string)
    Timestamp when the object was last updated (ISO 8601).
  - `updated_by` (string)
    User profile ID of the user who last updated the object.
  - `version` (string)
    Internal version identifier for optimistic concurrency control.
#### `400`

Malformed request

#### `401`

Unauthorized

#### `403`

Forbidden

#### `500`

Internal Server Error

## Code examples

#### Console

```console
PUT kbn:/api/visualizations/1e4f0a30-b3c5-11ef-bd7a-2b6b1a8c0f3d
{
  "type": "metric",
  "title": "Total requests (updated)",
  "data_source": {
    "type": "data_view_spec",
    "index_pattern": "kibana_sample_data_logs",
    "time_field": "timestamp"
  },
  "metrics": [
    {
      "type": "primary",
      "operation": "count"
    }
  ]
}
```

#### curl

```curl
curl -X PUT "${KIBANA_URL}/api/visualizations/1e4f0a30-b3c5-11ef-bd7a-2b6b1a8c0f3d" \
  -H "Authorization: ApiKey ${API_KEY}" \
  -H "kbn-xsrf: true" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "metric",
  "title": "Total requests (updated)",
  "data_source": {
    "type": "data_view_spec",
    "index_pattern": "kibana_sample_data_logs",
    "time_field": "timestamp"
  },
  "metrics": [
    {
      "type": "primary",
      "operation": "count"
    }
  ]
}'
```

## Response examples

#### Update visualization response

The complete updated visualization state after a full replacement. PUT replaces the entire chart configuration - fields omitted from the request are reset to their defaults. `meta.created_at` reflects the update time rather than the original creation time.

```json
{
  "data": {
    "data_source": {
      "index_pattern": "kibana_sample_data_logs",
      "time_field": "timestamp",
      "type": "data_view_spec"
    },
    "ignore_global_filters": false,
    "metrics": [
      {
        "empty_as_null": false,
        "operation": "count",
        "type": "primary"
      }
    ],
    "sampling": 1,
    "styling": {
      "primary": {
        "labels": {
          "alignment": "left"
        },
        "position": "bottom",
        "value": {
          "alignment": "right",
          "sizing": "auto"
        }
      }
    },
    "tags": [],
    "title": "Total requests (updated)",
    "type": "metric"
  },
  "id": "1e4f0a30-b3c5-11ef-bd7a-2b6b1a8c0f3d",
  "meta": {
    "created_at": "2026-04-13T11:00:00.000Z",
    "managed": false,
    "updated_at": "2026-04-13T11:00:00.000Z",
    "version": "WzYxLDFd"
  }
}
```

#### Update visualization response

The created visualization state. Server-populated defaults are included in the response.

```json
{
  "data": {
    "data_source": {
      "index_pattern": "kibana_sample_data_logs",
      "time_field": "timestamp",
      "type": "data_view_spec"
    },
    "ignore_global_filters": false,
    "metrics": [
      {
        "empty_as_null": false,
        "operation": "count",
        "type": "primary"
      }
    ],
    "sampling": 1,
    "styling": {
      "primary": {
        "labels": {
          "alignment": "left"
        },
        "position": "bottom",
        "value": {
          "alignment": "right",
          "sizing": "auto"
        }
      }
    },
    "tags": [],
    "title": "Total requests (updated)",
    "type": "metric"
  },
  "id": "1e4f0a30-b3c5-11ef-bd7a-2b6b1a8c0f3d",
  "meta": {
    "created_at": "2026-04-13T11:00:00.000Z",
    "managed": false,
    "updated_at": "2026-04-13T11:00:00.000Z",
    "version": "WzYxLDFd"
  }
}
```

