Panels¶
Panel types and compilation logic.
Base Panel Configuration¶
BasePanel
pydantic-model
¶
Base model for all panel types defined.
All specific panel types (e.g., Markdown, Search, Lens) inherit from this base class to include common configuration fields.
Attributes:
| Name | Type | Description |
|---|---|---|
id |
str | None
|
A unique identifier for the panel. If not provided, one may be generated during compilation. |
title |
str
|
The title displayed on the panel header. Can be an empty string. |
hide_title |
bool | None
|
If |
description |
str | None
|
A brief description of the panel's content or purpose. Defaults to an empty string. |
size |
Size
|
Defines the panel's size on the dashboard grid. |
position |
Position
|
Defines the panel's position on the dashboard grid. If not specified, position will be auto-calculated. |
drilldowns |
list[DrilldownTypes] | None
|
Optional list of drilldowns to attach to this panel. |
Show JSON schema:
{
"$defs": {
"DashboardDrilldown": {
"additionalProperties": false,
"description": "Dashboard-to-dashboard drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"dashboard": {
"description": "Target dashboard ID or friendly identifier.",
"title": "Dashboard",
"type": "string"
},
"with_filters": {
"default": true,
"description": "Whether to carry over current filters to the target dashboard. Defaults to True.",
"title": "With Filters",
"type": "boolean"
},
"with_time": {
"default": true,
"description": "Whether to carry over current time range to the target dashboard. Defaults to True.",
"title": "With Time",
"type": "boolean"
}
},
"required": [
"name",
"dashboard"
],
"title": "DashboardDrilldown",
"type": "object"
},
"DrilldownTrigger": {
"description": "User-facing drilldown trigger types.",
"enum": [
"click",
"filter",
"range"
],
"title": "DrilldownTrigger",
"type": "string"
},
"DrilldownTypes": {
"anyOf": [
{
"$ref": "#/$defs/DashboardDrilldown"
},
{
"$ref": "#/$defs/UrlDrilldown"
}
]
},
"Position": {
"additionalProperties": false,
"description": "Panel position configuration.\n\nDetermines the x/y coordinates of a panel on the dashboard grid.\nIf not specified, the panel will be auto-positioned.",
"properties": {
"x": {
"anyOf": [
{
"maximum": 48,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The horizontal starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "X"
},
"y": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The vertical starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "Y"
}
},
"title": "Position",
"type": "object"
},
"Size": {
"additionalProperties": false,
"description": "Panel size configuration.\n\nDetermines the width and height of a panel on the dashboard grid.\nWidth accepts semantic values ('whole', 'half', etc.) or integers.",
"properties": {
"w": {
"anyOf": [
{
"type": "integer"
},
{
"enum": [
"whole",
"half",
"third",
"quarter",
"sixth",
"eighth"
],
"type": "string"
}
],
"default": 12,
"description": "The width of the panel in grid units.\n\nDefaults to 12 (quarter width). Accepts semantic values ('whole', 'half', 'third', 'quarter', 'sixth', 'eighth') or integers (1-48).",
"title": "W"
},
"h": {
"default": 8,
"description": "The height of the panel in grid units. Defaults to 8.",
"exclusiveMinimum": 0,
"title": "H",
"type": "integer"
}
},
"title": "Size",
"type": "object"
},
"UrlDrilldown": {
"additionalProperties": false,
"description": "URL drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"url": {
"description": "Target URL template. Can include Kibana template variables.",
"title": "Url",
"type": "string"
},
"new_tab": {
"default": false,
"description": "Whether to open the URL in a new tab. Defaults to False.",
"title": "New Tab",
"type": "boolean"
},
"encode_url": {
"default": true,
"description": "Whether to URL-encode the template variables. Defaults to True.",
"title": "Encode Url",
"type": "boolean"
}
},
"required": [
"name",
"url"
],
"title": "UrlDrilldown",
"type": "object"
}
},
"additionalProperties": false,
"description": "Base model for all panel types defined.\n\nAll specific panel types (e.g., Markdown, Search, Lens) inherit from this base class\nto include common configuration fields.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier for the panel. If not provided, one may be generated during compilation.",
"title": "Id"
},
"title": {
"default": "",
"description": "The title displayed on the panel header. Can be an empty string.",
"title": "Title",
"type": "string"
},
"hide_title": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, the panel title will be hidden. Defaults to `false` (title is shown).",
"title": "Hide Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the panel's content or purpose. Defaults to an empty string.",
"title": "Description"
},
"size": {
"$ref": "#/$defs/Size",
"description": "Defines the panel's size on the dashboard grid."
},
"position": {
"$ref": "#/$defs/Position",
"description": "Defines the panel's position on the dashboard grid. If not specified, position will be auto-calculated."
},
"drilldowns": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/DrilldownTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional list of drilldowns to attach to this panel.",
"title": "Drilldowns"
}
},
"title": "BasePanel",
"type": "object"
}
Source code in kb_dashboard_core/panels/base.py
Markdown Panels¶
Display rich text content using markdown syntax.
API Reference¶
MarkdownPanel
pydantic-model
¶
Represents a Markdown panel configuration.
Markdown panels are used to display rich text content using Markdown syntax.
Examples:
Minimal Markdown panel:
dashboards:
- name: "Dashboard with Markdown"
panels:
- title: "Welcome Note"
size: { w: 48, h: 3 }
markdown:
content: |
## Welcome to the Dashboard!
This panel provides an overview of the key metrics and reports available.
- Item 1
- Item 2
Markdown panel with custom font size:
dashboards:
- name: "Informational Dashboard"
panels:
- title: "Important Instructions"
size: { w: 32, h: 5 }
markdown:
content: |
# Setup Guide
Please follow the [official documentation](https://strawgate.github.io/kb-yaml-to-lens/) for setup instructions.
Key steps:
1. **Download** the installer.
2. **Configure** the `config.yaml` file.
3. **Run** the start script.
font_size: 14
Attributes:
| Name | Type | Description |
|---|---|---|
markdown |
MarkdownPanelConfig
|
Markdown panel configuration. |
Show JSON schema:
{
"$defs": {
"DashboardDrilldown": {
"additionalProperties": false,
"description": "Dashboard-to-dashboard drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"dashboard": {
"description": "Target dashboard ID or friendly identifier.",
"title": "Dashboard",
"type": "string"
},
"with_filters": {
"default": true,
"description": "Whether to carry over current filters to the target dashboard. Defaults to True.",
"title": "With Filters",
"type": "boolean"
},
"with_time": {
"default": true,
"description": "Whether to carry over current time range to the target dashboard. Defaults to True.",
"title": "With Time",
"type": "boolean"
}
},
"required": [
"name",
"dashboard"
],
"title": "DashboardDrilldown",
"type": "object"
},
"DrilldownTrigger": {
"description": "User-facing drilldown trigger types.",
"enum": [
"click",
"filter",
"range"
],
"title": "DrilldownTrigger",
"type": "string"
},
"DrilldownTypes": {
"anyOf": [
{
"$ref": "#/$defs/DashboardDrilldown"
},
{
"$ref": "#/$defs/UrlDrilldown"
}
]
},
"MarkdownPanelConfig": {
"additionalProperties": false,
"description": "Configuration specific to Markdown panels.",
"properties": {
"content": {
"description": "The Markdown content to be displayed in the panel.",
"title": "Content",
"type": "string"
},
"font_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The font size for the Markdown content, in pixels. Defaults to 12 if not set.",
"title": "Font Size"
},
"links_in_new_tab": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If true, links in the Markdown content will open in a new tab. Defaults to false if not set.",
"title": "Links In New Tab"
}
},
"required": [
"content"
],
"title": "MarkdownPanelConfig",
"type": "object"
},
"Position": {
"additionalProperties": false,
"description": "Panel position configuration.\n\nDetermines the x/y coordinates of a panel on the dashboard grid.\nIf not specified, the panel will be auto-positioned.",
"properties": {
"x": {
"anyOf": [
{
"maximum": 48,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The horizontal starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "X"
},
"y": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The vertical starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "Y"
}
},
"title": "Position",
"type": "object"
},
"Size": {
"additionalProperties": false,
"description": "Panel size configuration.\n\nDetermines the width and height of a panel on the dashboard grid.\nWidth accepts semantic values ('whole', 'half', etc.) or integers.",
"properties": {
"w": {
"anyOf": [
{
"type": "integer"
},
{
"enum": [
"whole",
"half",
"third",
"quarter",
"sixth",
"eighth"
],
"type": "string"
}
],
"default": 12,
"description": "The width of the panel in grid units.\n\nDefaults to 12 (quarter width). Accepts semantic values ('whole', 'half', 'third', 'quarter', 'sixth', 'eighth') or integers (1-48).",
"title": "W"
},
"h": {
"default": 8,
"description": "The height of the panel in grid units. Defaults to 8.",
"exclusiveMinimum": 0,
"title": "H",
"type": "integer"
}
},
"title": "Size",
"type": "object"
},
"UrlDrilldown": {
"additionalProperties": false,
"description": "URL drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"url": {
"description": "Target URL template. Can include Kibana template variables.",
"title": "Url",
"type": "string"
},
"new_tab": {
"default": false,
"description": "Whether to open the URL in a new tab. Defaults to False.",
"title": "New Tab",
"type": "boolean"
},
"encode_url": {
"default": true,
"description": "Whether to URL-encode the template variables. Defaults to True.",
"title": "Encode Url",
"type": "boolean"
}
},
"required": [
"name",
"url"
],
"title": "UrlDrilldown",
"type": "object"
}
},
"additionalProperties": false,
"description": "Represents a Markdown panel configuration.\n\nMarkdown panels are used to display rich text content using Markdown syntax.\n\nExamples:\n Minimal Markdown panel:\n ```yaml\n dashboards:\n - name: \"Dashboard with Markdown\"\n panels:\n - title: \"Welcome Note\"\n size: { w: 48, h: 3 }\n markdown:\n content: |\n ## Welcome to the Dashboard!\n This panel provides an overview of the key metrics and reports available.\n\n - Item 1\n - Item 2\n ```\n\n Markdown panel with custom font size:\n ```yaml\n dashboards:\n - name: \"Informational Dashboard\"\n panels:\n - title: \"Important Instructions\"\n size: { w: 32, h: 5 }\n markdown:\n content: |\n # Setup Guide\n\n Please follow the [official documentation](https://strawgate.github.io/kb-yaml-to-lens/) for setup instructions.\n\n Key steps:\n 1. **Download** the installer.\n 2. **Configure** the `config.yaml` file.\n 3. **Run** the start script.\n font_size: 14\n ```",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier for the panel. If not provided, one may be generated during compilation.",
"title": "Id"
},
"title": {
"default": "",
"description": "The title displayed on the panel header. Can be an empty string.",
"title": "Title",
"type": "string"
},
"hide_title": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, the panel title will be hidden. Defaults to `false` (title is shown).",
"title": "Hide Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the panel's content or purpose. Defaults to an empty string.",
"title": "Description"
},
"size": {
"$ref": "#/$defs/Size",
"description": "Defines the panel's size on the dashboard grid."
},
"position": {
"$ref": "#/$defs/Position",
"description": "Defines the panel's position on the dashboard grid. If not specified, position will be auto-calculated."
},
"drilldowns": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/DrilldownTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional list of drilldowns to attach to this panel.",
"title": "Drilldowns"
},
"markdown": {
"$ref": "#/$defs/MarkdownPanelConfig",
"description": "Markdown panel configuration."
}
},
"required": [
"markdown"
],
"title": "MarkdownPanel",
"type": "object"
}
Source code in kb_dashboard_core/panels/markdown/config.py
For configuration details and examples, see the Markdown Panel Configuration.
Links Panels¶
Display collections of clickable links.
API Reference¶
LinksPanel
pydantic-model
¶
Represents a Links panel configuration.
Links panels are used to display a collection of links to other dashboards, saved objects, or external URLs.
Examples:
Linking to another Dashboard:
dashboards:
- name: "Main Overview"
panels:
- title: "Navigate to User Details"
size: { w: 24, h: 2 }
links:
items:
- label: "View User Activity Dashboard"
dashboard: "user-activity-dashboard-id"
Linking to an External URL:
dashboards:
- name: "Main Overview"
panels:
- title: "External Resources"
size: { w: 24, h: 2 }
links:
items:
- label: "Project Documentation"
url: "https://docs.example.com/project-alpha"
new_tab: true
Complex configuration with multiple link types:
dashboards:
- name: "Operations Hub"
panels:
- title: "Quick Access"
size: { w: 48, h: 3 }
links:
layout: "vertical"
items:
- label: "Service Health Dashboard"
dashboard: "service-health-monitor-v2"
- label: "Runbook Wiki"
url: "https://internal.wiki/ops/runbooks"
new_tab: true
Attributes:
| Name | Type | Description |
|---|---|---|
links_config |
LinksPanelConfig
|
Links panel configuration. |
Show JSON schema:
{
"$defs": {
"DashboardDrilldown": {
"additionalProperties": false,
"description": "Dashboard-to-dashboard drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"dashboard": {
"description": "Target dashboard ID or friendly identifier.",
"title": "Dashboard",
"type": "string"
},
"with_filters": {
"default": true,
"description": "Whether to carry over current filters to the target dashboard. Defaults to True.",
"title": "With Filters",
"type": "boolean"
},
"with_time": {
"default": true,
"description": "Whether to carry over current time range to the target dashboard. Defaults to True.",
"title": "With Time",
"type": "boolean"
}
},
"required": [
"name",
"dashboard"
],
"title": "DashboardDrilldown",
"type": "object"
},
"DashboardLink": {
"additionalProperties": false,
"description": "Represents a link to another dashboard within a Links panel.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional unique identifier for the link. Not normally required.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The text that will be displayed for the link. Kibana defaults to showing the URL if not set.",
"title": "Label"
},
"dashboard": {
"description": "The ID of the dashboard that the link points to.",
"title": "Dashboard",
"type": "string"
},
"new_tab": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, links will open in a new browser tab. Kibana defaults to `false` if not set.",
"title": "New Tab"
},
"with_time": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, the links will inherit the time range from the dashboard. Kibana defaults to `True` if not set.",
"title": "With Time"
},
"with_filters": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, the links will inherit the filters from the dashboard. Kibana defaults to `True` if not set.",
"title": "With Filters"
}
},
"required": [
"dashboard"
],
"title": "DashboardLink",
"type": "object"
},
"DrilldownTrigger": {
"description": "User-facing drilldown trigger types.",
"enum": [
"click",
"filter",
"range"
],
"title": "DrilldownTrigger",
"type": "string"
},
"DrilldownTypes": {
"anyOf": [
{
"$ref": "#/$defs/DashboardDrilldown"
},
{
"$ref": "#/$defs/UrlDrilldown"
}
]
},
"LinkTypes": {
"oneOf": [
{
"$ref": "#/$defs/DashboardLink"
},
{
"$ref": "#/$defs/UrlLink"
}
]
},
"LinksPanelConfig": {
"additionalProperties": false,
"description": "Configuration specific to Links panels.",
"properties": {
"layout": {
"anyOf": [
{
"enum": [
"horizontal",
"vertical"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The layout of the links in the panel, either 'horizontal' or 'vertical'. Kibana defaults to 'horizontal' if not set.",
"title": "Layout"
},
"items": {
"description": "A list of link objects to be displayed in the panel.",
"items": {
"$ref": "#/$defs/LinkTypes"
},
"title": "Items",
"type": "array"
}
},
"title": "LinksPanelConfig",
"type": "object"
},
"Position": {
"additionalProperties": false,
"description": "Panel position configuration.\n\nDetermines the x/y coordinates of a panel on the dashboard grid.\nIf not specified, the panel will be auto-positioned.",
"properties": {
"x": {
"anyOf": [
{
"maximum": 48,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The horizontal starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "X"
},
"y": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The vertical starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "Y"
}
},
"title": "Position",
"type": "object"
},
"Size": {
"additionalProperties": false,
"description": "Panel size configuration.\n\nDetermines the width and height of a panel on the dashboard grid.\nWidth accepts semantic values ('whole', 'half', etc.) or integers.",
"properties": {
"w": {
"anyOf": [
{
"type": "integer"
},
{
"enum": [
"whole",
"half",
"third",
"quarter",
"sixth",
"eighth"
],
"type": "string"
}
],
"default": 12,
"description": "The width of the panel in grid units.\n\nDefaults to 12 (quarter width). Accepts semantic values ('whole', 'half', 'third', 'quarter', 'sixth', 'eighth') or integers (1-48).",
"title": "W"
},
"h": {
"default": 8,
"description": "The height of the panel in grid units. Defaults to 8.",
"exclusiveMinimum": 0,
"title": "H",
"type": "integer"
}
},
"title": "Size",
"type": "object"
},
"UrlDrilldown": {
"additionalProperties": false,
"description": "URL drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"url": {
"description": "Target URL template. Can include Kibana template variables.",
"title": "Url",
"type": "string"
},
"new_tab": {
"default": false,
"description": "Whether to open the URL in a new tab. Defaults to False.",
"title": "New Tab",
"type": "boolean"
},
"encode_url": {
"default": true,
"description": "Whether to URL-encode the template variables. Defaults to True.",
"title": "Encode Url",
"type": "boolean"
}
},
"required": [
"name",
"url"
],
"title": "UrlDrilldown",
"type": "object"
},
"UrlLink": {
"additionalProperties": false,
"description": "Represents a link to an external URL within a Links panel.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional unique identifier for the link. Not normally required.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The text that will be displayed for the link. Kibana defaults to showing the URL if not set.",
"title": "Label"
},
"url": {
"description": "The Web URL that the link points to.",
"title": "Url",
"type": "string"
},
"encode": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, the URL will be URL-encoded. Kibana defaults to `True` if not set.",
"title": "Encode"
},
"new_tab": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, the link will open in a new browser tab. Kibana defaults to `false` if not set.",
"title": "New Tab"
}
},
"required": [
"url"
],
"title": "UrlLink",
"type": "object"
}
},
"additionalProperties": false,
"description": "Represents a Links panel configuration.\n\nLinks panels are used to display a collection of links to other dashboards,\nsaved objects, or external URLs.\n\nExamples:\n Linking to another Dashboard:\n ```yaml\n dashboards:\n - name: \"Main Overview\"\n panels:\n - title: \"Navigate to User Details\"\n size: { w: 24, h: 2 }\n links:\n items:\n - label: \"View User Activity Dashboard\"\n dashboard: \"user-activity-dashboard-id\"\n ```\n\n Linking to an External URL:\n ```yaml\n dashboards:\n - name: \"Main Overview\"\n panels:\n - title: \"External Resources\"\n size: { w: 24, h: 2 }\n links:\n items:\n - label: \"Project Documentation\"\n url: \"https://docs.example.com/project-alpha\"\n new_tab: true\n ```\n\n Complex configuration with multiple link types:\n ```yaml\n dashboards:\n - name: \"Operations Hub\"\n panels:\n - title: \"Quick Access\"\n size: { w: 48, h: 3 }\n links:\n layout: \"vertical\"\n items:\n - label: \"Service Health Dashboard\"\n dashboard: \"service-health-monitor-v2\"\n - label: \"Runbook Wiki\"\n url: \"https://internal.wiki/ops/runbooks\"\n new_tab: true\n ```",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier for the panel. If not provided, one may be generated during compilation.",
"title": "Id"
},
"title": {
"default": "",
"description": "The title displayed on the panel header. Can be an empty string.",
"title": "Title",
"type": "string"
},
"hide_title": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, the panel title will be hidden. Defaults to `false` (title is shown).",
"title": "Hide Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the panel's content or purpose. Defaults to an empty string.",
"title": "Description"
},
"size": {
"$ref": "#/$defs/Size",
"description": "Defines the panel's size on the dashboard grid."
},
"position": {
"$ref": "#/$defs/Position",
"description": "Defines the panel's position on the dashboard grid. If not specified, position will be auto-calculated."
},
"drilldowns": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/DrilldownTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional list of drilldowns to attach to this panel.",
"title": "Drilldowns"
},
"links": {
"$ref": "#/$defs/LinksPanelConfig",
"description": "Links panel configuration."
}
},
"required": [
"links"
],
"title": "LinksPanel",
"type": "object"
}
Source code in kb_dashboard_core/panels/links/config.py
For configuration details and examples, see the Links Panel Configuration.
Image Panels¶
Embed images in your dashboard.
API Reference¶
ImagePanel
pydantic-model
¶
Represents an Image panel configuration.
Image panels are used to display images.
Examples:
Minimal image panel:
dashboards:
- name: "Branded Dashboard"
panels:
- title: "Company Logo"
size: { w: 16, h: 3 }
image:
from_url: "https://example.com/path/to/your/logo.png"
Image panel with custom fit and background:
dashboards:
- name: "Dashboard with Diagram"
panels:
- title: "System Architecture Diagram"
size: { w: 48, h: 6 }
image:
from_url: "https://example.com/path/to/architecture.svg"
fit: "contain"
background_color: "#f0f0f0"
Attributes:
| Name | Type | Description |
|---|---|---|
image |
ImagePanelConfig
|
Image panel configuration. |
Show JSON schema:
{
"$defs": {
"DashboardDrilldown": {
"additionalProperties": false,
"description": "Dashboard-to-dashboard drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"dashboard": {
"description": "Target dashboard ID or friendly identifier.",
"title": "Dashboard",
"type": "string"
},
"with_filters": {
"default": true,
"description": "Whether to carry over current filters to the target dashboard. Defaults to True.",
"title": "With Filters",
"type": "boolean"
},
"with_time": {
"default": true,
"description": "Whether to carry over current time range to the target dashboard. Defaults to True.",
"title": "With Time",
"type": "boolean"
}
},
"required": [
"name",
"dashboard"
],
"title": "DashboardDrilldown",
"type": "object"
},
"DrilldownTrigger": {
"description": "User-facing drilldown trigger types.",
"enum": [
"click",
"filter",
"range"
],
"title": "DrilldownTrigger",
"type": "string"
},
"DrilldownTypes": {
"anyOf": [
{
"$ref": "#/$defs/DashboardDrilldown"
},
{
"$ref": "#/$defs/UrlDrilldown"
}
]
},
"ImagePanelConfig": {
"additionalProperties": false,
"description": "Configuration specific to Image panels.",
"properties": {
"from_url": {
"description": "The URL of the image to be displayed in the panel. This is a required field.",
"title": "From Url",
"type": "string"
},
"fit": {
"anyOf": [
{
"enum": [
"contain",
"cover",
"fill",
"none"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls how the image is sized within the panel. Defaults to \"contain\".\n\n- **contain**: Scales to fit within the panel while maintaining aspect ratio. Entire image visible.\n- **cover**: Scales to fill the panel while maintaining aspect ratio. May be cropped.\n- **fill**: Stretches or compresses to fill the panel, potentially altering aspect ratio.\n- **none**: Displays at original size. Cropped if larger, unchanged if smaller than panel.",
"title": "Fit"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Alternative text for the image, used for accessibility. Defaults to an empty string if not set.",
"title": "Description"
},
"background_color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Background color for the image panel. Defaults to an empty string if not set.",
"title": "Background Color"
}
},
"required": [
"from_url"
],
"title": "ImagePanelConfig",
"type": "object"
},
"Position": {
"additionalProperties": false,
"description": "Panel position configuration.\n\nDetermines the x/y coordinates of a panel on the dashboard grid.\nIf not specified, the panel will be auto-positioned.",
"properties": {
"x": {
"anyOf": [
{
"maximum": 48,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The horizontal starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "X"
},
"y": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The vertical starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "Y"
}
},
"title": "Position",
"type": "object"
},
"Size": {
"additionalProperties": false,
"description": "Panel size configuration.\n\nDetermines the width and height of a panel on the dashboard grid.\nWidth accepts semantic values ('whole', 'half', etc.) or integers.",
"properties": {
"w": {
"anyOf": [
{
"type": "integer"
},
{
"enum": [
"whole",
"half",
"third",
"quarter",
"sixth",
"eighth"
],
"type": "string"
}
],
"default": 12,
"description": "The width of the panel in grid units.\n\nDefaults to 12 (quarter width). Accepts semantic values ('whole', 'half', 'third', 'quarter', 'sixth', 'eighth') or integers (1-48).",
"title": "W"
},
"h": {
"default": 8,
"description": "The height of the panel in grid units. Defaults to 8.",
"exclusiveMinimum": 0,
"title": "H",
"type": "integer"
}
},
"title": "Size",
"type": "object"
},
"UrlDrilldown": {
"additionalProperties": false,
"description": "URL drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"url": {
"description": "Target URL template. Can include Kibana template variables.",
"title": "Url",
"type": "string"
},
"new_tab": {
"default": false,
"description": "Whether to open the URL in a new tab. Defaults to False.",
"title": "New Tab",
"type": "boolean"
},
"encode_url": {
"default": true,
"description": "Whether to URL-encode the template variables. Defaults to True.",
"title": "Encode Url",
"type": "boolean"
}
},
"required": [
"name",
"url"
],
"title": "UrlDrilldown",
"type": "object"
}
},
"additionalProperties": false,
"description": "Represents an Image panel configuration.\n\nImage panels are used to display images.\n\nExamples:\n Minimal image panel:\n ```yaml\n dashboards:\n - name: \"Branded Dashboard\"\n panels:\n - title: \"Company Logo\"\n size: { w: 16, h: 3 }\n image:\n from_url: \"https://example.com/path/to/your/logo.png\"\n ```\n\n Image panel with custom fit and background:\n ```yaml\n dashboards:\n - name: \"Dashboard with Diagram\"\n panels:\n - title: \"System Architecture Diagram\"\n size: { w: 48, h: 6 }\n image:\n from_url: \"https://example.com/path/to/architecture.svg\"\n fit: \"contain\"\n background_color: \"#f0f0f0\"\n ```",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier for the panel. If not provided, one may be generated during compilation.",
"title": "Id"
},
"title": {
"default": "",
"description": "The title displayed on the panel header. Can be an empty string.",
"title": "Title",
"type": "string"
},
"hide_title": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, the panel title will be hidden. Defaults to `false` (title is shown).",
"title": "Hide Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the panel's content or purpose. Defaults to an empty string.",
"title": "Description"
},
"size": {
"$ref": "#/$defs/Size",
"description": "Defines the panel's size on the dashboard grid."
},
"position": {
"$ref": "#/$defs/Position",
"description": "Defines the panel's position on the dashboard grid. If not specified, position will be auto-calculated."
},
"drilldowns": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/DrilldownTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional list of drilldowns to attach to this panel.",
"title": "Drilldowns"
},
"image": {
"$ref": "#/$defs/ImagePanelConfig",
"description": "Image panel configuration."
}
},
"required": [
"image"
],
"title": "ImagePanel",
"type": "object"
}
Source code in kb_dashboard_core/panels/images/config.py
For configuration details and examples, see the Image Panel Configuration.
Search Panels¶
Display search results from Elasticsearch.
API Reference¶
SearchPanel
pydantic-model
¶
Represents a Search panel configuration.
Search panels are used to display the results of a saved Kibana search.
Examples:
Minimal search panel:
dashboards:
- name: "Log Monitoring Dashboard"
panels:
- title: "All System Logs"
size: { w: 48, h: 10 }
search:
saved_search_id: "a1b2c3d4-e5f6-7890-1234-567890abcdef"
Search panel with hidden title:
dashboards:
- name: "Security Incidents Overview"
panels:
- hide_title: true
description: "Critical security alerts from the last 24 hours"
size: { w: 48, h: 8 }
search:
saved_search_id: "critical-security-alerts-saved-search"
Attributes:
| Name | Type | Description |
|---|---|---|
search |
SearchPanelConfig
|
Search panel configuration. |
Show JSON schema:
{
"$defs": {
"DashboardDrilldown": {
"additionalProperties": false,
"description": "Dashboard-to-dashboard drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"dashboard": {
"description": "Target dashboard ID or friendly identifier.",
"title": "Dashboard",
"type": "string"
},
"with_filters": {
"default": true,
"description": "Whether to carry over current filters to the target dashboard. Defaults to True.",
"title": "With Filters",
"type": "boolean"
},
"with_time": {
"default": true,
"description": "Whether to carry over current time range to the target dashboard. Defaults to True.",
"title": "With Time",
"type": "boolean"
}
},
"required": [
"name",
"dashboard"
],
"title": "DashboardDrilldown",
"type": "object"
},
"DrilldownTrigger": {
"description": "User-facing drilldown trigger types.",
"enum": [
"click",
"filter",
"range"
],
"title": "DrilldownTrigger",
"type": "string"
},
"DrilldownTypes": {
"anyOf": [
{
"$ref": "#/$defs/DashboardDrilldown"
},
{
"$ref": "#/$defs/UrlDrilldown"
}
]
},
"Position": {
"additionalProperties": false,
"description": "Panel position configuration.\n\nDetermines the x/y coordinates of a panel on the dashboard grid.\nIf not specified, the panel will be auto-positioned.",
"properties": {
"x": {
"anyOf": [
{
"maximum": 48,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The horizontal starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "X"
},
"y": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The vertical starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "Y"
}
},
"title": "Position",
"type": "object"
},
"SearchPanelConfig": {
"additionalProperties": false,
"description": "Configuration specific to Search panels.",
"properties": {
"saved_search_id": {
"description": "The ID of the saved Kibana search object to display in the panel.",
"title": "Saved Search Id",
"type": "string"
}
},
"required": [
"saved_search_id"
],
"title": "SearchPanelConfig",
"type": "object"
},
"Size": {
"additionalProperties": false,
"description": "Panel size configuration.\n\nDetermines the width and height of a panel on the dashboard grid.\nWidth accepts semantic values ('whole', 'half', etc.) or integers.",
"properties": {
"w": {
"anyOf": [
{
"type": "integer"
},
{
"enum": [
"whole",
"half",
"third",
"quarter",
"sixth",
"eighth"
],
"type": "string"
}
],
"default": 12,
"description": "The width of the panel in grid units.\n\nDefaults to 12 (quarter width). Accepts semantic values ('whole', 'half', 'third', 'quarter', 'sixth', 'eighth') or integers (1-48).",
"title": "W"
},
"h": {
"default": 8,
"description": "The height of the panel in grid units. Defaults to 8.",
"exclusiveMinimum": 0,
"title": "H",
"type": "integer"
}
},
"title": "Size",
"type": "object"
},
"UrlDrilldown": {
"additionalProperties": false,
"description": "URL drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"url": {
"description": "Target URL template. Can include Kibana template variables.",
"title": "Url",
"type": "string"
},
"new_tab": {
"default": false,
"description": "Whether to open the URL in a new tab. Defaults to False.",
"title": "New Tab",
"type": "boolean"
},
"encode_url": {
"default": true,
"description": "Whether to URL-encode the template variables. Defaults to True.",
"title": "Encode Url",
"type": "boolean"
}
},
"required": [
"name",
"url"
],
"title": "UrlDrilldown",
"type": "object"
}
},
"additionalProperties": false,
"description": "Represents a Search panel configuration.\n\nSearch panels are used to display the results of a saved Kibana search.\n\nExamples:\n Minimal search panel:\n ```yaml\n dashboards:\n - name: \"Log Monitoring Dashboard\"\n panels:\n - title: \"All System Logs\"\n size: { w: 48, h: 10 }\n search:\n saved_search_id: \"a1b2c3d4-e5f6-7890-1234-567890abcdef\"\n ```\n\n Search panel with hidden title:\n ```yaml\n dashboards:\n - name: \"Security Incidents Overview\"\n panels:\n - hide_title: true\n description: \"Critical security alerts from the last 24 hours\"\n size: { w: 48, h: 8 }\n search:\n saved_search_id: \"critical-security-alerts-saved-search\"\n ```",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier for the panel. If not provided, one may be generated during compilation.",
"title": "Id"
},
"title": {
"default": "",
"description": "The title displayed on the panel header. Can be an empty string.",
"title": "Title",
"type": "string"
},
"hide_title": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, the panel title will be hidden. Defaults to `false` (title is shown).",
"title": "Hide Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the panel's content or purpose. Defaults to an empty string.",
"title": "Description"
},
"size": {
"$ref": "#/$defs/Size",
"description": "Defines the panel's size on the dashboard grid."
},
"position": {
"$ref": "#/$defs/Position",
"description": "Defines the panel's position on the dashboard grid. If not specified, position will be auto-calculated."
},
"drilldowns": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/DrilldownTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional list of drilldowns to attach to this panel.",
"title": "Drilldowns"
},
"search": {
"$ref": "#/$defs/SearchPanelConfig",
"description": "Search panel configuration."
}
},
"required": [
"search"
],
"title": "SearchPanel",
"type": "object"
}
Source code in kb_dashboard_core/panels/search/config.py
For configuration details and examples, see the Search Panel Configuration.
Lens Panel¶
Lens panels are used to create data visualizations including metrics, pie charts, and XY charts.
API Reference¶
LensPanel
pydantic-model
¶
Represents a Lens chart panel (single or multi-layer).
The lens field contains a discriminated union of chart panel configurations. The chart type is determined by the 'type' field.
Attributes:
| Name | Type | Description |
|---|---|---|
lens |
LensPanelConfig
|
Lens panel configuration. |
Show JSON schema:
{
"$defs": {
"AndFilter": {
"additionalProperties": false,
"description": "Represents an 'and' filter configuration in the Config schema.\n\nThis filter matches documents that satisfy all of the specified filters.",
"properties": {
"alias": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional alias for the filter, used for display purposes.",
"title": "Alias"
},
"disabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Indicates whether the filter is disabled. If `true`, the filter will not be applied.",
"title": "Disabled"
},
"and": {
"description": "A list of filters. All filters must match for a document to be included.",
"items": {
"$ref": "#/$defs/FilterTypes"
},
"title": "And",
"type": "array"
}
},
"required": [
"and"
],
"title": "AndFilter",
"type": "object"
},
"AreaChartAppearance": {
"additionalProperties": false,
"description": "Represents area chart appearance formatting options.",
"properties": {
"x_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the X-axis."
},
"y_left_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the left Y-axis."
},
"y_right_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the right Y-axis."
},
"values": {
"anyOf": [
{
"$ref": "#/$defs/XYValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for value labels on data points."
},
"missing_values": {
"anyOf": [
{
"enum": [
"none",
"linear",
"carry",
"lookahead",
"average",
"nearest"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "How to handle missing data points. Controls interpolation for gaps in your data.",
"title": "Missing Values"
},
"show_as_dotted": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, visually distinguish interpolated data from real data points. Defaults to `false`.",
"title": "Show As Dotted"
},
"end_values": {
"anyOf": [
{
"enum": [
"none",
"zero",
"nearest"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "How to handle the end of the time range in line/area charts.",
"title": "End Values"
},
"line_style": {
"anyOf": [
{
"enum": [
"linear",
"monotone-x",
"step-after"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The line style for line/area charts. Only 3 types are supported by Kibana: linear (straight), monotone-x (smooth), step-after (stepped).",
"title": "Line Style"
},
"show_current_time_marker": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show a vertical line at the current time in time series charts.",
"title": "Show Current Time Marker"
},
"hide_endzones": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to hide end zones in time series charts (areas where data is incomplete).",
"title": "Hide Endzones"
},
"fill_opacity": {
"anyOf": [
{
"maximum": 1.0,
"minimum": 0.0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "The fill opacity for area charts (0.0 to 1.0).",
"title": "Fill Opacity"
}
},
"title": "AreaChartAppearance",
"type": "object"
},
"AxisConfig": {
"additionalProperties": false,
"description": "Represents configuration for a single axis in XY charts.",
"properties": {
"title": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Axis title mode/value: True=auto, False=hidden, string=custom title.",
"title": "Title"
},
"scale": {
"anyOf": [
{
"enum": [
"linear",
"log",
"sqrt",
"time"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Scale type for the axis. Defaults to 'linear'.",
"title": "Scale"
},
"extent": {
"anyOf": [
{
"$ref": "#/$defs/AxisExtent"
},
{
"type": "null"
}
],
"default": null,
"description": "Extent/bounds configuration for the axis."
}
},
"title": "AxisConfig",
"type": "object"
},
"AxisExtent": {
"additionalProperties": false,
"description": "Represents axis extent (bounds) configuration for XY chart axes.\n\nControls the range of values displayed on an axis. Can be set to:\n- 'full': Use the full extent of the data\n- 'custom': Specify custom bounds with min/max values\n- 'data_bounds': Fit to the actual data bounds",
"properties": {
"mode": {
"default": "full",
"description": "The extent mode for the axis. Defaults to 'full'.",
"enum": [
"full",
"custom",
"data_bounds"
],
"title": "Mode",
"type": "string"
},
"min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum value for the axis (only used when mode is 'custom').",
"title": "Min"
},
"max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum value for the axis (only used when mode is 'custom').",
"title": "Max"
},
"enforce": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to enforce the bounds strictly. Defaults to false.",
"title": "Enforce"
},
"nice_values": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to use nice rounded values for bounds. Defaults to true.",
"title": "Nice Values"
}
},
"title": "AxisExtent",
"type": "object"
},
"BarChartAppearance": {
"additionalProperties": false,
"description": "Represents bar chart appearance formatting options.\n\nExtends BaseXYChartAppearance to include bar-specific options.",
"properties": {
"x_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the X-axis."
},
"y_left_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the left Y-axis."
},
"y_right_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the right Y-axis."
},
"values": {
"anyOf": [
{
"$ref": "#/$defs/XYValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for value labels on data points."
},
"min_bar_height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "The minimum height for bars in bar charts.",
"title": "Min Bar Height"
}
},
"title": "BarChartAppearance",
"type": "object"
},
"CollapseAggregationEnum": {
"description": "The aggregation to use for the dimension.",
"enum": [
"sum",
"min",
"max",
"avg"
],
"title": "CollapseAggregationEnum",
"type": "string"
},
"ColorRangeMapping": {
"additionalProperties": false,
"description": "Range/threshold-based color mapping for numeric values.",
"properties": {
"range_type": {
"default": "number",
"description": "How threshold values are interpreted by Kibana.",
"enum": [
"number",
"percent"
],
"title": "Range Type",
"type": "string"
},
"range_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": 0,
"description": "Optional lower bound for the palette domain. Use null for auto/open lower bound.",
"title": "Range Min"
},
"range_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional upper bound for the palette domain. Use null for auto/open upper bound.",
"title": "Range Max"
},
"thresholds": {
"description": "Ordered threshold bands used to build gauge-style color palettes.",
"items": {
"$ref": "#/$defs/ColorThreshold"
},
"minItems": 1,
"title": "Thresholds",
"type": "array"
}
},
"required": [
"thresholds"
],
"title": "ColorRangeMapping",
"type": "object"
},
"ColorThreshold": {
"additionalProperties": false,
"description": "Single threshold band in a range-based color map.",
"properties": {
"up_to": {
"description": "Upper bound for this threshold band.",
"title": "Up To",
"type": "number"
},
"color": {
"description": "The color applied within this threshold band (hex color code).",
"title": "Color",
"type": "string"
}
},
"required": [
"up_to",
"color"
],
"title": "ColorThreshold",
"type": "object"
},
"ColorValueAssignment": {
"additionalProperties": false,
"description": "Manual color assignment to specific categorical values.",
"properties": {
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A single category value to assign a color to.",
"title": "Value"
},
"values": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Multiple category values to assign the same color to.",
"title": "Values"
},
"color": {
"description": "The hex color code to assign (e.g., '#FF0000').",
"title": "Color",
"type": "string"
}
},
"required": [
"color"
],
"title": "ColorValueAssignment",
"type": "object"
},
"ColorValueMapping": {
"additionalProperties": false,
"description": "Categorical color mapping for charts keyed by exact values.",
"properties": {
"palette": {
"default": "eui_amsterdam_color_blind",
"description": "The palette ID to use for unassigned colors.\n\nAvailable palettes:\n- 'default' - Standard EUI palette\n- 'eui_amsterdam_color_blind' - Color-blind safe palette (default)\n- 'kibana_palette' or 'legacy' - Legacy Kibana colors\n- 'elastic_brand' - Elastic brand colors\n- 'gray' - Grayscale palette",
"title": "Palette",
"type": "string"
},
"assignments": {
"description": "Manual color assignments to specific data values.",
"items": {
"$ref": "#/$defs/ColorValueAssignment"
},
"title": "Assignments",
"type": "array"
}
},
"title": "ColorValueMapping",
"type": "object"
},
"CustomFilter": {
"additionalProperties": false,
"description": "Represents a custom filter configuration in the Config schema.\n\nThis filter allows for custom query definitions that do not fit into the standard filters.",
"properties": {
"alias": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional alias for the filter, used for display purposes.",
"title": "Alias"
},
"disabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Indicates whether the filter is disabled. If `true`, the filter will not be applied.",
"title": "Disabled"
},
"dsl": {
"additionalProperties": true,
"description": "The custom query definition. This should be a valid Elasticsearch query object.",
"title": "Dsl",
"type": "object"
}
},
"required": [
"dsl"
],
"title": "CustomFilter",
"type": "object"
},
"DashboardDrilldown": {
"additionalProperties": false,
"description": "Dashboard-to-dashboard drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"dashboard": {
"description": "Target dashboard ID or friendly identifier.",
"title": "Dashboard",
"type": "string"
},
"with_filters": {
"default": true,
"description": "Whether to carry over current filters to the target dashboard. Defaults to True.",
"title": "With Filters",
"type": "boolean"
},
"with_time": {
"default": true,
"description": "Whether to carry over current time range to the target dashboard. Defaults to True.",
"title": "With Time",
"type": "boolean"
}
},
"required": [
"name",
"dashboard"
],
"title": "DashboardDrilldown",
"type": "object"
},
"DatatableAlignmentEnum": {
"description": "Alignment options for datatable columns.",
"enum": [
"left",
"right",
"center"
],
"title": "DatatableAlignmentEnum",
"type": "string"
},
"DatatableAppearance": {
"additionalProperties": false,
"description": "Appearance settings for datatable visualization.",
"properties": {
"row_height": {
"$ref": "#/$defs/DatatableRowHeightEnum",
"default": "auto",
"description": "Row height mode."
},
"row_height_lines": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines for custom row height (only used with row_height='custom').",
"title": "Row Height Lines"
},
"header_row_height": {
"$ref": "#/$defs/DatatableRowHeightEnum",
"default": "auto",
"description": "Header row height mode."
},
"header_row_height_lines": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines for custom header row height (only used with header_row_height='custom').",
"title": "Header Row Height Lines"
},
"density": {
"$ref": "#/$defs/DatatableDensityEnum",
"default": "normal",
"description": "Grid density setting."
}
},
"title": "DatatableAppearance",
"type": "object"
},
"DatatableColorModeEnum": {
"description": "Color mode options for datatable columns.",
"enum": [
"none",
"cell",
"text"
],
"title": "DatatableColorModeEnum",
"type": "string"
},
"DatatableColumnAppearance": {
"additionalProperties": false,
"description": "Appearance options shared by datatable metric and dimension columns.",
"properties": {
"width": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Column width in pixels.",
"title": "Width"
},
"hidden": {
"default": false,
"description": "Whether to hide this column.",
"title": "Hidden",
"type": "boolean"
},
"one_click_filter": {
"default": false,
"description": "Enable one-click filtering for this column.",
"title": "One Click Filter",
"type": "boolean"
},
"alignment": {
"anyOf": [
{
"$ref": "#/$defs/DatatableAlignmentEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Text alignment for the column."
}
},
"title": "DatatableColumnAppearance",
"type": "object"
},
"DatatableDensityEnum": {
"description": "Density options for datatable.",
"enum": [
"compact",
"normal",
"expanded"
],
"title": "DatatableDensityEnum",
"type": "string"
},
"DatatableLensCountAggregatedMetric": {
"additionalProperties": false,
"description": "Datatable count metric with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this metric (width, alignment, summary row, etc.)."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color display mode and optional range mapping for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"default": "count",
"enum": [
"count",
"unique_count"
],
"title": "Aggregation",
"type": "string"
},
"field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The field to count. If not provided, the count will be of all documents in the data view.",
"title": "Field"
},
"exclude_zeros": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to exclude zero values from the count. Kibana defaults to true if not specified.",
"title": "Exclude Zeros"
}
},
"title": "DatatableLensCountAggregatedMetric",
"type": "object"
},
"DatatableLensDateHistogramBreakdown": {
"additionalProperties": false,
"description": "Datatable date-histogram breakdown with appearance options and collapse support.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColumnAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this dimension."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "date_histogram",
"default": "date_histogram",
"title": "Type",
"type": "string"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
},
"minimum_interval": {
"anyOf": [
{
"$ref": "#/$defs/LensDateMathMinimumInterval"
},
{
"type": "null"
}
],
"default": null,
"description": "The minimum interval using Elasticsearch date math format (e.g. `1m`, `1h`). Defaults to `auto`."
},
"partial_intervals": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show partial intervals. Kibana defaults to `true` if not specified.",
"title": "Partial Intervals"
},
"collapse": {
"anyOf": [
{
"$ref": "#/$defs/CollapseAggregationEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Aggregate all breakdown values into a single bucket using this function (sum, avg, min, max)."
}
},
"required": [
"field"
],
"title": "DatatableLensDateHistogramBreakdown",
"type": "object"
},
"DatatableLensDateHistogramDimension": {
"additionalProperties": false,
"description": "Datatable date-histogram dimension with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColumnAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this dimension."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "date_histogram",
"default": "date_histogram",
"title": "Type",
"type": "string"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
},
"minimum_interval": {
"anyOf": [
{
"$ref": "#/$defs/LensDateMathMinimumInterval"
},
{
"type": "null"
}
],
"default": null,
"description": "The minimum interval using Elasticsearch date math format (e.g. `1m`, `1h`). Defaults to `auto`."
},
"partial_intervals": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show partial intervals. Kibana defaults to `true` if not specified.",
"title": "Partial Intervals"
}
},
"required": [
"field"
],
"title": "DatatableLensDateHistogramDimension",
"type": "object"
},
"DatatableLensFiltersBreakdown": {
"additionalProperties": false,
"description": "Datatable filters breakdown with appearance options and collapse support.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColumnAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this dimension."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "filters",
"default": "filters",
"title": "Type",
"type": "string"
},
"filters": {
"description": "The filters to use for the dimension.",
"items": {
"$ref": "#/$defs/LensFiltersDimensionFilter"
},
"title": "Filters",
"type": "array"
},
"collapse": {
"anyOf": [
{
"$ref": "#/$defs/CollapseAggregationEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Aggregate all breakdown values into a single bucket using this function (sum, avg, min, max)."
}
},
"required": [
"filters"
],
"title": "DatatableLensFiltersBreakdown",
"type": "object"
},
"DatatableLensFiltersDimension": {
"additionalProperties": false,
"description": "Datatable filters dimension with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColumnAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this dimension."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "filters",
"default": "filters",
"title": "Type",
"type": "string"
},
"filters": {
"description": "The filters to use for the dimension.",
"items": {
"$ref": "#/$defs/LensFiltersDimensionFilter"
},
"title": "Filters",
"type": "array"
}
},
"required": [
"filters"
],
"title": "DatatableLensFiltersDimension",
"type": "object"
},
"DatatableLensFormulaMetric": {
"additionalProperties": false,
"description": "Datatable formula metric with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this metric (width, alignment, summary row, etc.)."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color display mode and optional range mapping for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"formula": {
"description": "The formula string to be evaluated for this metric.",
"title": "Formula",
"type": "string"
}
},
"required": [
"formula"
],
"title": "DatatableLensFormulaMetric",
"type": "object"
},
"DatatableLensIntervalsBreakdown": {
"additionalProperties": false,
"description": "Datatable intervals breakdown with appearance options and collapse support.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColumnAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this dimension."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "intervals",
"default": "intervals",
"title": "Type",
"type": "string"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
},
"intervals": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/LensIntervalsDimensionInterval"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "The intervals to use for the dimension. If not provided, intervals will be automatically picked.",
"title": "Intervals"
},
"granularity": {
"anyOf": [
{
"maximum": 7,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Interval granularity divides the field into evenly spaced intervals based on the minimum and maximum values for the field.\nKibana defaults to 4 if not specified.",
"title": "Granularity"
},
"include_empty_intervals": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, include empty histogram buckets. Defaults to `true`.",
"title": "Include Empty Intervals"
},
"collapse": {
"anyOf": [
{
"$ref": "#/$defs/CollapseAggregationEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Aggregate all breakdown values into a single bucket using this function (sum, avg, min, max)."
}
},
"required": [
"field"
],
"title": "DatatableLensIntervalsBreakdown",
"type": "object"
},
"DatatableLensIntervalsDimension": {
"additionalProperties": false,
"description": "Datatable intervals dimension with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColumnAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this dimension."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "intervals",
"default": "intervals",
"title": "Type",
"type": "string"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
},
"intervals": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/LensIntervalsDimensionInterval"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "The intervals to use for the dimension. If not provided, intervals will be automatically picked.",
"title": "Intervals"
},
"granularity": {
"anyOf": [
{
"maximum": 7,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Interval granularity divides the field into evenly spaced intervals based on the minimum and maximum values for the field.\nKibana defaults to 4 if not specified.",
"title": "Granularity"
},
"include_empty_intervals": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, include empty histogram buckets. Defaults to `true`.",
"title": "Include Empty Intervals"
}
},
"required": [
"field"
],
"title": "DatatableLensIntervalsDimension",
"type": "object"
},
"DatatableLensLastValueAggregatedMetric": {
"additionalProperties": false,
"description": "Datatable last-value metric with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this metric (width, alignment, summary row, etc.)."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color display mode and optional range mapping for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "last_value",
"default": "last_value",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"date_field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The field used to determine the 'last' value.",
"title": "Date Field"
}
},
"required": [
"field"
],
"title": "DatatableLensLastValueAggregatedMetric",
"type": "object"
},
"DatatableLensMultiTermsBreakdown": {
"additionalProperties": false,
"description": "Datatable multi-terms breakdown with appearance options and collapse support.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColumnAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this dimension."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "values",
"default": "values",
"title": "Type",
"type": "string"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of top terms to display.",
"title": "Size"
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/Sort"
},
{
"type": "null"
}
],
"default": null,
"description": "The sort configuration for the terms."
},
"show_other_bucket": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for terms not included in the top size. Defaults to `true`.",
"title": "Show Other Bucket"
},
"include_missing_values": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for documents with a missing value for the field. Defaults to `false`.",
"title": "Include Missing Values"
},
"include": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to include. Can be used with or without `include_is_regex`.",
"title": "Include"
},
"exclude": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to exclude. Can be used with or without `exclude_is_regex`.",
"title": "Exclude"
},
"include_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `include` list as regular expressions. Defaults to `false`.",
"title": "Include Is Regex"
},
"exclude_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `exclude` list as regular expressions. Defaults to `false`.",
"title": "Exclude Is Regex"
},
"fields": {
"description": "List of field names for multi-field aggregation. Requires at least 2 fields.",
"items": {
"type": "string"
},
"minItems": 2,
"title": "Fields",
"type": "array"
},
"collapse": {
"anyOf": [
{
"$ref": "#/$defs/CollapseAggregationEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Aggregate all breakdown values into a single bucket using this function (sum, avg, min, max)."
}
},
"required": [
"fields"
],
"title": "DatatableLensMultiTermsBreakdown",
"type": "object"
},
"DatatableLensMultiTermsDimension": {
"additionalProperties": false,
"description": "Datatable multi-terms dimension with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColumnAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this dimension."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "values",
"default": "values",
"title": "Type",
"type": "string"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of top terms to display.",
"title": "Size"
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/Sort"
},
{
"type": "null"
}
],
"default": null,
"description": "The sort configuration for the terms."
},
"show_other_bucket": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for terms not included in the top size. Defaults to `true`.",
"title": "Show Other Bucket"
},
"include_missing_values": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for documents with a missing value for the field. Defaults to `false`.",
"title": "Include Missing Values"
},
"include": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to include. Can be used with or without `include_is_regex`.",
"title": "Include"
},
"exclude": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to exclude. Can be used with or without `exclude_is_regex`.",
"title": "Exclude"
},
"include_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `include` list as regular expressions. Defaults to `false`.",
"title": "Include Is Regex"
},
"exclude_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `exclude` list as regular expressions. Defaults to `false`.",
"title": "Exclude Is Regex"
},
"fields": {
"description": "List of field names for multi-field aggregation. Requires at least 2 fields.",
"items": {
"type": "string"
},
"minItems": 2,
"title": "Fields",
"type": "array"
}
},
"required": [
"fields"
],
"title": "DatatableLensMultiTermsDimension",
"type": "object"
},
"DatatableLensOtherAggregatedMetric": {
"additionalProperties": false,
"description": "Datatable min/max/median/average metric with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this metric (width, alignment, summary row, etc.)."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color display mode and optional range mapping for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"description": "The aggregation type for the metric (e.g., 'min', 'max', 'median', 'average', 'standard_deviation').",
"enum": [
"min",
"max",
"median",
"average",
"standard_deviation"
],
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
}
},
"required": [
"aggregation",
"field"
],
"title": "DatatableLensOtherAggregatedMetric",
"type": "object"
},
"DatatableLensPercentileAggregatedMetric": {
"additionalProperties": false,
"description": "Datatable percentile metric with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this metric (width, alignment, summary row, etc.)."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color display mode and optional range mapping for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "percentile",
"default": "percentile",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"percentile": {
"title": "Percentile",
"type": "integer"
}
},
"required": [
"field",
"percentile"
],
"title": "DatatableLensPercentileAggregatedMetric",
"type": "object"
},
"DatatableLensPercentileRankAggregatedMetric": {
"additionalProperties": false,
"description": "Datatable percentile-rank metric with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this metric (width, alignment, summary row, etc.)."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color display mode and optional range mapping for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "percentile_rank",
"default": "percentile_rank",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"rank": {
"title": "Rank",
"type": "integer"
}
},
"required": [
"field",
"rank"
],
"title": "DatatableLensPercentileRankAggregatedMetric",
"type": "object"
},
"DatatableLensSumAggregatedMetric": {
"additionalProperties": false,
"description": "Datatable sum metric with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this metric (width, alignment, summary row, etc.)."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color display mode and optional range mapping for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "sum",
"default": "sum",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"exclude_zeros": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to exclude zero values from the sum. Kibana defaults to true if not specified.",
"title": "Exclude Zeros"
}
},
"required": [
"field"
],
"title": "DatatableLensSumAggregatedMetric",
"type": "object"
},
"DatatableLensTermsBreakdown": {
"additionalProperties": false,
"description": "Datatable top-values breakdown with appearance options and collapse support.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColumnAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this dimension."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "values",
"default": "values",
"title": "Type",
"type": "string"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of top terms to display.",
"title": "Size"
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/Sort"
},
{
"type": "null"
}
],
"default": null,
"description": "The sort configuration for the terms."
},
"show_other_bucket": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for terms not included in the top size. Defaults to `true`.",
"title": "Show Other Bucket"
},
"include_missing_values": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for documents with a missing value for the field. Defaults to `false`.",
"title": "Include Missing Values"
},
"include": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to include. Can be used with or without `include_is_regex`.",
"title": "Include"
},
"exclude": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to exclude. Can be used with or without `exclude_is_regex`.",
"title": "Exclude"
},
"include_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `include` list as regular expressions. Defaults to `false`.",
"title": "Include Is Regex"
},
"exclude_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `exclude` list as regular expressions. Defaults to `false`.",
"title": "Exclude Is Regex"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
},
"collapse": {
"anyOf": [
{
"$ref": "#/$defs/CollapseAggregationEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Aggregate all breakdown values into a single bucket using this function (sum, avg, min, max)."
}
},
"required": [
"field"
],
"title": "DatatableLensTermsBreakdown",
"type": "object"
},
"DatatableLensTermsDimension": {
"additionalProperties": false,
"description": "Datatable top-values dimension with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColumnAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this dimension."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "values",
"default": "values",
"title": "Type",
"type": "string"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of top terms to display.",
"title": "Size"
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/Sort"
},
{
"type": "null"
}
],
"default": null,
"description": "The sort configuration for the terms."
},
"show_other_bucket": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for terms not included in the top size. Defaults to `true`.",
"title": "Show Other Bucket"
},
"include_missing_values": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for documents with a missing value for the field. Defaults to `false`.",
"title": "Include Missing Values"
},
"include": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to include. Can be used with or without `include_is_regex`.",
"title": "Include"
},
"exclude": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to exclude. Can be used with or without `exclude_is_regex`.",
"title": "Exclude"
},
"include_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `include` list as regular expressions. Defaults to `false`.",
"title": "Include Is Regex"
},
"exclude_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `exclude` list as regular expressions. Defaults to `false`.",
"title": "Exclude Is Regex"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
}
},
"required": [
"field"
],
"title": "DatatableLensTermsDimension",
"type": "object"
},
"DatatableMetricAppearance": {
"additionalProperties": false,
"description": "Appearance options specific to datatable metric columns.",
"properties": {
"width": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Column width in pixels.",
"title": "Width"
},
"hidden": {
"default": false,
"description": "Whether to hide this column.",
"title": "Hidden",
"type": "boolean"
},
"one_click_filter": {
"default": false,
"description": "Enable one-click filtering for this column.",
"title": "One Click Filter",
"type": "boolean"
},
"alignment": {
"anyOf": [
{
"$ref": "#/$defs/DatatableAlignmentEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Text alignment for the column."
},
"summary_row": {
"anyOf": [
{
"$ref": "#/$defs/DatatableSummaryRowEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Summary function to display at the bottom of the metric column."
},
"summary_label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom label for the summary row.",
"title": "Summary Label"
}
},
"title": "DatatableMetricAppearance",
"type": "object"
},
"DatatableMetricColor": {
"additionalProperties": false,
"description": "Color settings for datatable metric appearance.",
"properties": {
"apply_to": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColorModeEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "How to apply colors to the metric column."
},
"range_type": {
"default": "number",
"description": "How threshold values are interpreted by Kibana.",
"enum": [
"number",
"percent"
],
"title": "Range Type",
"type": "string"
},
"range_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": 0,
"description": "Optional lower bound for the palette domain.",
"title": "Range Min"
},
"range_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional upper bound for the palette domain.",
"title": "Range Max"
},
"thresholds": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ColorThreshold"
},
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Ordered threshold bands used to build datatable palettes.",
"title": "Thresholds"
}
},
"title": "DatatableMetricColor",
"type": "object"
},
"DatatablePagingConfig": {
"additionalProperties": false,
"description": "Pagination configuration for datatable.",
"properties": {
"enabled": {
"default": true,
"description": "Whether pagination is enabled.",
"title": "Enabled",
"type": "boolean"
},
"page_size": {
"default": 10,
"description": "Number of rows per page.",
"title": "Page Size",
"type": "integer"
}
},
"title": "DatatablePagingConfig",
"type": "object"
},
"DatatableRowHeightEnum": {
"description": "Row height options for datatable.",
"enum": [
"auto",
"single",
"custom"
],
"title": "DatatableRowHeightEnum",
"type": "string"
},
"DatatableSortingConfig": {
"additionalProperties": false,
"description": "Sorting configuration for datatable.",
"properties": {
"column_id": {
"description": "The ID of the column to sort by.",
"title": "Column Id",
"type": "string"
},
"direction": {
"default": "asc",
"description": "Sort direction.",
"enum": [
"asc",
"desc"
],
"title": "Direction",
"type": "string"
}
},
"required": [
"column_id"
],
"title": "DatatableSortingConfig",
"type": "object"
},
"DatatableSummaryRowEnum": {
"description": "Summary row options for datatable columns.",
"enum": [
"none",
"sum",
"avg",
"count",
"min",
"max"
],
"title": "DatatableSummaryRowEnum",
"type": "string"
},
"DrilldownTrigger": {
"description": "User-facing drilldown trigger types.",
"enum": [
"click",
"filter",
"range"
],
"title": "DrilldownTrigger",
"type": "string"
},
"DrilldownTypes": {
"anyOf": [
{
"$ref": "#/$defs/DashboardDrilldown"
},
{
"$ref": "#/$defs/UrlDrilldown"
}
]
},
"ExistsFilter": {
"additionalProperties": false,
"description": "Represents an 'exists' filter configuration in the Config schema.\n\nThis filter checks for the existence or non-existence of a specific field.",
"properties": {
"alias": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional alias for the filter, used for display purposes.",
"title": "Alias"
},
"disabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Indicates whether the filter is disabled. If `true`, the filter will not be applied.",
"title": "Disabled"
},
"exists": {
"description": "The field name to check for existence. If the field exists in a document, it will match that document.",
"title": "Exists",
"type": "string"
}
},
"required": [
"exists"
],
"title": "ExistsFilter",
"type": "object"
},
"FilterScalar": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
},
"FilterTypes": {
"oneOf": [
{
"$ref": "#/$defs/ExistsFilter"
},
{
"$ref": "#/$defs/PhraseFilter"
},
{
"$ref": "#/$defs/PhrasesFilter"
},
{
"$ref": "#/$defs/RangeFilter"
},
{
"$ref": "#/$defs/CustomFilter"
},
{
"$ref": "#/$defs/AndFilter"
},
{
"$ref": "#/$defs/OrFilter"
},
{
"$ref": "#/$defs/NegateFilter"
}
]
},
"GaugeAppearance": {
"additionalProperties": false,
"description": "Appearance configuration for gauge visualizations.\n\nGroups all visual styling options for gauge charts including shape, tick positioning,\nand label configuration.",
"properties": {
"shape": {
"anyOf": [
{
"enum": [
"horizontal_bullet",
"vertical_bullet",
"arc",
"circle",
"semi_circle"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The shape of the gauge visualization.",
"title": "Shape"
},
"ticks_position": {
"anyOf": [
{
"enum": [
"auto",
"bands",
"hidden"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of tick marks on the gauge.",
"title": "Ticks Position"
},
"label_major": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Major label text to display on the gauge.",
"title": "Label Major"
},
"label_minor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minor label text to display on the gauge.",
"title": "Label Minor"
}
},
"title": "GaugeAppearance",
"type": "object"
},
"GaugeTitlesAndText": {
"additionalProperties": false,
"description": "Title and subtitle display options for gauges.\n\nThese fields map to Kibana gauge `labelMajor` (title) and `labelMinor` (subtitle).\n\n- ``None`` (omit): Kibana default (auto for title, hidden for subtitle)\n- ``False``: explicitly hidden\n- ``str``: custom text",
"properties": {
"title": {
"anyOf": [
{
"type": "string"
},
{
"const": false,
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Gauge title. Omit for Kibana default, ``False`` to hide, or a string for custom text.",
"title": "Title"
},
"subtitle": {
"anyOf": [
{
"type": "string"
},
{
"const": false,
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Gauge subtitle. Omit for no subtitle, ``False`` to hide, or a string for custom text.",
"title": "Subtitle"
}
},
"title": "GaugeTitlesAndText",
"type": "object"
},
"HeatmapAppearance": {
"additionalProperties": false,
"description": "Formatting options for the chart appearance.",
"properties": {
"values": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for numeric values shown in heatmap cells."
},
"x_axis": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the X-axis labels and title."
},
"y_axis": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the Y-axis labels and title."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapLegendConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the color legend."
}
},
"title": "HeatmapAppearance",
"type": "object"
},
"HeatmapAxisAppearance": {
"additionalProperties": false,
"description": "Appearance configuration for a heatmap axis.",
"properties": {
"labels": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisLabelsConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for axis tick labels."
},
"title": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisTitleConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for axis title visibility."
}
},
"title": "HeatmapAxisAppearance",
"type": "object"
},
"HeatmapAxisLabelsConfig": {
"additionalProperties": false,
"description": "Configuration for heatmap axis tick labels.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show tick labels on the axis.",
"title": "Visible"
}
},
"title": "HeatmapAxisLabelsConfig",
"type": "object"
},
"HeatmapAxisTitleConfig": {
"additionalProperties": false,
"description": "Configuration for heatmap axis titles.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show the axis title.",
"title": "Visible"
}
},
"title": "HeatmapAxisTitleConfig",
"type": "object"
},
"HeatmapLegendConfig": {
"additionalProperties": false,
"description": "Legend configuration for heatmap visualizations.\n\nControls the visibility and position of the color legend.\nNote: Heatmaps only support 'show' and 'hide' visibility options (not 'auto').",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
}
},
"title": "HeatmapLegendConfig",
"type": "object"
},
"HeatmapValuesConfig": {
"additionalProperties": false,
"description": "Configuration for heatmap numeric values.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show numeric values inside heatmap cells.",
"title": "Visible"
}
},
"title": "HeatmapValuesConfig",
"type": "object"
},
"KqlQuery": {
"additionalProperties": false,
"description": "Represents a KQL (Kibana Query Language) query configuration.\n\nKQL is the default query language in Kibana and provides a simplified syntax for filtering data.",
"properties": {
"kql": {
"description": "The Kibana Query Language (KQL) query string to apply.",
"title": "Kql",
"type": "string"
}
},
"required": [
"kql"
],
"title": "KqlQuery",
"type": "object"
},
"LegacyQueryTypes": {
"oneOf": [
{
"$ref": "#/$defs/KqlQuery"
},
{
"$ref": "#/$defs/LuceneQuery"
}
]
},
"LegendVisibleEnum": {
"description": "Represents the possible values for the visibility of the legend in a pie chart.",
"enum": [
"show",
"hide",
"auto"
],
"title": "LegendVisibleEnum",
"type": "string"
},
"LegendWidthEnum": {
"description": "Represents the possible values for the width/size of the legend.",
"enum": [
"small",
"medium",
"large",
"extra_large"
],
"title": "LegendWidthEnum",
"type": "string"
},
"LensAggregatedMetricTypes": {
"anyOf": [
{
"$ref": "#/$defs/LensOtherAggregatedMetric"
},
{
"$ref": "#/$defs/LensLastValueAggregatedMetric"
},
{
"$ref": "#/$defs/LensCountAggregatedMetric"
},
{
"$ref": "#/$defs/LensSumAggregatedMetric"
},
{
"$ref": "#/$defs/LensPercentileRankAggregatedMetric"
},
{
"$ref": "#/$defs/LensPercentileAggregatedMetric"
}
]
},
"LensAreaChart": {
"additionalProperties": false,
"description": "Represents an Area chart configuration within a Lens panel.\n\nExamples:\n Simple area chart with time series:\n ```yaml\n lens:\n type: area\n data_view: \"logs-*\"\n dimension:\n type: date_histogram\n field: \"@timestamp\"\n metrics:\n - aggregation: count\n ```\n\n Stacked area chart with percentage mode:\n ```yaml\n lens:\n type: area\n mode: percentage\n data_view: \"metrics-*\"\n dimension:\n type: date_histogram\n field: \"@timestamp\"\n breakdown:\n type: values\n field: \"service.name\"\n metrics:\n - aggregation: count\n ```",
"properties": {
"data_view": {
"description": "The data view to use for the chart.",
"title": "Data View",
"type": "string"
},
"dimension": {
"anyOf": [
{
"$ref": "#/$defs/LensDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Defines the X-axis dimension for the chart. XY charts support 0 or 1 dimension."
},
"metrics": {
"description": "Defines the metrics for the chart. At least one metric is required.",
"items": {
"$ref": "#/$defs/LensXYMetricTypes"
},
"minItems": 1,
"title": "Metrics",
"type": "array"
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/LensBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional breakdown to split the series by. If provided, it will be used to break down the data into multiple series."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/XYLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color palette."
},
"type": {
"const": "area",
"default": "area",
"description": "The type of XY chart to display. Defaults to 'area'.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/AreaChartAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance. AreaChartAppearance includes all line chart options plus fill_opacity."
},
"mode": {
"default": "stacked",
"description": "The stacking mode for bar and area charts. Defaults to 'stacked'.",
"enum": [
"stacked",
"unstacked",
"percentage"
],
"title": "Mode",
"type": "string"
}
},
"required": [
"data_view",
"metrics"
],
"title": "LensAreaChart",
"type": "object"
},
"LensAreaPanelConfig": {
"additionalProperties": false,
"description": "Configuration for a Lens area panel.",
"properties": {
"filters": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FilterTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of filters to apply to the panel.",
"title": "Filters"
},
"query": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The query to be executed."
},
"layers": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/MultiLayerChartTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional additional layers for multi-layer XY charts (including reference lines).",
"title": "Layers"
},
"data_view": {
"description": "The data view to use for the chart.",
"title": "Data View",
"type": "string"
},
"dimension": {
"anyOf": [
{
"$ref": "#/$defs/LensDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Defines the X-axis dimension for the chart. XY charts support 0 or 1 dimension."
},
"metrics": {
"description": "Defines the metrics for the chart. At least one metric is required.",
"items": {
"$ref": "#/$defs/LensXYMetricTypes"
},
"minItems": 1,
"title": "Metrics",
"type": "array"
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/LensBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional breakdown to split the series by. If provided, it will be used to break down the data into multiple series."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/XYLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color palette."
},
"type": {
"const": "area",
"default": "area",
"description": "The type of XY chart to display. Defaults to 'area'.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/AreaChartAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance. AreaChartAppearance includes all line chart options plus fill_opacity."
},
"mode": {
"default": "stacked",
"description": "The stacking mode for bar and area charts. Defaults to 'stacked'.",
"enum": [
"stacked",
"unstacked",
"percentage"
],
"title": "Mode",
"type": "string"
}
},
"required": [
"data_view",
"metrics"
],
"title": "LensAreaPanelConfig",
"type": "object"
},
"LensBarChart": {
"additionalProperties": false,
"description": "Represents a Bar chart configuration within a Lens panel.\n\nExamples:\n Simple bar chart with time series:\n ```yaml\n lens:\n type: bar\n data_view: \"logs-*\"\n dimension:\n type: date_histogram\n field: \"@timestamp\"\n metrics:\n - aggregation: count\n ```\n\n Stacked bar chart with breakdown:\n ```yaml\n lens:\n type: bar\n mode: stacked\n data_view: \"logs-*\"\n dimension:\n type: date_histogram\n field: \"@timestamp\"\n breakdown:\n type: values\n field: \"service.name\"\n metrics:\n - aggregation: count\n ```",
"properties": {
"data_view": {
"description": "The data view to use for the chart.",
"title": "Data View",
"type": "string"
},
"dimension": {
"anyOf": [
{
"$ref": "#/$defs/LensDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Defines the X-axis dimension for the chart. XY charts support 0 or 1 dimension."
},
"metrics": {
"description": "Defines the metrics for the chart. At least one metric is required.",
"items": {
"$ref": "#/$defs/LensXYMetricTypes"
},
"minItems": 1,
"title": "Metrics",
"type": "array"
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/LensBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional breakdown to split the series by. If provided, it will be used to break down the data into multiple series."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/XYLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color palette."
},
"type": {
"const": "bar",
"default": "bar",
"description": "The type of XY chart to display. Defaults to 'bar'.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/BarChartAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"mode": {
"default": "stacked",
"description": "The stacking mode for bar and area charts. Defaults to 'stacked'.",
"enum": [
"stacked",
"unstacked",
"percentage"
],
"title": "Mode",
"type": "string"
}
},
"required": [
"data_view",
"metrics"
],
"title": "LensBarChart",
"type": "object"
},
"LensBarPanelConfig": {
"additionalProperties": false,
"description": "Configuration for a Lens bar panel.",
"properties": {
"filters": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FilterTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of filters to apply to the panel.",
"title": "Filters"
},
"query": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The query to be executed."
},
"layers": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/MultiLayerChartTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional additional layers for multi-layer XY charts (including reference lines).",
"title": "Layers"
},
"data_view": {
"description": "The data view to use for the chart.",
"title": "Data View",
"type": "string"
},
"dimension": {
"anyOf": [
{
"$ref": "#/$defs/LensDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Defines the X-axis dimension for the chart. XY charts support 0 or 1 dimension."
},
"metrics": {
"description": "Defines the metrics for the chart. At least one metric is required.",
"items": {
"$ref": "#/$defs/LensXYMetricTypes"
},
"minItems": 1,
"title": "Metrics",
"type": "array"
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/LensBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional breakdown to split the series by. If provided, it will be used to break down the data into multiple series."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/XYLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color palette."
},
"type": {
"const": "bar",
"default": "bar",
"description": "The type of XY chart to display. Defaults to 'bar'.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/BarChartAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"mode": {
"default": "stacked",
"description": "The stacking mode for bar and area charts. Defaults to 'stacked'.",
"enum": [
"stacked",
"unstacked",
"percentage"
],
"title": "Mode",
"type": "string"
}
},
"required": [
"data_view",
"metrics"
],
"title": "LensBarPanelConfig",
"type": "object"
},
"LensBreakdownTypes": {
"anyOf": [
{
"$ref": "#/$defs/LensTermsBreakdown"
},
{
"$ref": "#/$defs/LensMultiTermsBreakdown"
},
{
"$ref": "#/$defs/LensDateHistogramBreakdown"
},
{
"$ref": "#/$defs/LensFiltersBreakdown"
},
{
"$ref": "#/$defs/LensIntervalsBreakdown"
}
]
},
"LensCountAggregatedMetric": {
"additionalProperties": false,
"description": "Represents a count metric configuration within a Lens chart.\n\nCount metrics are used to count the number of documents in a data view.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"default": "count",
"enum": [
"count",
"unique_count"
],
"title": "Aggregation",
"type": "string"
},
"field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The field to count. If not provided, the count will be of all documents in the data view.",
"title": "Field"
},
"exclude_zeros": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to exclude zero values from the count. Kibana defaults to true if not specified.",
"title": "Exclude Zeros"
}
},
"title": "LensCountAggregatedMetric",
"type": "object"
},
"LensCustomMetricFormat": {
"additionalProperties": false,
"description": "Custom format configuration for metrics using numeral.js patterns.\n\nUse this for complete control over numeric formatting with numeral.js syntax.",
"properties": {
"type": {
"const": "custom",
"default": "custom",
"description": "Format type identifier. Must be 'custom' for custom formats.",
"title": "Type",
"type": "string"
},
"decimals": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of decimal places to display. If not specified, defaults to 0.",
"title": "Decimals"
},
"pattern": {
"description": "numeral.js format pattern (e.g., \"0,0.00\" for comma-separated numbers with 2 decimals).",
"title": "Pattern",
"type": "string"
},
"suffix": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional suffix to display after the formatted number (e.g., \" requests\", \" users\").",
"title": "Suffix"
},
"compact": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to use compact notation (e.g., 1.2K instead of 1200). Defaults to Kibana's behavior.",
"title": "Compact"
}
},
"required": [
"pattern"
],
"title": "LensCustomMetricFormat",
"type": "object"
},
"LensDataMetricTypes": {
"anyOf": [
{
"$ref": "#/$defs/LensFormulaMetric"
},
{
"$ref": "#/$defs/LensAggregatedMetricTypes"
}
]
},
"LensDatatableBreakdownTypes": {
"anyOf": [
{
"$ref": "#/$defs/DatatableLensTermsBreakdown"
},
{
"$ref": "#/$defs/DatatableLensMultiTermsBreakdown"
},
{
"$ref": "#/$defs/DatatableLensDateHistogramBreakdown"
},
{
"$ref": "#/$defs/DatatableLensFiltersBreakdown"
},
{
"$ref": "#/$defs/DatatableLensIntervalsBreakdown"
}
]
},
"LensDatatableDimensionTypes": {
"anyOf": [
{
"$ref": "#/$defs/DatatableLensTermsDimension"
},
{
"$ref": "#/$defs/DatatableLensMultiTermsDimension"
},
{
"$ref": "#/$defs/DatatableLensDateHistogramDimension"
},
{
"$ref": "#/$defs/DatatableLensFiltersDimension"
},
{
"$ref": "#/$defs/DatatableLensIntervalsDimension"
}
]
},
"LensDatatableMetricTypes": {
"anyOf": [
{
"$ref": "#/$defs/DatatableLensFormulaMetric"
},
{
"$ref": "#/$defs/DatatableLensCountAggregatedMetric"
},
{
"$ref": "#/$defs/DatatableLensSumAggregatedMetric"
},
{
"$ref": "#/$defs/DatatableLensOtherAggregatedMetric"
},
{
"$ref": "#/$defs/DatatableLensLastValueAggregatedMetric"
},
{
"$ref": "#/$defs/DatatableLensPercentileRankAggregatedMetric"
},
{
"$ref": "#/$defs/DatatableLensPercentileAggregatedMetric"
}
]
},
"LensDatatablePanelConfig": {
"additionalProperties": false,
"description": "Configuration for a Lens datatable panel.",
"properties": {
"filters": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FilterTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of filters to apply to the panel.",
"title": "Filters"
},
"query": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The query to be executed."
},
"type": {
"const": "datatable",
"default": "datatable",
"description": "The type of chart, which is 'datatable' for this visualization.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Appearance settings for the datatable."
},
"sorting": {
"anyOf": [
{
"$ref": "#/$defs/DatatableSortingConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional sorting configuration."
},
"paging": {
"anyOf": [
{
"$ref": "#/$defs/DatatablePagingConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional pagination configuration."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"data_view": {
"description": "The data view that determines the data for the datatable chart.",
"title": "Data View",
"type": "string"
},
"metrics": {
"description": "List of metrics to display as columns.",
"items": {
"anyOf": [
{
"$ref": "#/$defs/LensDatatableMetricTypes"
},
{
"$ref": "#/$defs/LensDataMetricTypes"
}
]
},
"title": "Metrics",
"type": "array"
},
"breakdowns": {
"description": "List of breakdowns to use as row groupings.",
"items": {
"anyOf": [
{
"$ref": "#/$defs/LensDatatableBreakdownTypes"
},
{
"$ref": "#/$defs/LensBreakdownTypes"
}
]
},
"title": "Breakdowns",
"type": "array"
},
"metrics_split_by": {
"anyOf": [
{
"items": {
"anyOf": [
{
"$ref": "#/$defs/LensDatatableDimensionTypes"
},
{
"$ref": "#/$defs/LensDimensionTypes"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional split-metrics-by dimensions (creates separate metric columns for each dimension value).",
"title": "Metrics Split By"
}
},
"required": [
"data_view"
],
"title": "LensDatatablePanelConfig",
"type": "object"
},
"LensDateHistogramBreakdown": {
"additionalProperties": false,
"description": "Date histogram breakdown with optional collapse aggregation.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "date_histogram",
"default": "date_histogram",
"title": "Type",
"type": "string"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
},
"minimum_interval": {
"anyOf": [
{
"$ref": "#/$defs/LensDateMathMinimumInterval"
},
{
"type": "null"
}
],
"default": null,
"description": "The minimum interval using Elasticsearch date math format (e.g. `1m`, `1h`). Defaults to `auto`."
},
"partial_intervals": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show partial intervals. Kibana defaults to `true` if not specified.",
"title": "Partial Intervals"
},
"collapse": {
"anyOf": [
{
"$ref": "#/$defs/CollapseAggregationEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Aggregate all breakdown values into a single bucket using this function (sum, avg, min, max)."
}
},
"required": [
"field"
],
"title": "LensDateHistogramBreakdown",
"type": "object"
},
"LensDateHistogramDimension": {
"additionalProperties": false,
"description": "Represents a histogram dimension configuration within a Lens chart.\n\nDate histogram dimensions are used for aggregating data into buckets based on numeric ranges.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "date_histogram",
"default": "date_histogram",
"title": "Type",
"type": "string"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
},
"minimum_interval": {
"anyOf": [
{
"$ref": "#/$defs/LensDateMathMinimumInterval"
},
{
"type": "null"
}
],
"default": null,
"description": "The minimum interval using Elasticsearch date math format (e.g. `1m`, `1h`). Defaults to `auto`."
},
"partial_intervals": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show partial intervals. Kibana defaults to `true` if not specified.",
"title": "Partial Intervals"
}
},
"required": [
"field"
],
"title": "LensDateHistogramDimension",
"type": "object"
},
"LensDateMathMinimumInterval": {
"anyOf": [
{
"const": "auto",
"type": "string"
},
{
"pattern": "^[1-9][0-9]*(ms|s|m|h|d|w|M|q|y)$",
"type": "string"
}
]
},
"LensDimensionTypes": {
"anyOf": [
{
"$ref": "#/$defs/LensTermsDimension"
},
{
"$ref": "#/$defs/LensMultiTermsDimension"
},
{
"$ref": "#/$defs/LensDateHistogramDimension"
},
{
"$ref": "#/$defs/LensFiltersDimension"
},
{
"$ref": "#/$defs/LensIntervalsDimension"
}
]
},
"LensFiltersBreakdown": {
"additionalProperties": false,
"description": "Filters breakdown with optional collapse aggregation.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "filters",
"default": "filters",
"title": "Type",
"type": "string"
},
"filters": {
"description": "The filters to use for the dimension.",
"items": {
"$ref": "#/$defs/LensFiltersDimensionFilter"
},
"title": "Filters",
"type": "array"
},
"collapse": {
"anyOf": [
{
"$ref": "#/$defs/CollapseAggregationEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Aggregate all breakdown values into a single bucket using this function (sum, avg, min, max)."
}
},
"required": [
"filters"
],
"title": "LensFiltersBreakdown",
"type": "object"
},
"LensFiltersDimension": {
"additionalProperties": false,
"description": "Represents a filters dimension configuration within a Lens chart.\n\nFilters dimensions are used for filtering data based on a field.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "filters",
"default": "filters",
"title": "Type",
"type": "string"
},
"filters": {
"description": "The filters to use for the dimension.",
"items": {
"$ref": "#/$defs/LensFiltersDimensionFilter"
},
"title": "Filters",
"type": "array"
}
},
"required": [
"filters"
],
"title": "LensFiltersDimension",
"type": "object"
},
"LensFiltersDimensionFilter": {
"additionalProperties": false,
"description": "A filter for a filters dimension.",
"properties": {
"query": {
"$ref": "#/$defs/LegacyQueryTypes",
"description": "The query to use for the dimension."
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the filter. If not provided, the query will be used as the label.",
"title": "Label"
}
},
"required": [
"query"
],
"title": "LensFiltersDimensionFilter",
"type": "object"
},
"LensFormulaMetric": {
"additionalProperties": false,
"description": "Represents a formula metric configuration within a Lens chart.\n\nFormula metrics allow for custom calculations using Kibana's formula syntax.\nThe formula string is passed directly to Kibana, which handles parsing and\nAST generation internally.\n\nExample formulas:\n- Simple arithmetic: \"count() / 100\"\n- Field aggregations: \"(max(response.time) - min(response.time)) / average(response.time)\"\n- With filters: \"count(kql='status:error') / count() * 100\"",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"formula": {
"description": "The formula string to be evaluated for this metric.",
"title": "Formula",
"type": "string"
}
},
"required": [
"formula"
],
"title": "LensFormulaMetric",
"type": "object"
},
"LensGaugePanelConfig": {
"additionalProperties": false,
"description": "Configuration for a Lens gauge panel.",
"properties": {
"filters": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FilterTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of filters to apply to the panel.",
"title": "Filters"
},
"query": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The query to be executed."
},
"type": {
"const": "gauge",
"default": "gauge",
"description": "The type of chart, which is 'gauge' for this visualization.",
"title": "Type",
"type": "string"
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorRangeMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Range-based palette configuration for gauge thresholds. When set, enables palette color mode."
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/GaugeAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Visual appearance configuration for the gauge."
},
"titles_and_text": {
"anyOf": [
{
"$ref": "#/$defs/GaugeTitlesAndText"
},
{
"type": "null"
}
],
"default": null,
"description": "Title and subtitle options mapped to gauge `label_major` and `label_minor`."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"data_view": {
"description": "The data view that determines the data for the gauge chart.",
"title": "Data View",
"type": "string"
},
"metric": {
"$ref": "#/$defs/LensDataMetricTypes",
"description": "The primary metric to display in the gauge. This is the main value shown."
},
"minimum": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricTypes"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional minimum value for the gauge range. Can be a metric (field-based) or a static numeric value.",
"title": "Minimum"
},
"maximum": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricTypes"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional maximum value for the gauge range. Can be a metric (field-based) or a static numeric value.",
"title": "Maximum"
},
"goal": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricTypes"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional goal/target value to display as a reference. Can be a metric (field-based) or a static numeric value.",
"title": "Goal"
}
},
"required": [
"data_view",
"metric"
],
"title": "LensGaugePanelConfig",
"type": "object"
},
"LensHeatmapPanelConfig": {
"additionalProperties": false,
"description": "Configuration for a Lens heatmap panel.",
"properties": {
"filters": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FilterTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of filters to apply to the panel.",
"title": "Filters"
},
"query": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The query to be executed."
},
"type": {
"const": "heatmap",
"default": "heatmap",
"description": "The type of chart, which is 'heatmap' for this visualization.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorRangeMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional range-based palette configuration for heatmap cell coloring."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"data_view": {
"description": "The data view that determines the data for the heatmap chart.",
"title": "Data View",
"type": "string"
},
"x_axis": {
"$ref": "#/$defs/LensDimensionTypes",
"description": "The dimension to display on the X-axis (horizontal)."
},
"y_axis": {
"anyOf": [
{
"$ref": "#/$defs/LensDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The dimension to display on the Y-axis (vertical). Optional for 1D heatmaps."
},
"metric": {
"$ref": "#/$defs/LensDataMetricTypes",
"description": "The metric that determines cell color intensity."
}
},
"required": [
"data_view",
"x_axis",
"metric"
],
"title": "LensHeatmapPanelConfig",
"type": "object"
},
"LensIntervalsBreakdown": {
"additionalProperties": false,
"description": "Intervals breakdown with optional collapse aggregation.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "intervals",
"default": "intervals",
"title": "Type",
"type": "string"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
},
"intervals": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/LensIntervalsDimensionInterval"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "The intervals to use for the dimension. If not provided, intervals will be automatically picked.",
"title": "Intervals"
},
"granularity": {
"anyOf": [
{
"maximum": 7,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Interval granularity divides the field into evenly spaced intervals based on the minimum and maximum values for the field.\nKibana defaults to 4 if not specified.",
"title": "Granularity"
},
"include_empty_intervals": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, include empty histogram buckets. Defaults to `true`.",
"title": "Include Empty Intervals"
},
"collapse": {
"anyOf": [
{
"$ref": "#/$defs/CollapseAggregationEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Aggregate all breakdown values into a single bucket using this function (sum, avg, min, max)."
}
},
"required": [
"field"
],
"title": "LensIntervalsBreakdown",
"type": "object"
},
"LensIntervalsDimension": {
"additionalProperties": false,
"description": "Represents an intervals dimension configuration within a Lens chart.\n\nIntervals dimensions are used for aggregating data based on numeric ranges.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "intervals",
"default": "intervals",
"title": "Type",
"type": "string"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
},
"intervals": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/LensIntervalsDimensionInterval"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "The intervals to use for the dimension. If not provided, intervals will be automatically picked.",
"title": "Intervals"
},
"granularity": {
"anyOf": [
{
"maximum": 7,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Interval granularity divides the field into evenly spaced intervals based on the minimum and maximum values for the field.\nKibana defaults to 4 if not specified.",
"title": "Granularity"
},
"include_empty_intervals": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, include empty histogram buckets. Defaults to `true`.",
"title": "Include Empty Intervals"
}
},
"required": [
"field"
],
"title": "LensIntervalsDimension",
"type": "object"
},
"LensIntervalsDimensionInterval": {
"additionalProperties": false,
"description": "A single interval for an intervals dimension.",
"properties": {
"from": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The start of the interval.",
"title": "From"
},
"to": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The end of the interval.",
"title": "To"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The label for the interval.",
"title": "Label"
}
},
"title": "LensIntervalsDimensionInterval",
"type": "object"
},
"LensLastValueAggregatedMetric": {
"additionalProperties": false,
"description": "Represents a last value metric configuration within a Lens chart.\n\nLast value metrics are used to retrieve the most recent value of a field based on a specified sort order.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "last_value",
"default": "last_value",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"date_field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The field used to determine the 'last' value.",
"title": "Date Field"
}
},
"required": [
"field"
],
"title": "LensLastValueAggregatedMetric",
"type": "object"
},
"LensLineChart": {
"additionalProperties": false,
"description": "Represents a Line chart configuration within a Lens panel.\n\nExamples:\n Simple line chart with time series:\n ```yaml\n lens:\n type: line\n data_view: \"metrics-*\"\n dimension:\n type: date_histogram\n field: \"@timestamp\"\n metrics:\n - aggregation: average\n field: response_time\n ```\n\n Line chart with dual Y-axes:\n ```yaml\n lens:\n type: line\n data_view: \"logs-*\"\n dimension:\n type: date_histogram\n field: \"@timestamp\"\n metrics:\n - aggregation: count\n id: \"request_count\"\n axis: left\n - aggregation: average\n field: \"error.rate\"\n id: \"error_rate\"\n axis: right\n ```",
"properties": {
"data_view": {
"description": "The data view to use for the chart.",
"title": "Data View",
"type": "string"
},
"dimension": {
"anyOf": [
{
"$ref": "#/$defs/LensDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Defines the X-axis dimension for the chart. XY charts support 0 or 1 dimension."
},
"metrics": {
"description": "Defines the metrics for the chart. At least one metric is required.",
"items": {
"$ref": "#/$defs/LensXYMetricTypes"
},
"minItems": 1,
"title": "Metrics",
"type": "array"
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/LensBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional breakdown to split the series by. If provided, it will be used to break down the data into multiple series."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/XYLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color palette."
},
"type": {
"const": "line",
"default": "line",
"description": "The type of XY chart to display. Defaults to 'line'.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/LineChartAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
}
},
"required": [
"data_view",
"metrics"
],
"title": "LensLineChart",
"type": "object"
},
"LensLinePanelConfig": {
"additionalProperties": false,
"description": "Configuration for a Lens line panel.",
"properties": {
"filters": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FilterTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of filters to apply to the panel.",
"title": "Filters"
},
"query": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The query to be executed."
},
"layers": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/MultiLayerChartTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional additional layers for multi-layer XY charts (including reference lines).",
"title": "Layers"
},
"data_view": {
"description": "The data view to use for the chart.",
"title": "Data View",
"type": "string"
},
"dimension": {
"anyOf": [
{
"$ref": "#/$defs/LensDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Defines the X-axis dimension for the chart. XY charts support 0 or 1 dimension."
},
"metrics": {
"description": "Defines the metrics for the chart. At least one metric is required.",
"items": {
"$ref": "#/$defs/LensXYMetricTypes"
},
"minItems": 1,
"title": "Metrics",
"type": "array"
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/LensBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional breakdown to split the series by. If provided, it will be used to break down the data into multiple series."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/XYLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color palette."
},
"type": {
"const": "line",
"default": "line",
"description": "The type of XY chart to display. Defaults to 'line'.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/LineChartAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
}
},
"required": [
"data_view",
"metrics"
],
"title": "LensLinePanelConfig",
"type": "object"
},
"LensMetricChartMetricTypes": {
"anyOf": [
{
"$ref": "#/$defs/MetricLensFormulaMetric"
},
{
"$ref": "#/$defs/MetricLensCountAggregatedMetric"
},
{
"$ref": "#/$defs/MetricLensSumAggregatedMetric"
},
{
"$ref": "#/$defs/MetricLensOtherAggregatedMetric"
},
{
"$ref": "#/$defs/MetricLensLastValueAggregatedMetric"
},
{
"$ref": "#/$defs/MetricLensPercentileRankAggregatedMetric"
},
{
"$ref": "#/$defs/MetricLensPercentileAggregatedMetric"
}
]
},
"LensMetricFormat": {
"additionalProperties": false,
"description": "Standard format configuration for displaying metric values.\n\nSupports common numeric formats with optional suffix and compact notation.",
"properties": {
"type": {
"description": "The format type for the metric value.\n\nAvailable formats:\n- **number**: Plain numeric value with optional decimal places\n- **bytes**: Byte size formatting (B, KB, MB, GB, TB)\n- **bits**: Bit size formatting (b, Kb, Mb, Gb, Tb)\n- **percent**: Percentage formatting with % symbol\n- **duration**: Time duration formatting (ms, s, m, h, d)",
"enum": [
"number",
"bytes",
"bits",
"percent",
"duration"
],
"title": "Type",
"type": "string"
},
"decimals": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of decimal places to display. If not specified, defaults to 2 for number/bytes/percent, 0 for bits/duration.",
"title": "Decimals"
},
"suffix": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional suffix to display after the formatted number (e.g., \" requests\", \" users\").",
"title": "Suffix"
},
"compact": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to use compact notation (e.g., 1.2K instead of 1200). Defaults to Kibana's behavior.",
"title": "Compact"
}
},
"required": [
"type"
],
"title": "LensMetricFormat",
"type": "object"
},
"LensMetricFormatTypes": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormat"
},
{
"$ref": "#/$defs/LensCustomMetricFormat"
}
]
},
"LensMetricPanelConfig": {
"additionalProperties": false,
"description": "Configuration for a Lens metric panel.",
"properties": {
"filters": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FilterTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of filters to apply to the panel.",
"title": "Filters"
},
"query": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The query to be executed."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "metric",
"default": "metric",
"description": "The type of chart, which is 'metric' for this visualization.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/MetricAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Visual appearance configuration for the metric."
},
"titles_and_text": {
"anyOf": [
{
"$ref": "#/$defs/MetricTitlesAndText"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart titles and text."
},
"data_view": {
"description": "The data view that determines the data for the metric chart.",
"title": "Data View",
"type": "string"
},
"primary": {
"$ref": "#/$defs/LensMetricChartMetricTypes",
"description": "The primary metric to display in the chart. This is the main value shown in the metric visualization."
},
"secondary": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricChartMetricTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional secondary metric to display alongside the primary metric."
},
"maximum": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional maximum metric to display, often used for comparison or thresholds."
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/LensBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional breakdown dimension to split metric values by category."
}
},
"required": [
"data_view",
"primary"
],
"title": "LensMetricPanelConfig",
"type": "object"
},
"LensMetricTypes": {
"anyOf": [
{
"$ref": "#/$defs/LensFormulaMetric"
},
{
"$ref": "#/$defs/LensAggregatedMetricTypes"
},
{
"$ref": "#/$defs/LensStaticValue"
}
]
},
"LensMosaicPanelConfig": {
"additionalProperties": false,
"description": "Configuration for a Lens mosaic panel.",
"properties": {
"filters": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FilterTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of filters to apply to the panel.",
"title": "Filters"
},
"query": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The query to be executed."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "mosaic",
"default": "mosaic",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/MosaicAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/MosaicLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color."
},
"data_view": {
"description": "The data view that determines the data for the mosaic chart.",
"title": "Data View",
"type": "string"
},
"metric": {
"$ref": "#/$defs/LensDataMetricTypes",
"description": "Metric that determines the size of rectangles. Mosaic charts support only one metric."
},
"dimension": {
"$ref": "#/$defs/LensDimensionTypes",
"description": "Primary dimension for grouping data. Mosaic charts support only one dimension."
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/LensBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional secondary breakdown for splitting the mosaic into sub-groups."
}
},
"required": [
"data_view",
"metric",
"dimension"
],
"title": "LensMosaicPanelConfig",
"type": "object"
},
"LensMultiTermsBreakdown": {
"additionalProperties": false,
"description": "Multi-field top-values breakdown with optional collapse aggregation.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "values",
"default": "values",
"title": "Type",
"type": "string"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of top terms to display.",
"title": "Size"
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/Sort"
},
{
"type": "null"
}
],
"default": null,
"description": "The sort configuration for the terms."
},
"show_other_bucket": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for terms not included in the top size. Defaults to `true`.",
"title": "Show Other Bucket"
},
"include_missing_values": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for documents with a missing value for the field. Defaults to `false`.",
"title": "Include Missing Values"
},
"include": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to include. Can be used with or without `include_is_regex`.",
"title": "Include"
},
"exclude": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to exclude. Can be used with or without `exclude_is_regex`.",
"title": "Exclude"
},
"include_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `include` list as regular expressions. Defaults to `false`.",
"title": "Include Is Regex"
},
"exclude_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `exclude` list as regular expressions. Defaults to `false`.",
"title": "Exclude Is Regex"
},
"fields": {
"description": "List of field names for multi-field aggregation. Requires at least 2 fields.",
"items": {
"type": "string"
},
"minItems": 2,
"title": "Fields",
"type": "array"
},
"collapse": {
"anyOf": [
{
"$ref": "#/$defs/CollapseAggregationEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Aggregate all breakdown values into a single bucket using this function (sum, avg, min, max)."
}
},
"required": [
"fields"
],
"title": "LensMultiTermsBreakdown",
"type": "object"
},
"LensMultiTermsDimension": {
"additionalProperties": false,
"description": "Represents a multi-field top values dimension configuration within a Lens chart.\n\nMulti-terms dimensions are used for aggregating data based on unique combinations\nof values across multiple fields.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "values",
"default": "values",
"title": "Type",
"type": "string"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of top terms to display.",
"title": "Size"
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/Sort"
},
{
"type": "null"
}
],
"default": null,
"description": "The sort configuration for the terms."
},
"show_other_bucket": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for terms not included in the top size. Defaults to `true`.",
"title": "Show Other Bucket"
},
"include_missing_values": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for documents with a missing value for the field. Defaults to `false`.",
"title": "Include Missing Values"
},
"include": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to include. Can be used with or without `include_is_regex`.",
"title": "Include"
},
"exclude": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to exclude. Can be used with or without `exclude_is_regex`.",
"title": "Exclude"
},
"include_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `include` list as regular expressions. Defaults to `false`.",
"title": "Include Is Regex"
},
"exclude_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `exclude` list as regular expressions. Defaults to `false`.",
"title": "Exclude Is Regex"
},
"fields": {
"description": "List of field names for multi-field aggregation. Requires at least 2 fields.",
"items": {
"type": "string"
},
"minItems": 2,
"title": "Fields",
"type": "array"
}
},
"required": [
"fields"
],
"title": "LensMultiTermsDimension",
"type": "object"
},
"LensOtherAggregatedMetric": {
"additionalProperties": false,
"description": "Represents various aggregated metric configurations within a Lens chart.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"description": "The aggregation type for the metric (e.g., 'min', 'max', 'median', 'average', 'standard_deviation').",
"enum": [
"min",
"max",
"median",
"average",
"standard_deviation"
],
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
}
},
"required": [
"aggregation",
"field"
],
"title": "LensOtherAggregatedMetric",
"type": "object"
},
"LensPanelConfig": {
"discriminator": {
"mapping": {
"area": "#/$defs/LensAreaPanelConfig",
"bar": "#/$defs/LensBarPanelConfig",
"datatable": "#/$defs/LensDatatablePanelConfig",
"gauge": "#/$defs/LensGaugePanelConfig",
"heatmap": "#/$defs/LensHeatmapPanelConfig",
"line": "#/$defs/LensLinePanelConfig",
"metric": "#/$defs/LensMetricPanelConfig",
"mosaic": "#/$defs/LensMosaicPanelConfig",
"pie": "#/$defs/LensPiePanelConfig",
"tagcloud": "#/$defs/LensTagcloudPanelConfig",
"treemap": "#/$defs/LensTreemapPanelConfig",
"waffle": "#/$defs/LensWafflePanelConfig"
},
"propertyName": "type"
},
"oneOf": [
{
"$ref": "#/$defs/LensMetricPanelConfig"
},
{
"$ref": "#/$defs/LensGaugePanelConfig"
},
{
"$ref": "#/$defs/LensHeatmapPanelConfig"
},
{
"$ref": "#/$defs/LensPiePanelConfig"
},
{
"$ref": "#/$defs/LensLinePanelConfig"
},
{
"$ref": "#/$defs/LensBarPanelConfig"
},
{
"$ref": "#/$defs/LensAreaPanelConfig"
},
{
"$ref": "#/$defs/LensTagcloudPanelConfig"
},
{
"$ref": "#/$defs/LensDatatablePanelConfig"
},
{
"$ref": "#/$defs/LensMosaicPanelConfig"
},
{
"$ref": "#/$defs/LensTreemapPanelConfig"
},
{
"$ref": "#/$defs/LensWafflePanelConfig"
}
]
},
"LensPercentileAggregatedMetric": {
"additionalProperties": false,
"description": "Represents a percentile metric configuration within a Lens chart.\n\nPercentile metrics are used to determine the value at a specific percentile in a data set.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "percentile",
"default": "percentile",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"percentile": {
"title": "Percentile",
"type": "integer"
}
},
"required": [
"field",
"percentile"
],
"title": "LensPercentileAggregatedMetric",
"type": "object"
},
"LensPercentileRankAggregatedMetric": {
"additionalProperties": false,
"description": "Represents a percentile rank metric configuration within a Lens chart.\n\nPercentile rank metrics are used to determine the rank of a value in a data set.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "percentile_rank",
"default": "percentile_rank",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"rank": {
"title": "Rank",
"type": "integer"
}
},
"required": [
"field",
"rank"
],
"title": "LensPercentileRankAggregatedMetric",
"type": "object"
},
"LensPieChart": {
"additionalProperties": false,
"description": "Represents a Pie chart configuration within a Lens panel.\n\nPie charts are used to visualize the proportion of categories.\n\nExamples:\n Simple pie chart showing traffic sources:\n ```yaml\n lens:\n type: pie\n data_view: \"logs-*\"\n breakdowns:\n - field: \"source.geo.country_name\"\n type: values\n metrics:\n - aggregation: count\n ```\n\n Pie chart with custom colors:\n ```yaml\n lens:\n type: pie\n data_view: \"metrics-*\"\n breakdowns:\n - field: \"resource.attributes.os.type\"\n type: values\n metrics:\n - aggregation: unique_count\n field: resource.attributes.host.name\n color:\n palette: 'eui_amsterdam_color_blind'\n assignments:\n - values: ['linux']\n color: '#00BF6F'\n - values: ['windows']\n color: '#006BB4'\n ```",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "pie",
"default": "pie",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/PieChartAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance, including donut size."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/PieLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color."
},
"data_view": {
"description": "The data view that determines the data for the pie chart.",
"title": "Data View",
"type": "string"
},
"metrics": {
"description": "Metrics that determine the size of slices.",
"items": {
"$ref": "#/$defs/LensDataMetricTypes"
},
"minItems": 1,
"title": "Metrics",
"type": "array"
},
"breakdowns": {
"description": "The breakdowns that determine the slices of the pie chart. First breakdown is primary, additional breakdowns are secondary.",
"items": {
"$ref": "#/$defs/LensBreakdownTypes"
},
"title": "Breakdowns",
"type": "array"
}
},
"required": [
"data_view",
"metrics",
"breakdowns"
],
"title": "LensPieChart",
"type": "object"
},
"LensPiePanelConfig": {
"additionalProperties": false,
"description": "Configuration for a Lens pie panel.",
"properties": {
"filters": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FilterTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of filters to apply to the panel.",
"title": "Filters"
},
"query": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The query to be executed."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "pie",
"default": "pie",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/PieChartAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance, including donut size."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/PieLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color."
},
"data_view": {
"description": "The data view that determines the data for the pie chart.",
"title": "Data View",
"type": "string"
},
"metrics": {
"description": "Metrics that determine the size of slices.",
"items": {
"$ref": "#/$defs/LensDataMetricTypes"
},
"minItems": 1,
"title": "Metrics",
"type": "array"
},
"breakdowns": {
"description": "The breakdowns that determine the slices of the pie chart. First breakdown is primary, additional breakdowns are secondary.",
"items": {
"$ref": "#/$defs/LensBreakdownTypes"
},
"title": "Breakdowns",
"type": "array"
}
},
"required": [
"data_view",
"metrics",
"breakdowns"
],
"title": "LensPiePanelConfig",
"type": "object"
},
"LensReferenceLineLayer": {
"additionalProperties": false,
"description": "Represents a reference line layer configuration for multi-layer panels.\n\nReference lines display static threshold values, SLA targets, or baseline values\non XY charts. They appear as horizontal or vertical lines with optional styling,\nlabels, and icons.\n\nUnlike data layers, reference lines don't query data - they display static values\nfor visual context and comparison.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "reference_line",
"default": "reference_line",
"description": "The type of layer. Always 'reference_line'.",
"title": "Type",
"type": "string"
},
"data_view": {
"description": "The data view to use for the layer (required for Kibana compatibility).",
"title": "Data View",
"type": "string"
},
"reference_lines": {
"description": "List of reference lines to display in this layer.",
"items": {
"$ref": "#/$defs/XYReferenceLine"
},
"title": "Reference Lines",
"type": "array"
}
},
"required": [
"data_view"
],
"title": "LensReferenceLineLayer",
"type": "object"
},
"LensStaticValue": {
"additionalProperties": false,
"description": "Represents a static numeric value metric in Lens charts.\n\nUsed to display a fixed numeric value rather than aggregating from data.\nCommonly used for gauge min/max/goal values or reference lines.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"value": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
}
],
"description": "The static numeric value to display.",
"title": "Value"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional label for the static value.",
"title": "Label"
}
},
"required": [
"value"
],
"title": "LensStaticValue",
"type": "object"
},
"LensSumAggregatedMetric": {
"additionalProperties": false,
"description": "Represents a sum metric configuration within a Lens chart.\n\nSum metrics are used to sum the values of a field.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "sum",
"default": "sum",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"exclude_zeros": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to exclude zero values from the sum. Kibana defaults to true if not specified.",
"title": "Exclude Zeros"
}
},
"required": [
"field"
],
"title": "LensSumAggregatedMetric",
"type": "object"
},
"LensTagcloudChart": {
"additionalProperties": false,
"description": "Represents a Tagcloud chart configuration within a Lens panel.\n\nTagcloud charts are used to visualize term frequency as word/tag clouds.\n\nExamples:\n Minimal tagcloud:\n ```yaml\n dashboards:\n - name: \"Log Analysis\"\n panels:\n - title: \"Top Error Messages\"\n size: { w: 48, h: 6 }\n lens:\n type: tagcloud\n data_view: \"logs-*\"\n dimension:\n type: values\n field: \"error.message\"\n metric:\n aggregation: count\n ```\n\n Advanced tagcloud with appearance customization:\n ```yaml\n dashboards:\n - name: \"Advanced Tag Cloud\"\n panels:\n - title: \"Service Labels\"\n size: { w: 48, h: 8 }\n lens:\n type: tagcloud\n data_view: \"logs-*\"\n dimension:\n type: values\n field: \"service.name\"\n metric:\n aggregation: count\n appearance:\n min_font_size: 12\n max_font_size: 96\n orientation: \"multiple\"\n labels:\n visible: false\n color:\n palette: \"kibana_palette\"\n ```",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "tagcloud",
"default": "tagcloud",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/TagcloudAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart colors."
},
"data_view": {
"description": "The data view that determines the data for the tagcloud chart.",
"title": "Data View",
"type": "string"
},
"dimension": {
"$ref": "#/$defs/LensDimensionTypes",
"description": "The dimension for grouping (terms). This determines the tags shown in the cloud."
},
"metric": {
"$ref": "#/$defs/LensDataMetricTypes",
"description": "The metric for sizing. This determines the size of each tag."
}
},
"required": [
"data_view",
"dimension",
"metric"
],
"title": "LensTagcloudChart",
"type": "object"
},
"LensTagcloudPanelConfig": {
"additionalProperties": false,
"description": "Configuration for a Lens tagcloud panel.",
"properties": {
"filters": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FilterTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of filters to apply to the panel.",
"title": "Filters"
},
"query": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The query to be executed."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "tagcloud",
"default": "tagcloud",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/TagcloudAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart colors."
},
"data_view": {
"description": "The data view that determines the data for the tagcloud chart.",
"title": "Data View",
"type": "string"
},
"dimension": {
"$ref": "#/$defs/LensDimensionTypes",
"description": "The dimension for grouping (terms). This determines the tags shown in the cloud."
},
"metric": {
"$ref": "#/$defs/LensDataMetricTypes",
"description": "The metric for sizing. This determines the size of each tag."
}
},
"required": [
"data_view",
"dimension",
"metric"
],
"title": "LensTagcloudPanelConfig",
"type": "object"
},
"LensTermsBreakdown": {
"additionalProperties": false,
"description": "Top-values breakdown with optional collapse aggregation.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "values",
"default": "values",
"title": "Type",
"type": "string"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of top terms to display.",
"title": "Size"
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/Sort"
},
{
"type": "null"
}
],
"default": null,
"description": "The sort configuration for the terms."
},
"show_other_bucket": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for terms not included in the top size. Defaults to `true`.",
"title": "Show Other Bucket"
},
"include_missing_values": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for documents with a missing value for the field. Defaults to `false`.",
"title": "Include Missing Values"
},
"include": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to include. Can be used with or without `include_is_regex`.",
"title": "Include"
},
"exclude": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to exclude. Can be used with or without `exclude_is_regex`.",
"title": "Exclude"
},
"include_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `include` list as regular expressions. Defaults to `false`.",
"title": "Include Is Regex"
},
"exclude_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `exclude` list as regular expressions. Defaults to `false`.",
"title": "Exclude Is Regex"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
},
"collapse": {
"anyOf": [
{
"$ref": "#/$defs/CollapseAggregationEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Aggregate all breakdown values into a single bucket using this function (sum, avg, min, max)."
}
},
"required": [
"field"
],
"title": "LensTermsBreakdown",
"type": "object"
},
"LensTermsDimension": {
"additionalProperties": false,
"description": "Represents a single-field top values dimension configuration within a Lens chart.\n\nTerms dimensions are used for aggregating data based on unique values of a single field.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "values",
"default": "values",
"title": "Type",
"type": "string"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of top terms to display.",
"title": "Size"
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/Sort"
},
{
"type": "null"
}
],
"default": null,
"description": "The sort configuration for the terms."
},
"show_other_bucket": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for terms not included in the top size. Defaults to `true`.",
"title": "Show Other Bucket"
},
"include_missing_values": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for documents with a missing value for the field. Defaults to `false`.",
"title": "Include Missing Values"
},
"include": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to include. Can be used with or without `include_is_regex`.",
"title": "Include"
},
"exclude": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to exclude. Can be used with or without `exclude_is_regex`.",
"title": "Exclude"
},
"include_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `include` list as regular expressions. Defaults to `false`.",
"title": "Include Is Regex"
},
"exclude_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `exclude` list as regular expressions. Defaults to `false`.",
"title": "Exclude Is Regex"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
}
},
"required": [
"field"
],
"title": "LensTermsDimension",
"type": "object"
},
"LensTreemapPanelConfig": {
"additionalProperties": false,
"description": "Configuration for a Lens treemap panel.",
"properties": {
"filters": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FilterTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of filters to apply to the panel.",
"title": "Filters"
},
"query": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The query to be executed."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "treemap",
"default": "treemap",
"description": "The type of chart, which is 'treemap' for this visualization.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/TreemapAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/TreemapLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color."
},
"data_view": {
"description": "The data view that determines the data for the treemap chart.",
"title": "Data View",
"type": "string"
},
"metric": {
"$ref": "#/$defs/LensDataMetricTypes",
"description": "Metric that determines the rectangle sizes. Treemap supports only one metric."
},
"breakdowns": {
"description": "Breakdowns that determine treemap grouping levels. Maximum 2 breakdowns supported.",
"items": {
"$ref": "#/$defs/LensBreakdownTypes"
},
"maxItems": 2,
"title": "Breakdowns",
"type": "array"
}
},
"required": [
"data_view",
"metric",
"breakdowns"
],
"title": "LensTreemapPanelConfig",
"type": "object"
},
"LensWafflePanelConfig": {
"additionalProperties": false,
"description": "Configuration for a Lens waffle panel.",
"properties": {
"filters": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FilterTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of filters to apply to the panel.",
"title": "Filters"
},
"query": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The query to be executed."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "waffle",
"default": "waffle",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/WaffleAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/WaffleLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color."
},
"data_view": {
"description": "The data view that determines the data for the waffle chart.",
"title": "Data View",
"type": "string"
},
"metric": {
"$ref": "#/$defs/LensDataMetricTypes",
"description": "Metric that determines the size of squares. Waffle charts support only one metric."
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/LensBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional breakdown for grouping data. Waffle charts support only one breakdown."
}
},
"required": [
"data_view",
"metric"
],
"title": "LensWafflePanelConfig",
"type": "object"
},
"LensXYMetricTypes": {
"anyOf": [
{
"$ref": "#/$defs/XYLensFormulaMetric"
},
{
"$ref": "#/$defs/XYLensCountAggregatedMetric"
},
{
"$ref": "#/$defs/XYLensSumAggregatedMetric"
},
{
"$ref": "#/$defs/XYLensOtherAggregatedMetric"
},
{
"$ref": "#/$defs/XYLensLastValueAggregatedMetric"
},
{
"$ref": "#/$defs/XYLensPercentileRankAggregatedMetric"
},
{
"$ref": "#/$defs/XYLensPercentileAggregatedMetric"
}
]
},
"LineChartAppearance": {
"additionalProperties": false,
"description": "Represents line chart appearance formatting options.\n\nExtends BaseXYChartAppearance to include line-specific options.",
"properties": {
"x_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the X-axis."
},
"y_left_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the left Y-axis."
},
"y_right_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the right Y-axis."
},
"values": {
"anyOf": [
{
"$ref": "#/$defs/XYValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for value labels on data points."
},
"missing_values": {
"anyOf": [
{
"enum": [
"none",
"linear",
"carry",
"lookahead",
"average",
"nearest"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "How to handle missing data points. Controls interpolation for gaps in your data.",
"title": "Missing Values"
},
"show_as_dotted": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, visually distinguish interpolated data from real data points. Defaults to `false`.",
"title": "Show As Dotted"
},
"end_values": {
"anyOf": [
{
"enum": [
"none",
"zero",
"nearest"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "How to handle the end of the time range in line/area charts.",
"title": "End Values"
},
"line_style": {
"anyOf": [
{
"enum": [
"linear",
"monotone-x",
"step-after"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The line style for line/area charts. Only 3 types are supported by Kibana: linear (straight), monotone-x (smooth), step-after (stepped).",
"title": "Line Style"
},
"show_current_time_marker": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show a vertical line at the current time in time series charts.",
"title": "Show Current Time Marker"
},
"hide_endzones": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to hide end zones in time series charts (areas where data is incomplete).",
"title": "Hide Endzones"
}
},
"title": "LineChartAppearance",
"type": "object"
},
"LuceneQuery": {
"additionalProperties": false,
"description": "Represents a Lucene query configuration.\n\nLucene provides a more powerful and flexible, but less friendly, syntax for querying data compared to KQL.",
"properties": {
"lucene": {
"description": "The Lucene query string to apply.",
"title": "Lucene",
"type": "string"
}
},
"required": [
"lucene"
],
"title": "LuceneQuery",
"type": "object"
},
"MetricAppearance": {
"additionalProperties": false,
"description": "Grouped appearance configuration for metric chart visualizations.\n\nGroups all visual styling options for metric charts including icons, progress bars,\nlayout, and font configuration.",
"properties": {
"primary": {
"anyOf": [
{
"$ref": "#/$defs/MetricPrimaryAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary metric appearance options."
},
"secondary": {
"anyOf": [
{
"$ref": "#/$defs/MetricSecondaryAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Secondary metric appearance options."
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/MetricBreakdownAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Breakdown layout options."
}
},
"title": "MetricAppearance",
"type": "object"
},
"MetricBackgroundChart": {
"additionalProperties": false,
"description": "Background chart options for the primary metric value.",
"properties": {
"type": {
"default": "line",
"description": "Background chart mode. `none` hides the background chart.",
"enum": [
"line",
"bar",
"none"
],
"title": "Type",
"type": "string"
},
"direction": {
"anyOf": [
{
"enum": [
"horizontal",
"vertical"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Bar direction. Only valid when `type` is `bar`.",
"title": "Direction"
}
},
"title": "MetricBackgroundChart",
"type": "object"
},
"MetricBreakdownAppearance": {
"additionalProperties": false,
"description": "Breakdown layout options.",
"properties": {
"column_count": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum number of columns when displaying broken-down metric values.",
"title": "Column Count"
}
},
"title": "MetricBreakdownAppearance",
"type": "object"
},
"MetricChartColor": {
"additionalProperties": false,
"description": "Color settings for metric chart metrics, including thresholds and application mode.",
"properties": {
"apply_to": {
"anyOf": [
{
"enum": [
"value",
"background"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls where metric colors are applied: value text or background.",
"title": "Apply To"
},
"range_type": {
"default": "number",
"description": "How threshold values are interpreted by Kibana.",
"enum": [
"number",
"percent"
],
"title": "Range Type",
"type": "string"
},
"range_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": 0,
"description": "Optional lower bound for the palette domain.",
"title": "Range Min"
},
"range_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional upper bound for the palette domain.",
"title": "Range Max"
},
"thresholds": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ColorThreshold"
},
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Ordered threshold bands used to build color palettes.",
"title": "Thresholds"
}
},
"title": "MetricChartColor",
"type": "object"
},
"MetricLensCountAggregatedMetric": {
"additionalProperties": false,
"description": "Metric chart count metric with color options.",
"properties": {
"color": {
"anyOf": [
{
"$ref": "#/$defs/MetricChartColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color range mapping and application mode for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"default": "count",
"enum": [
"count",
"unique_count"
],
"title": "Aggregation",
"type": "string"
},
"field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The field to count. If not provided, the count will be of all documents in the data view.",
"title": "Field"
},
"exclude_zeros": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to exclude zero values from the count. Kibana defaults to true if not specified.",
"title": "Exclude Zeros"
}
},
"title": "MetricLensCountAggregatedMetric",
"type": "object"
},
"MetricLensFormulaMetric": {
"additionalProperties": false,
"description": "Metric chart formula metric with color options.",
"properties": {
"color": {
"anyOf": [
{
"$ref": "#/$defs/MetricChartColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color range mapping and application mode for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"formula": {
"description": "The formula string to be evaluated for this metric.",
"title": "Formula",
"type": "string"
}
},
"required": [
"formula"
],
"title": "MetricLensFormulaMetric",
"type": "object"
},
"MetricLensLastValueAggregatedMetric": {
"additionalProperties": false,
"description": "Metric chart last value metric with color options.",
"properties": {
"color": {
"anyOf": [
{
"$ref": "#/$defs/MetricChartColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color range mapping and application mode for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "last_value",
"default": "last_value",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"date_field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The field used to determine the 'last' value.",
"title": "Date Field"
}
},
"required": [
"field"
],
"title": "MetricLensLastValueAggregatedMetric",
"type": "object"
},
"MetricLensOtherAggregatedMetric": {
"additionalProperties": false,
"description": "Metric chart aggregated metric with color options.",
"properties": {
"color": {
"anyOf": [
{
"$ref": "#/$defs/MetricChartColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color range mapping and application mode for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"description": "The aggregation type for the metric (e.g., 'min', 'max', 'median', 'average', 'standard_deviation').",
"enum": [
"min",
"max",
"median",
"average",
"standard_deviation"
],
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
}
},
"required": [
"aggregation",
"field"
],
"title": "MetricLensOtherAggregatedMetric",
"type": "object"
},
"MetricLensPercentileAggregatedMetric": {
"additionalProperties": false,
"description": "Metric chart percentile metric with color options.",
"properties": {
"color": {
"anyOf": [
{
"$ref": "#/$defs/MetricChartColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color range mapping and application mode for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "percentile",
"default": "percentile",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"percentile": {
"title": "Percentile",
"type": "integer"
}
},
"required": [
"field",
"percentile"
],
"title": "MetricLensPercentileAggregatedMetric",
"type": "object"
},
"MetricLensPercentileRankAggregatedMetric": {
"additionalProperties": false,
"description": "Metric chart percentile rank metric with color options.",
"properties": {
"color": {
"anyOf": [
{
"$ref": "#/$defs/MetricChartColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color range mapping and application mode for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "percentile_rank",
"default": "percentile_rank",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"rank": {
"title": "Rank",
"type": "integer"
}
},
"required": [
"field",
"rank"
],
"title": "MetricLensPercentileRankAggregatedMetric",
"type": "object"
},
"MetricLensSumAggregatedMetric": {
"additionalProperties": false,
"description": "Metric chart sum metric with color options.",
"properties": {
"color": {
"anyOf": [
{
"$ref": "#/$defs/MetricChartColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color range mapping and application mode for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "sum",
"default": "sum",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"exclude_zeros": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to exclude zero values from the sum. Kibana defaults to true if not specified.",
"title": "Exclude Zeros"
}
},
"required": [
"field"
],
"title": "MetricLensSumAggregatedMetric",
"type": "object"
},
"MetricPrimaryAppearance": {
"additionalProperties": false,
"description": "Primary metric appearance options.",
"properties": {
"icon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Icon identifier to display alongside the primary metric value.",
"title": "Icon"
},
"icon_position": {
"anyOf": [
{
"enum": [
"left",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Horizontal icon alignment relative to the primary metric value.",
"title": "Icon Position"
},
"background_chart": {
"anyOf": [
{
"$ref": "#/$defs/MetricBackgroundChart"
},
{
"type": "null"
}
],
"default": null,
"description": "Background chart options for the primary metric value."
},
"font_size": {
"anyOf": [
{
"enum": [
"default",
"fit",
"custom"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Font size mode for the primary metric value.",
"title": "Font Size"
},
"position": {
"anyOf": [
{
"enum": [
"top",
"bottom"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical position of the primary metric value within the panel.",
"title": "Position"
},
"alignment": {
"anyOf": [
{
"enum": [
"left",
"center",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text alignment for the primary metric value.",
"title": "Alignment"
}
},
"title": "MetricPrimaryAppearance",
"type": "object"
},
"MetricSecondaryAppearance": {
"additionalProperties": false,
"description": "Secondary metric appearance options.",
"properties": {
"alignment": {
"anyOf": [
{
"enum": [
"left",
"center",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text alignment for the secondary metric value.",
"title": "Alignment"
},
"label": {
"anyOf": [
{
"$ref": "#/$defs/MetricSecondaryLabelAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom secondary label configuration."
}
},
"title": "MetricSecondaryAppearance",
"type": "object"
},
"MetricSecondaryLabelAppearance": {
"additionalProperties": false,
"description": "Secondary metric label appearance options.",
"properties": {
"text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom label text for the secondary metric, overriding its default label.",
"title": "Text"
},
"position": {
"anyOf": [
{
"enum": [
"before",
"after"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of secondary label relative to the metric value.",
"title": "Position"
}
},
"title": "MetricSecondaryLabelAppearance",
"type": "object"
},
"MetricTitlesAndText": {
"additionalProperties": false,
"description": "Titles and text formatting options for metric charts.",
"properties": {
"subtitle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom subtitle text displayed below the metric title.",
"title": "Subtitle"
},
"alignment": {
"anyOf": [
{
"enum": [
"left",
"center",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text alignment for the metric title and subtitle.",
"title": "Alignment"
},
"weight": {
"anyOf": [
{
"enum": [
"bold",
"normal",
"lighter"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Font weight for the metric title.",
"title": "Weight"
}
},
"title": "MetricTitlesAndText",
"type": "object"
},
"MosaicAppearance": {
"additionalProperties": false,
"description": "Formatting options for value labels.",
"properties": {
"values": {
"anyOf": [
{
"$ref": "#/$defs/MosaicValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for numeric values."
}
},
"title": "MosaicAppearance",
"type": "object"
},
"MosaicLegend": {
"additionalProperties": false,
"description": "Represents legend formatting options for mosaic charts.",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
},
"truncate_labels": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines to truncate the legend labels to. Kibana defaults to 1 if not specified. Set to 0 to disable truncation.",
"title": "Truncate Labels"
},
"nested": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend in nested format for multi-level mosaic charts. Kibana defaults to False if not specified.",
"title": "Nested"
},
"show_single_series": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend when there is only one series. Kibana defaults to false if not specified.",
"title": "Show Single Series"
}
},
"title": "MosaicLegend",
"type": "object"
},
"MosaicValuesConfig": {
"additionalProperties": false,
"description": "Formatting options for value labels.",
"properties": {
"format": {
"anyOf": [
{
"enum": [
"percent",
"value",
"hide"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls how values are displayed in the mosaic chart. Kibana defaults to 'percent' if not specified.",
"title": "Format"
},
"decimal_places": {
"anyOf": [
{
"maximum": 10,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the number of decimal places for values in the mosaic chart. Kibana defaults to 2 if not specified.",
"title": "Decimal Places"
}
},
"title": "MosaicValuesConfig",
"type": "object"
},
"MultiLayerChartTypes": {
"anyOf": [
{
"$ref": "#/$defs/LensPieChart"
},
{
"$ref": "#/$defs/LensLineChart"
},
{
"$ref": "#/$defs/LensBarChart"
},
{
"$ref": "#/$defs/LensAreaChart"
},
{
"$ref": "#/$defs/LensTagcloudChart"
},
{
"$ref": "#/$defs/LensReferenceLineLayer"
}
]
},
"NegateFilter": {
"additionalProperties": false,
"description": "Represents a negated filter configuration in the Config schema.\n\nThis allows for excluding documents that match the nested filter.\n\nNote: Unlike other filter types, NegateFilter extends BaseCfgModel directly\nrather than BaseFilter, so it does not support 'alias' or 'disabled' fields.\nThis is intentional - negation is a logical modifier that wraps another filter,\nand aliasing/disabling should be applied to the wrapped filter itself.",
"properties": {
"not": {
"$ref": "#/$defs/FilterTypes",
"description": "The filter to negate. Can be a phrase, phrases, or range filter."
}
},
"required": [
"not"
],
"title": "NegateFilter",
"type": "object"
},
"OrFilter": {
"additionalProperties": false,
"description": "Represents an 'or' filter configuration in the Config schema.\n\nThis filter matches documents that satisfy at least one of the specified filters.",
"properties": {
"alias": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional alias for the filter, used for display purposes.",
"title": "Alias"
},
"disabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Indicates whether the filter is disabled. If `true`, the filter will not be applied.",
"title": "Disabled"
},
"or": {
"description": "A list of filters. At least one filter must match for a document to be included.",
"items": {
"$ref": "#/$defs/FilterTypes"
},
"title": "Or",
"type": "array"
}
},
"required": [
"or"
],
"title": "OrFilter",
"type": "object"
},
"PhraseFilter": {
"additionalProperties": false,
"description": "Represents a 'phrase' filter configuration in the Config schema.\n\nThis filter matches documents where a specific field contains an exact phrase.",
"properties": {
"alias": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional alias for the filter, used for display purposes.",
"title": "Alias"
},
"disabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Indicates whether the filter is disabled. If `true`, the filter will not be applied.",
"title": "Disabled"
},
"field": {
"description": "The field name to apply the filter to.",
"title": "Field",
"type": "string"
},
"equals": {
"$ref": "#/$defs/FilterScalar",
"description": "The exact phrase value that the field must match."
}
},
"required": [
"field",
"equals"
],
"title": "PhraseFilter",
"type": "object"
},
"PhrasesFilter": {
"additionalProperties": false,
"description": "Represents a 'phrases' filter configuration in the Config schema.\n\nThis filter matches documents where a specific field contains one or more\nof the specified phrases.",
"properties": {
"alias": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional alias for the filter, used for display purposes.",
"title": "Alias"
},
"disabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Indicates whether the filter is disabled. If `true`, the filter will not be applied.",
"title": "Disabled"
},
"field": {
"description": "The field name to apply the filter to.",
"title": "Field",
"type": "string"
},
"in": {
"description": "A list of phrases. Documents must match at least one of these phrases in the specified field.",
"items": {
"$ref": "#/$defs/FilterScalar"
},
"title": "In",
"type": "array"
}
},
"required": [
"field",
"in"
],
"title": "PhrasesFilter",
"type": "object"
},
"PieCategoriesConfig": {
"additionalProperties": false,
"description": "Formatting options for category labels.",
"properties": {
"position": {
"anyOf": [
{
"$ref": "#/$defs/PieSliceLabelsEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the visibility of category labels in the pie chart. Kibana defaults to 'auto' if not specified."
}
},
"title": "PieCategoriesConfig",
"type": "object"
},
"PieChartAppearance": {
"additionalProperties": false,
"description": "Represents chart appearance formatting options for Pie charts.",
"properties": {
"donut": {
"anyOf": [
{
"enum": [
"small",
"medium",
"large"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the size of the donut hole in the pie chart. Kibana defaults to 'medium' if not specified.",
"title": "Donut"
},
"categories": {
"anyOf": [
{
"$ref": "#/$defs/PieCategoriesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for category labels."
},
"values": {
"anyOf": [
{
"$ref": "#/$defs/PieValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for numeric values."
}
},
"title": "PieChartAppearance",
"type": "object"
},
"PieLegend": {
"additionalProperties": false,
"description": "Represents legend formatting options for pie charts.",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
},
"truncate_labels": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines to truncate the legend labels to. Kibana defaults to 1 if not specified. Set to 0 to disable truncation.",
"title": "Truncate Labels"
},
"nested": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend in nested format for multi-level pie charts. Kibana defaults to False if not specified.",
"title": "Nested"
},
"show_single_series": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend when there is only one series. Kibana defaults to false if not specified.",
"title": "Show Single Series"
}
},
"title": "PieLegend",
"type": "object"
},
"PieSliceLabelsEnum": {
"description": "Represents the possible values for slice labels in a pie chart.",
"enum": [
"hide",
"inside",
"auto"
],
"title": "PieSliceLabelsEnum",
"type": "string"
},
"PieSliceValuesEnum": {
"description": "Represents the possible values for slice values in a pie chart.",
"enum": [
"hide",
"integer",
"percent"
],
"title": "PieSliceValuesEnum",
"type": "string"
},
"PieValuesConfig": {
"additionalProperties": false,
"description": "Formatting options for numeric values.",
"properties": {
"format": {
"anyOf": [
{
"$ref": "#/$defs/PieSliceValuesEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the display of values in the pie chart. Kibana defaults to percent if not specified."
},
"decimal_places": {
"anyOf": [
{
"maximum": 10,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the number of decimal places for values in the pie chart. Kibana defaults to 2 if not specified.",
"title": "Decimal Places"
}
},
"title": "PieValuesConfig",
"type": "object"
},
"Position": {
"additionalProperties": false,
"description": "Panel position configuration.\n\nDetermines the x/y coordinates of a panel on the dashboard grid.\nIf not specified, the panel will be auto-positioned.",
"properties": {
"x": {
"anyOf": [
{
"maximum": 48,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The horizontal starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "X"
},
"y": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The vertical starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "Y"
}
},
"title": "Position",
"type": "object"
},
"RangeFilter": {
"additionalProperties": false,
"description": "Represents a 'range' filter configuration in the Config schema.\n\nThis filter matches documents where a numeric or date field falls within a specified range.",
"properties": {
"alias": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional alias for the filter, used for display purposes.",
"title": "Alias"
},
"disabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Indicates whether the filter is disabled. If `true`, the filter will not be applied.",
"title": "Disabled"
},
"field": {
"description": "The field name to apply the filter to.",
"title": "Field",
"type": "string"
},
"gte": {
"anyOf": [
{
"$ref": "#/$defs/FilterScalar"
},
{
"type": "null"
}
],
"default": null,
"description": "Greater than or equal to value for the range filter."
},
"lte": {
"anyOf": [
{
"$ref": "#/$defs/FilterScalar"
},
{
"type": "null"
}
],
"default": null,
"description": "Less than or equal to value for the range filter."
},
"lt": {
"anyOf": [
{
"$ref": "#/$defs/FilterScalar"
},
{
"type": "null"
}
],
"default": null,
"description": "Less than value for the range filter."
},
"gt": {
"anyOf": [
{
"$ref": "#/$defs/FilterScalar"
},
{
"type": "null"
}
],
"default": null,
"description": "Greater than value for the range filter."
}
},
"required": [
"field"
],
"title": "RangeFilter",
"type": "object"
},
"ReferenceLineIcon": {
"enum": [
"empty",
"alert",
"asterisk",
"bell",
"bolt",
"bug",
"circle",
"editor_comment",
"flag",
"heart",
"map_marker",
"pin_filled",
"star_empty",
"tag",
"triangle"
],
"type": "string"
},
"Size": {
"additionalProperties": false,
"description": "Panel size configuration.\n\nDetermines the width and height of a panel on the dashboard grid.\nWidth accepts semantic values ('whole', 'half', etc.) or integers.",
"properties": {
"w": {
"anyOf": [
{
"type": "integer"
},
{
"enum": [
"whole",
"half",
"third",
"quarter",
"sixth",
"eighth"
],
"type": "string"
}
],
"default": 12,
"description": "The width of the panel in grid units.\n\nDefaults to 12 (quarter width). Accepts semantic values ('whole', 'half', 'third', 'quarter', 'sixth', 'eighth') or integers (1-48).",
"title": "W"
},
"h": {
"default": 8,
"description": "The height of the panel in grid units. Defaults to 8.",
"exclusiveMinimum": 0,
"title": "H",
"type": "integer"
}
},
"title": "Size",
"type": "object"
},
"Sort": {
"additionalProperties": false,
"description": "Represents a sort configuration in the Config schema.",
"properties": {
"by": {
"description": "The field name to sort the data by.",
"title": "By",
"type": "string"
},
"direction": {
"description": "The sort direction. Must be either 'asc' for ascending or 'desc' for descending.",
"enum": [
"asc",
"desc"
],
"title": "Direction",
"type": "string"
}
},
"required": [
"by",
"direction"
],
"title": "Sort",
"type": "object"
},
"TagcloudAppearance": {
"additionalProperties": false,
"description": "Appearance settings for tagcloud.",
"properties": {
"min_font_size": {
"anyOf": [
{
"maximum": 100,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": 12,
"description": "Minimum font size for tags. Defaults to 12.",
"title": "Min Font Size"
},
"max_font_size": {
"anyOf": [
{
"maximum": 200,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": 72,
"description": "Maximum font size for tags. Defaults to 72.",
"title": "Max Font Size"
},
"orientation": {
"anyOf": [
{
"$ref": "#/$defs/TagcloudOrientationEnum"
},
{
"type": "null"
}
],
"default": "single",
"description": "Text orientation configuration. Defaults to 'single'."
},
"labels": {
"anyOf": [
{
"$ref": "#/$defs/TagcloudLabelsConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Label visibility configuration."
}
},
"title": "TagcloudAppearance",
"type": "object"
},
"TagcloudLabelsConfig": {
"additionalProperties": false,
"description": "Label visibility settings for tagcloud.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": true,
"description": "Toggle for label visibility. Defaults to True.",
"title": "Visible"
}
},
"title": "TagcloudLabelsConfig",
"type": "object"
},
"TagcloudOrientationEnum": {
"description": "Text orientation options for tagcloud visualizations.\n\nControls how tags are rotated in the word cloud display.",
"enum": [
"single",
"right angled",
"multiple"
],
"title": "TagcloudOrientationEnum",
"type": "string"
},
"TreemapAppearance": {
"additionalProperties": false,
"description": "Formatting options for treemap appearance.",
"properties": {
"categories": {
"anyOf": [
{
"$ref": "#/$defs/TreemapCategoriesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for category labels."
},
"values": {
"anyOf": [
{
"$ref": "#/$defs/TreemapValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for numeric values."
}
},
"title": "TreemapAppearance",
"type": "object"
},
"TreemapCategoriesConfig": {
"additionalProperties": false,
"description": "Formatting options for category labels.",
"properties": {
"position": {
"anyOf": [
{
"$ref": "#/$defs/TreemapSliceLabelsEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the visibility of category labels. Defaults to show when not specified."
}
},
"title": "TreemapCategoriesConfig",
"type": "object"
},
"TreemapLegend": {
"additionalProperties": false,
"description": "Represents legend formatting options for treemap charts.",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
},
"truncate_labels": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines to truncate the legend labels to. Kibana defaults to 1 if not specified. Set to 0 to disable truncation.",
"title": "Truncate Labels"
},
"nested": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend in nested format for multi-level pie charts. Kibana defaults to False if not specified.",
"title": "Nested"
},
"show_single_series": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend when there is only one series. Kibana defaults to false if not specified.",
"title": "Show Single Series"
}
},
"title": "TreemapLegend",
"type": "object"
},
"TreemapSliceLabelsEnum": {
"description": "Represents the possible values for treemap slice labels.",
"enum": [
"hide",
"show"
],
"title": "TreemapSliceLabelsEnum",
"type": "string"
},
"TreemapValuesConfig": {
"additionalProperties": false,
"description": "Formatting options for numeric values.",
"properties": {
"format": {
"anyOf": [
{
"$ref": "#/$defs/PieSliceValuesEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the display of values in treemap rectangles. Defaults to percent."
},
"decimal_places": {
"anyOf": [
{
"maximum": 10,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the number of decimal places for values.",
"title": "Decimal Places"
}
},
"title": "TreemapValuesConfig",
"type": "object"
},
"UrlDrilldown": {
"additionalProperties": false,
"description": "URL drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"url": {
"description": "Target URL template. Can include Kibana template variables.",
"title": "Url",
"type": "string"
},
"new_tab": {
"default": false,
"description": "Whether to open the URL in a new tab. Defaults to False.",
"title": "New Tab",
"type": "boolean"
},
"encode_url": {
"default": true,
"description": "Whether to URL-encode the template variables. Defaults to True.",
"title": "Encode Url",
"type": "boolean"
}
},
"required": [
"name",
"url"
],
"title": "UrlDrilldown",
"type": "object"
},
"WaffleAppearance": {
"additionalProperties": false,
"description": "Formatting options for value labels.",
"properties": {
"values": {
"anyOf": [
{
"$ref": "#/$defs/WaffleValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for numeric values."
}
},
"title": "WaffleAppearance",
"type": "object"
},
"WaffleLegend": {
"additionalProperties": false,
"description": "Represents legend formatting options for waffle charts.",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
},
"truncate_labels": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines to truncate the legend labels to. Kibana defaults to 1 if not specified. Set to 0 to disable truncation.",
"title": "Truncate Labels"
},
"nested": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend in nested format for multi-level waffle charts. Kibana defaults to False if not specified.",
"title": "Nested"
},
"show_single_series": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend when there is only one series. Kibana defaults to false if not specified.",
"title": "Show Single Series"
}
},
"title": "WaffleLegend",
"type": "object"
},
"WaffleValuesConfig": {
"additionalProperties": false,
"description": "Formatting options for value labels.",
"properties": {
"format": {
"anyOf": [
{
"enum": [
"percent",
"value",
"hide"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls how values are displayed in the waffle chart. Kibana defaults to 'percent' if not specified.",
"title": "Format"
},
"decimal_places": {
"anyOf": [
{
"maximum": 10,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the number of decimal places for values in the waffle chart. Kibana defaults to 2 if not specified.",
"title": "Decimal Places"
}
},
"title": "WaffleValuesConfig",
"type": "object"
},
"XYLegend": {
"additionalProperties": false,
"description": "Represents legend formatting options for XY charts.",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
},
"show_single_series": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend when there is only one series. Kibana defaults to false if not specified.",
"title": "Show Single Series"
},
"truncate_labels": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines to truncate legend labels to. Set to 0 to disable truncation. Kibana defaults to 1 if not specified.",
"title": "Truncate Labels"
}
},
"title": "XYLegend",
"type": "object"
},
"XYLensCountAggregatedMetric": {
"additionalProperties": false,
"description": "XY chart count metric with appearance options.\n\nExtends LensCountAggregatedMetric to include axis and color configuration\nfor use in XY charts.",
"properties": {
"axis": {
"anyOf": [
{
"enum": [
"left",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Which Y-axis to assign this metric to ('left' or 'right').",
"title": "Axis"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom color for this metric series (hex color code, e.g., '#2196F3').",
"title": "Color"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"default": "count",
"enum": [
"count",
"unique_count"
],
"title": "Aggregation",
"type": "string"
},
"field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The field to count. If not provided, the count will be of all documents in the data view.",
"title": "Field"
},
"exclude_zeros": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to exclude zero values from the count. Kibana defaults to true if not specified.",
"title": "Exclude Zeros"
}
},
"title": "XYLensCountAggregatedMetric",
"type": "object"
},
"XYLensFormulaMetric": {
"additionalProperties": false,
"description": "XY chart formula metric with appearance options.\n\nExtends LensFormulaMetric to include axis and color configuration\nfor use in XY charts.",
"properties": {
"axis": {
"anyOf": [
{
"enum": [
"left",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Which Y-axis to assign this metric to ('left' or 'right').",
"title": "Axis"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom color for this metric series (hex color code, e.g., '#2196F3').",
"title": "Color"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"formula": {
"description": "The formula string to be evaluated for this metric.",
"title": "Formula",
"type": "string"
}
},
"required": [
"formula"
],
"title": "XYLensFormulaMetric",
"type": "object"
},
"XYLensLastValueAggregatedMetric": {
"additionalProperties": false,
"description": "XY chart last value metric with appearance options.\n\nExtends LensLastValueAggregatedMetric to include axis and color configuration\nfor use in XY charts.",
"properties": {
"axis": {
"anyOf": [
{
"enum": [
"left",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Which Y-axis to assign this metric to ('left' or 'right').",
"title": "Axis"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom color for this metric series (hex color code, e.g., '#2196F3').",
"title": "Color"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "last_value",
"default": "last_value",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"date_field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The field used to determine the 'last' value.",
"title": "Date Field"
}
},
"required": [
"field"
],
"title": "XYLensLastValueAggregatedMetric",
"type": "object"
},
"XYLensOtherAggregatedMetric": {
"additionalProperties": false,
"description": "XY chart aggregated metric with appearance options.\n\nExtends LensOtherAggregatedMetric to include axis and color configuration\nfor use in XY charts. Supports min, max, median, and average aggregations.",
"properties": {
"axis": {
"anyOf": [
{
"enum": [
"left",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Which Y-axis to assign this metric to ('left' or 'right').",
"title": "Axis"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom color for this metric series (hex color code, e.g., '#2196F3').",
"title": "Color"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"description": "The aggregation type for the metric (e.g., 'min', 'max', 'median', 'average', 'standard_deviation').",
"enum": [
"min",
"max",
"median",
"average",
"standard_deviation"
],
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
}
},
"required": [
"aggregation",
"field"
],
"title": "XYLensOtherAggregatedMetric",
"type": "object"
},
"XYLensPercentileAggregatedMetric": {
"additionalProperties": false,
"description": "XY chart percentile metric with appearance options.\n\nExtends LensPercentileAggregatedMetric to include axis and color configuration\nfor use in XY charts.",
"properties": {
"axis": {
"anyOf": [
{
"enum": [
"left",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Which Y-axis to assign this metric to ('left' or 'right').",
"title": "Axis"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom color for this metric series (hex color code, e.g., '#2196F3').",
"title": "Color"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "percentile",
"default": "percentile",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"percentile": {
"title": "Percentile",
"type": "integer"
}
},
"required": [
"field",
"percentile"
],
"title": "XYLensPercentileAggregatedMetric",
"type": "object"
},
"XYLensPercentileRankAggregatedMetric": {
"additionalProperties": false,
"description": "XY chart percentile rank metric with appearance options.\n\nExtends LensPercentileRankAggregatedMetric to include axis and color configuration\nfor use in XY charts.",
"properties": {
"axis": {
"anyOf": [
{
"enum": [
"left",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Which Y-axis to assign this metric to ('left' or 'right').",
"title": "Axis"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom color for this metric series (hex color code, e.g., '#2196F3').",
"title": "Color"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "percentile_rank",
"default": "percentile_rank",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"rank": {
"title": "Rank",
"type": "integer"
}
},
"required": [
"field",
"rank"
],
"title": "XYLensPercentileRankAggregatedMetric",
"type": "object"
},
"XYLensSumAggregatedMetric": {
"additionalProperties": false,
"description": "XY chart sum metric with appearance options.\n\nExtends LensSumAggregatedMetric to include axis and color configuration\nfor use in XY charts.",
"properties": {
"axis": {
"anyOf": [
{
"enum": [
"left",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Which Y-axis to assign this metric to ('left' or 'right').",
"title": "Axis"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom color for this metric series (hex color code, e.g., '#2196F3').",
"title": "Color"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "sum",
"default": "sum",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"exclude_zeros": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to exclude zero values from the sum. Kibana defaults to true if not specified.",
"title": "Exclude Zeros"
}
},
"required": [
"field"
],
"title": "XYLensSumAggregatedMetric",
"type": "object"
},
"XYReferenceLine": {
"additionalProperties": false,
"description": "Configuration for a single reference line in an XY chart.\n\nInherits from BaseIdentifiableModel for automatic deterministic ID generation.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional label for the reference line.",
"title": "Label"
},
"value": {
"anyOf": [
{
"$ref": "#/$defs/XYReferenceLineValue"
},
{
"type": "number"
}
],
"description": "The value for the reference line. Can be a float or XYReferenceLineValue object.",
"title": "Value"
},
"axis": {
"anyOf": [
{
"enum": [
"left",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": "left",
"description": "The axis to assign the reference line to.",
"title": "Axis"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The color of the reference line.",
"title": "Color"
},
"line_width": {
"anyOf": [
{
"maximum": 10,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The width of the reference line (1-10).",
"title": "Line Width"
},
"line_style": {
"anyOf": [
{
"enum": [
"solid",
"dashed",
"dotted"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The style of the reference line.",
"title": "Line Style"
},
"fill": {
"anyOf": [
{
"enum": [
"above",
"below",
"none"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Fill area above or below the line.",
"title": "Fill"
},
"icon": {
"anyOf": [
{
"$ref": "#/$defs/ReferenceLineIcon"
},
{
"type": "null"
}
],
"default": null,
"description": "Icon to display on the reference line."
},
"icon_position": {
"anyOf": [
{
"enum": [
"auto",
"left",
"right",
"above",
"below"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the icon on the reference line.",
"title": "Icon Position"
}
},
"required": [
"value"
],
"title": "XYReferenceLine",
"type": "object"
},
"XYReferenceLineValue": {
"additionalProperties": false,
"description": "Defines the value for a reference line.",
"properties": {
"type": {
"const": "static",
"default": "static",
"description": "The type of value (always 'static' for now).",
"title": "Type",
"type": "string"
},
"value": {
"description": "The static value for the reference line.",
"title": "Value",
"type": "number"
}
},
"required": [
"value"
],
"title": "XYReferenceLineValue",
"type": "object"
},
"XYValuesConfig": {
"additionalProperties": false,
"description": "Formatting options for value labels on data points.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls whether value labels are shown on data points (e.g., on top of bars). Kibana defaults to hidden if not specified.",
"title": "Visible"
}
},
"title": "XYValuesConfig",
"type": "object"
}
},
"additionalProperties": false,
"description": "Represents a Lens chart panel (single or multi-layer).\n\nThe lens field contains a discriminated union of chart panel configurations.\nThe chart type is determined by the 'type' field.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier for the panel. If not provided, one may be generated during compilation.",
"title": "Id"
},
"title": {
"default": "",
"description": "The title displayed on the panel header. Can be an empty string.",
"title": "Title",
"type": "string"
},
"hide_title": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, the panel title will be hidden. Defaults to `false` (title is shown).",
"title": "Hide Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the panel's content or purpose. Defaults to an empty string.",
"title": "Description"
},
"size": {
"$ref": "#/$defs/Size",
"description": "Defines the panel's size on the dashboard grid."
},
"position": {
"$ref": "#/$defs/Position",
"description": "Defines the panel's position on the dashboard grid. If not specified, position will be auto-calculated."
},
"drilldowns": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/DrilldownTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional list of drilldowns to attach to this panel.",
"title": "Drilldowns"
},
"lens": {
"$ref": "#/$defs/LensPanelConfig",
"description": "Lens panel configuration."
}
},
"required": [
"lens"
],
"title": "LensPanel",
"type": "object"
}
Source code in kb_dashboard_core/panels/charts/config.py
Metric Charts¶
Display key performance indicators.
For configuration details and examples, see the Metric Chart Panel Configuration.
Pie Charts¶
Create pie chart visualizations to show distribution of categorical data.
For configuration details and examples, see the Pie Chart Panel Configuration.
Heatmap Charts¶
Create heatmap visualizations to show patterns across two categorical dimensions.
For configuration details and examples, see the Heatmap Chart Panel Configuration.
LensHeatmapChart
pydantic-model
¶
Represents a Heatmap chart configuration within a Lens panel.
Heatmap charts display data as a matrix where cell colors represent metric values, typically used for visualizing patterns across two categorical dimensions.
Attributes:
| Name | Type | Description |
|---|---|---|
data_view |
str
|
The data view that determines the data for the heatmap chart. |
x_axis |
LensDimensionTypes
|
The dimension to display on the X-axis (horizontal). |
y_axis |
LensDimensionTypes | None
|
The dimension to display on the Y-axis (vertical). Optional for 1D heatmaps. |
metric |
LensDataMetricTypes
|
The metric that determines cell color intensity. |
Show JSON schema:
{
"$defs": {
"ColorRangeMapping": {
"additionalProperties": false,
"description": "Range/threshold-based color mapping for numeric values.",
"properties": {
"range_type": {
"default": "number",
"description": "How threshold values are interpreted by Kibana.",
"enum": [
"number",
"percent"
],
"title": "Range Type",
"type": "string"
},
"range_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": 0,
"description": "Optional lower bound for the palette domain. Use null for auto/open lower bound.",
"title": "Range Min"
},
"range_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional upper bound for the palette domain. Use null for auto/open upper bound.",
"title": "Range Max"
},
"thresholds": {
"description": "Ordered threshold bands used to build gauge-style color palettes.",
"items": {
"$ref": "#/$defs/ColorThreshold"
},
"minItems": 1,
"title": "Thresholds",
"type": "array"
}
},
"required": [
"thresholds"
],
"title": "ColorRangeMapping",
"type": "object"
},
"ColorThreshold": {
"additionalProperties": false,
"description": "Single threshold band in a range-based color map.",
"properties": {
"up_to": {
"description": "Upper bound for this threshold band.",
"title": "Up To",
"type": "number"
},
"color": {
"description": "The color applied within this threshold band (hex color code).",
"title": "Color",
"type": "string"
}
},
"required": [
"up_to",
"color"
],
"title": "ColorThreshold",
"type": "object"
},
"HeatmapAppearance": {
"additionalProperties": false,
"description": "Formatting options for the chart appearance.",
"properties": {
"values": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for numeric values shown in heatmap cells."
},
"x_axis": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the X-axis labels and title."
},
"y_axis": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the Y-axis labels and title."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapLegendConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the color legend."
}
},
"title": "HeatmapAppearance",
"type": "object"
},
"HeatmapAxisAppearance": {
"additionalProperties": false,
"description": "Appearance configuration for a heatmap axis.",
"properties": {
"labels": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisLabelsConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for axis tick labels."
},
"title": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisTitleConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for axis title visibility."
}
},
"title": "HeatmapAxisAppearance",
"type": "object"
},
"HeatmapAxisLabelsConfig": {
"additionalProperties": false,
"description": "Configuration for heatmap axis tick labels.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show tick labels on the axis.",
"title": "Visible"
}
},
"title": "HeatmapAxisLabelsConfig",
"type": "object"
},
"HeatmapAxisTitleConfig": {
"additionalProperties": false,
"description": "Configuration for heatmap axis titles.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show the axis title.",
"title": "Visible"
}
},
"title": "HeatmapAxisTitleConfig",
"type": "object"
},
"HeatmapLegendConfig": {
"additionalProperties": false,
"description": "Legend configuration for heatmap visualizations.\n\nControls the visibility and position of the color legend.\nNote: Heatmaps only support 'show' and 'hide' visibility options (not 'auto').",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
}
},
"title": "HeatmapLegendConfig",
"type": "object"
},
"HeatmapValuesConfig": {
"additionalProperties": false,
"description": "Configuration for heatmap numeric values.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show numeric values inside heatmap cells.",
"title": "Visible"
}
},
"title": "HeatmapValuesConfig",
"type": "object"
},
"KqlQuery": {
"additionalProperties": false,
"description": "Represents a KQL (Kibana Query Language) query configuration.\n\nKQL is the default query language in Kibana and provides a simplified syntax for filtering data.",
"properties": {
"kql": {
"description": "The Kibana Query Language (KQL) query string to apply.",
"title": "Kql",
"type": "string"
}
},
"required": [
"kql"
],
"title": "KqlQuery",
"type": "object"
},
"LegacyQueryTypes": {
"oneOf": [
{
"$ref": "#/$defs/KqlQuery"
},
{
"$ref": "#/$defs/LuceneQuery"
}
]
},
"LegendVisibleEnum": {
"description": "Represents the possible values for the visibility of the legend in a pie chart.",
"enum": [
"show",
"hide",
"auto"
],
"title": "LegendVisibleEnum",
"type": "string"
},
"LegendWidthEnum": {
"description": "Represents the possible values for the width/size of the legend.",
"enum": [
"small",
"medium",
"large",
"extra_large"
],
"title": "LegendWidthEnum",
"type": "string"
},
"LensAggregatedMetricTypes": {
"anyOf": [
{
"$ref": "#/$defs/LensOtherAggregatedMetric"
},
{
"$ref": "#/$defs/LensLastValueAggregatedMetric"
},
{
"$ref": "#/$defs/LensCountAggregatedMetric"
},
{
"$ref": "#/$defs/LensSumAggregatedMetric"
},
{
"$ref": "#/$defs/LensPercentileRankAggregatedMetric"
},
{
"$ref": "#/$defs/LensPercentileAggregatedMetric"
}
]
},
"LensCountAggregatedMetric": {
"additionalProperties": false,
"description": "Represents a count metric configuration within a Lens chart.\n\nCount metrics are used to count the number of documents in a data view.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"default": "count",
"enum": [
"count",
"unique_count"
],
"title": "Aggregation",
"type": "string"
},
"field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The field to count. If not provided, the count will be of all documents in the data view.",
"title": "Field"
},
"exclude_zeros": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to exclude zero values from the count. Kibana defaults to true if not specified.",
"title": "Exclude Zeros"
}
},
"title": "LensCountAggregatedMetric",
"type": "object"
},
"LensCustomMetricFormat": {
"additionalProperties": false,
"description": "Custom format configuration for metrics using numeral.js patterns.\n\nUse this for complete control over numeric formatting with numeral.js syntax.",
"properties": {
"type": {
"const": "custom",
"default": "custom",
"description": "Format type identifier. Must be 'custom' for custom formats.",
"title": "Type",
"type": "string"
},
"decimals": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of decimal places to display. If not specified, defaults to 0.",
"title": "Decimals"
},
"pattern": {
"description": "numeral.js format pattern (e.g., \"0,0.00\" for comma-separated numbers with 2 decimals).",
"title": "Pattern",
"type": "string"
},
"suffix": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional suffix to display after the formatted number (e.g., \" requests\", \" users\").",
"title": "Suffix"
},
"compact": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to use compact notation (e.g., 1.2K instead of 1200). Defaults to Kibana's behavior.",
"title": "Compact"
}
},
"required": [
"pattern"
],
"title": "LensCustomMetricFormat",
"type": "object"
},
"LensDataMetricTypes": {
"anyOf": [
{
"$ref": "#/$defs/LensFormulaMetric"
},
{
"$ref": "#/$defs/LensAggregatedMetricTypes"
}
]
},
"LensDateHistogramDimension": {
"additionalProperties": false,
"description": "Represents a histogram dimension configuration within a Lens chart.\n\nDate histogram dimensions are used for aggregating data into buckets based on numeric ranges.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "date_histogram",
"default": "date_histogram",
"title": "Type",
"type": "string"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
},
"minimum_interval": {
"anyOf": [
{
"$ref": "#/$defs/LensDateMathMinimumInterval"
},
{
"type": "null"
}
],
"default": null,
"description": "The minimum interval using Elasticsearch date math format (e.g. `1m`, `1h`). Defaults to `auto`."
},
"partial_intervals": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show partial intervals. Kibana defaults to `true` if not specified.",
"title": "Partial Intervals"
}
},
"required": [
"field"
],
"title": "LensDateHistogramDimension",
"type": "object"
},
"LensDateMathMinimumInterval": {
"anyOf": [
{
"const": "auto",
"type": "string"
},
{
"pattern": "^[1-9][0-9]*(ms|s|m|h|d|w|M|q|y)$",
"type": "string"
}
]
},
"LensDimensionTypes": {
"anyOf": [
{
"$ref": "#/$defs/LensTermsDimension"
},
{
"$ref": "#/$defs/LensMultiTermsDimension"
},
{
"$ref": "#/$defs/LensDateHistogramDimension"
},
{
"$ref": "#/$defs/LensFiltersDimension"
},
{
"$ref": "#/$defs/LensIntervalsDimension"
}
]
},
"LensFiltersDimension": {
"additionalProperties": false,
"description": "Represents a filters dimension configuration within a Lens chart.\n\nFilters dimensions are used for filtering data based on a field.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "filters",
"default": "filters",
"title": "Type",
"type": "string"
},
"filters": {
"description": "The filters to use for the dimension.",
"items": {
"$ref": "#/$defs/LensFiltersDimensionFilter"
},
"title": "Filters",
"type": "array"
}
},
"required": [
"filters"
],
"title": "LensFiltersDimension",
"type": "object"
},
"LensFiltersDimensionFilter": {
"additionalProperties": false,
"description": "A filter for a filters dimension.",
"properties": {
"query": {
"$ref": "#/$defs/LegacyQueryTypes",
"description": "The query to use for the dimension."
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the filter. If not provided, the query will be used as the label.",
"title": "Label"
}
},
"required": [
"query"
],
"title": "LensFiltersDimensionFilter",
"type": "object"
},
"LensFormulaMetric": {
"additionalProperties": false,
"description": "Represents a formula metric configuration within a Lens chart.\n\nFormula metrics allow for custom calculations using Kibana's formula syntax.\nThe formula string is passed directly to Kibana, which handles parsing and\nAST generation internally.\n\nExample formulas:\n- Simple arithmetic: \"count() / 100\"\n- Field aggregations: \"(max(response.time) - min(response.time)) / average(response.time)\"\n- With filters: \"count(kql='status:error') / count() * 100\"",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"formula": {
"description": "The formula string to be evaluated for this metric.",
"title": "Formula",
"type": "string"
}
},
"required": [
"formula"
],
"title": "LensFormulaMetric",
"type": "object"
},
"LensIntervalsDimension": {
"additionalProperties": false,
"description": "Represents an intervals dimension configuration within a Lens chart.\n\nIntervals dimensions are used for aggregating data based on numeric ranges.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "intervals",
"default": "intervals",
"title": "Type",
"type": "string"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
},
"intervals": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/LensIntervalsDimensionInterval"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "The intervals to use for the dimension. If not provided, intervals will be automatically picked.",
"title": "Intervals"
},
"granularity": {
"anyOf": [
{
"maximum": 7,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Interval granularity divides the field into evenly spaced intervals based on the minimum and maximum values for the field.\nKibana defaults to 4 if not specified.",
"title": "Granularity"
},
"include_empty_intervals": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, include empty histogram buckets. Defaults to `true`.",
"title": "Include Empty Intervals"
}
},
"required": [
"field"
],
"title": "LensIntervalsDimension",
"type": "object"
},
"LensIntervalsDimensionInterval": {
"additionalProperties": false,
"description": "A single interval for an intervals dimension.",
"properties": {
"from": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The start of the interval.",
"title": "From"
},
"to": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The end of the interval.",
"title": "To"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The label for the interval.",
"title": "Label"
}
},
"title": "LensIntervalsDimensionInterval",
"type": "object"
},
"LensLastValueAggregatedMetric": {
"additionalProperties": false,
"description": "Represents a last value metric configuration within a Lens chart.\n\nLast value metrics are used to retrieve the most recent value of a field based on a specified sort order.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "last_value",
"default": "last_value",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"date_field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The field used to determine the 'last' value.",
"title": "Date Field"
}
},
"required": [
"field"
],
"title": "LensLastValueAggregatedMetric",
"type": "object"
},
"LensMetricFormat": {
"additionalProperties": false,
"description": "Standard format configuration for displaying metric values.\n\nSupports common numeric formats with optional suffix and compact notation.",
"properties": {
"type": {
"description": "The format type for the metric value.\n\nAvailable formats:\n- **number**: Plain numeric value with optional decimal places\n- **bytes**: Byte size formatting (B, KB, MB, GB, TB)\n- **bits**: Bit size formatting (b, Kb, Mb, Gb, Tb)\n- **percent**: Percentage formatting with % symbol\n- **duration**: Time duration formatting (ms, s, m, h, d)",
"enum": [
"number",
"bytes",
"bits",
"percent",
"duration"
],
"title": "Type",
"type": "string"
},
"decimals": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of decimal places to display. If not specified, defaults to 2 for number/bytes/percent, 0 for bits/duration.",
"title": "Decimals"
},
"suffix": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional suffix to display after the formatted number (e.g., \" requests\", \" users\").",
"title": "Suffix"
},
"compact": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to use compact notation (e.g., 1.2K instead of 1200). Defaults to Kibana's behavior.",
"title": "Compact"
}
},
"required": [
"type"
],
"title": "LensMetricFormat",
"type": "object"
},
"LensMetricFormatTypes": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormat"
},
{
"$ref": "#/$defs/LensCustomMetricFormat"
}
]
},
"LensMultiTermsDimension": {
"additionalProperties": false,
"description": "Represents a multi-field top values dimension configuration within a Lens chart.\n\nMulti-terms dimensions are used for aggregating data based on unique combinations\nof values across multiple fields.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "values",
"default": "values",
"title": "Type",
"type": "string"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of top terms to display.",
"title": "Size"
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/Sort"
},
{
"type": "null"
}
],
"default": null,
"description": "The sort configuration for the terms."
},
"show_other_bucket": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for terms not included in the top size. Defaults to `true`.",
"title": "Show Other Bucket"
},
"include_missing_values": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for documents with a missing value for the field. Defaults to `false`.",
"title": "Include Missing Values"
},
"include": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to include. Can be used with or without `include_is_regex`.",
"title": "Include"
},
"exclude": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to exclude. Can be used with or without `exclude_is_regex`.",
"title": "Exclude"
},
"include_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `include` list as regular expressions. Defaults to `false`.",
"title": "Include Is Regex"
},
"exclude_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `exclude` list as regular expressions. Defaults to `false`.",
"title": "Exclude Is Regex"
},
"fields": {
"description": "List of field names for multi-field aggregation. Requires at least 2 fields.",
"items": {
"type": "string"
},
"minItems": 2,
"title": "Fields",
"type": "array"
}
},
"required": [
"fields"
],
"title": "LensMultiTermsDimension",
"type": "object"
},
"LensOtherAggregatedMetric": {
"additionalProperties": false,
"description": "Represents various aggregated metric configurations within a Lens chart.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"description": "The aggregation type for the metric (e.g., 'min', 'max', 'median', 'average', 'standard_deviation').",
"enum": [
"min",
"max",
"median",
"average",
"standard_deviation"
],
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
}
},
"required": [
"aggregation",
"field"
],
"title": "LensOtherAggregatedMetric",
"type": "object"
},
"LensPercentileAggregatedMetric": {
"additionalProperties": false,
"description": "Represents a percentile metric configuration within a Lens chart.\n\nPercentile metrics are used to determine the value at a specific percentile in a data set.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "percentile",
"default": "percentile",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"percentile": {
"title": "Percentile",
"type": "integer"
}
},
"required": [
"field",
"percentile"
],
"title": "LensPercentileAggregatedMetric",
"type": "object"
},
"LensPercentileRankAggregatedMetric": {
"additionalProperties": false,
"description": "Represents a percentile rank metric configuration within a Lens chart.\n\nPercentile rank metrics are used to determine the rank of a value in a data set.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "percentile_rank",
"default": "percentile_rank",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"rank": {
"title": "Rank",
"type": "integer"
}
},
"required": [
"field",
"rank"
],
"title": "LensPercentileRankAggregatedMetric",
"type": "object"
},
"LensSumAggregatedMetric": {
"additionalProperties": false,
"description": "Represents a sum metric configuration within a Lens chart.\n\nSum metrics are used to sum the values of a field.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the metric. If not provided, a label may be inferred from the type and field.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/LensMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/LegacyQueryTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "A KQL filter applied before determining the metric value."
},
"aggregation": {
"const": "sum",
"default": "sum",
"title": "Aggregation",
"type": "string"
},
"field": {
"title": "Field",
"type": "string"
},
"exclude_zeros": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to exclude zero values from the sum. Kibana defaults to true if not specified.",
"title": "Exclude Zeros"
}
},
"required": [
"field"
],
"title": "LensSumAggregatedMetric",
"type": "object"
},
"LensTermsDimension": {
"additionalProperties": false,
"description": "Represents a single-field top values dimension configuration within a Lens chart.\n\nTerms dimensions are used for aggregating data based on unique values of a single field.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display label for the dimension. If not provided, a label may be inferred from the field and type.",
"title": "Label"
},
"type": {
"const": "values",
"default": "values",
"title": "Type",
"type": "string"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of top terms to display.",
"title": "Size"
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/Sort"
},
{
"type": "null"
}
],
"default": null,
"description": "The sort configuration for the terms."
},
"show_other_bucket": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for terms not included in the top size. Defaults to `true`.",
"title": "Show Other Bucket"
},
"include_missing_values": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, show a bucket for documents with a missing value for the field. Defaults to `false`.",
"title": "Include Missing Values"
},
"include": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to include. Can be used with or without `include_is_regex`.",
"title": "Include"
},
"exclude": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of terms to exclude. Can be used with or without `exclude_is_regex`.",
"title": "Exclude"
},
"include_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `include` list as regular expressions. Defaults to `false`.",
"title": "Include Is Regex"
},
"exclude_is_regex": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, treat the values in the `exclude` list as regular expressions. Defaults to `false`.",
"title": "Exclude Is Regex"
},
"field": {
"description": "The name of the field in the data view that this dimension is based on.",
"title": "Field",
"type": "string"
}
},
"required": [
"field"
],
"title": "LensTermsDimension",
"type": "object"
},
"LuceneQuery": {
"additionalProperties": false,
"description": "Represents a Lucene query configuration.\n\nLucene provides a more powerful and flexible, but less friendly, syntax for querying data compared to KQL.",
"properties": {
"lucene": {
"description": "The Lucene query string to apply.",
"title": "Lucene",
"type": "string"
}
},
"required": [
"lucene"
],
"title": "LuceneQuery",
"type": "object"
},
"Sort": {
"additionalProperties": false,
"description": "Represents a sort configuration in the Config schema.",
"properties": {
"by": {
"description": "The field name to sort the data by.",
"title": "By",
"type": "string"
},
"direction": {
"description": "The sort direction. Must be either 'asc' for ascending or 'desc' for descending.",
"enum": [
"asc",
"desc"
],
"title": "Direction",
"type": "string"
}
},
"required": [
"by",
"direction"
],
"title": "Sort",
"type": "object"
}
},
"additionalProperties": false,
"description": "Represents a Heatmap chart configuration within a Lens panel.\n\nHeatmap charts display data as a matrix where cell colors represent metric values,\ntypically used for visualizing patterns across two categorical dimensions.",
"properties": {
"type": {
"const": "heatmap",
"default": "heatmap",
"description": "The type of chart, which is 'heatmap' for this visualization.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorRangeMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional range-based palette configuration for heatmap cell coloring."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"data_view": {
"description": "The data view that determines the data for the heatmap chart.",
"title": "Data View",
"type": "string"
},
"x_axis": {
"$ref": "#/$defs/LensDimensionTypes",
"description": "The dimension to display on the X-axis (horizontal)."
},
"y_axis": {
"anyOf": [
{
"$ref": "#/$defs/LensDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The dimension to display on the Y-axis (vertical). Optional for 1D heatmaps."
},
"metric": {
"$ref": "#/$defs/LensDataMetricTypes",
"description": "The metric that determines cell color intensity."
}
},
"required": [
"data_view",
"x_axis",
"metric"
],
"title": "LensHeatmapChart",
"type": "object"
}
Source code in kb_dashboard_core/panels/charts/heatmap/config.py
ESQLHeatmapChart
pydantic-model
¶
Represents a Heatmap chart configuration within an ESQL panel.
Heatmap charts display data as a matrix where cell colors represent metric values, typically used for visualizing patterns across two categorical dimensions.
Attributes:
| Name | Type | Description |
|---|---|---|
x_axis |
ESQLDimensionTypes
|
The dimension to display on the X-axis (horizontal). |
y_axis |
ESQLDimensionTypes | None
|
The dimension to display on the Y-axis (vertical). Optional for 1D heatmaps. |
metric |
ESQLMetricTypes
|
The metric that determines cell color intensity. |
Show JSON schema:
{
"$defs": {
"ColorRangeMapping": {
"additionalProperties": false,
"description": "Range/threshold-based color mapping for numeric values.",
"properties": {
"range_type": {
"default": "number",
"description": "How threshold values are interpreted by Kibana.",
"enum": [
"number",
"percent"
],
"title": "Range Type",
"type": "string"
},
"range_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": 0,
"description": "Optional lower bound for the palette domain. Use null for auto/open lower bound.",
"title": "Range Min"
},
"range_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional upper bound for the palette domain. Use null for auto/open upper bound.",
"title": "Range Max"
},
"thresholds": {
"description": "Ordered threshold bands used to build gauge-style color palettes.",
"items": {
"$ref": "#/$defs/ColorThreshold"
},
"minItems": 1,
"title": "Thresholds",
"type": "array"
}
},
"required": [
"thresholds"
],
"title": "ColorRangeMapping",
"type": "object"
},
"ColorThreshold": {
"additionalProperties": false,
"description": "Single threshold band in a range-based color map.",
"properties": {
"up_to": {
"description": "Upper bound for this threshold band.",
"title": "Up To",
"type": "number"
},
"color": {
"description": "The color applied within this threshold band (hex color code).",
"title": "Color",
"type": "string"
}
},
"required": [
"up_to",
"color"
],
"title": "ColorThreshold",
"type": "object"
},
"ESQLCustomMetricFormat": {
"additionalProperties": false,
"description": "Custom format configuration for ES|QL metrics.\n\nAllows specifying a custom number format pattern.\nThis is separate from LensCustomMetricFormat as ES|QL and Lens formatting may diverge in the future.",
"properties": {
"type": {
"const": "custom",
"default": "custom",
"title": "Type",
"type": "string"
},
"pattern": {
"description": "The pattern to display the number in.",
"title": "Pattern",
"type": "string"
}
},
"required": [
"pattern"
],
"title": "ESQLCustomMetricFormat",
"type": "object"
},
"ESQLDimensionTypes": {
"additionalProperties": false,
"description": "A dimension that is defined in the ESQL query.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"field": {
"description": "The field to use for the dimension.",
"title": "Field",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display label for the dimension.",
"title": "Label"
},
"data_type": {
"anyOf": [
{
"const": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The data type of the field. Set to 'date' for time/date fields to enable proper sorting and formatting.",
"title": "Data Type"
}
},
"required": [
"field"
],
"title": "ESQLDimension",
"type": "object"
},
"ESQLMetricFormat": {
"additionalProperties": false,
"description": "The format configuration for ES|QL metrics.\n\nSupports standard format types like number, bytes, bits, percent, and duration.\nThis is separate from LensMetricFormat as ES|QL and Lens formatting may diverge in the future.",
"properties": {
"type": {
"enum": [
"number",
"bytes",
"bits",
"percent",
"duration"
],
"title": "Type",
"type": "string"
},
"decimals": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of decimal places to display. If not specified, defaults to 2 for number/bytes/percent/duration, 0 for bits.",
"title": "Decimals"
},
"suffix": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The suffix to display after the number.",
"title": "Suffix"
},
"compact": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to display the number in a compact format.",
"title": "Compact"
},
"pattern": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The pattern to display the number in.",
"title": "Pattern"
}
},
"required": [
"type"
],
"title": "ESQLMetricFormat",
"type": "object"
},
"ESQLMetricFormatTypes": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetricFormat"
},
{
"$ref": "#/$defs/ESQLCustomMetricFormat"
}
]
},
"ESQLMetricTypes": {
"additionalProperties": false,
"description": "A metric that is defined in the ESQL query.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"field": {
"description": "The field in the data view that this metric is based on.",
"title": "Field",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display label for the metric.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric (number, bytes, bits, percent, duration, or custom)."
}
},
"required": [
"field"
],
"title": "ESQLMetric",
"type": "object"
},
"HeatmapAppearance": {
"additionalProperties": false,
"description": "Formatting options for the chart appearance.",
"properties": {
"values": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for numeric values shown in heatmap cells."
},
"x_axis": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the X-axis labels and title."
},
"y_axis": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the Y-axis labels and title."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapLegendConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the color legend."
}
},
"title": "HeatmapAppearance",
"type": "object"
},
"HeatmapAxisAppearance": {
"additionalProperties": false,
"description": "Appearance configuration for a heatmap axis.",
"properties": {
"labels": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisLabelsConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for axis tick labels."
},
"title": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisTitleConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for axis title visibility."
}
},
"title": "HeatmapAxisAppearance",
"type": "object"
},
"HeatmapAxisLabelsConfig": {
"additionalProperties": false,
"description": "Configuration for heatmap axis tick labels.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show tick labels on the axis.",
"title": "Visible"
}
},
"title": "HeatmapAxisLabelsConfig",
"type": "object"
},
"HeatmapAxisTitleConfig": {
"additionalProperties": false,
"description": "Configuration for heatmap axis titles.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show the axis title.",
"title": "Visible"
}
},
"title": "HeatmapAxisTitleConfig",
"type": "object"
},
"HeatmapLegendConfig": {
"additionalProperties": false,
"description": "Legend configuration for heatmap visualizations.\n\nControls the visibility and position of the color legend.\nNote: Heatmaps only support 'show' and 'hide' visibility options (not 'auto').",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
}
},
"title": "HeatmapLegendConfig",
"type": "object"
},
"HeatmapValuesConfig": {
"additionalProperties": false,
"description": "Configuration for heatmap numeric values.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show numeric values inside heatmap cells.",
"title": "Visible"
}
},
"title": "HeatmapValuesConfig",
"type": "object"
},
"LegendVisibleEnum": {
"description": "Represents the possible values for the visibility of the legend in a pie chart.",
"enum": [
"show",
"hide",
"auto"
],
"title": "LegendVisibleEnum",
"type": "string"
},
"LegendWidthEnum": {
"description": "Represents the possible values for the width/size of the legend.",
"enum": [
"small",
"medium",
"large",
"extra_large"
],
"title": "LegendWidthEnum",
"type": "string"
}
},
"additionalProperties": false,
"description": "Represents a Heatmap chart configuration within an ESQL panel.\n\nHeatmap charts display data as a matrix where cell colors represent metric values,\ntypically used for visualizing patterns across two categorical dimensions.",
"properties": {
"type": {
"const": "heatmap",
"default": "heatmap",
"description": "The type of chart, which is 'heatmap' for this visualization.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorRangeMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional range-based palette configuration for heatmap cell coloring."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"x_axis": {
"$ref": "#/$defs/ESQLDimensionTypes",
"description": "The dimension to display on the X-axis (horizontal)."
},
"y_axis": {
"anyOf": [
{
"$ref": "#/$defs/ESQLDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The dimension to display on the Y-axis (vertical). Optional for 1D heatmaps."
},
"metric": {
"$ref": "#/$defs/ESQLMetricTypes",
"description": "The metric that determines cell color intensity."
}
},
"required": [
"x_axis",
"metric"
],
"title": "ESQLHeatmapChart",
"type": "object"
}
Source code in kb_dashboard_core/panels/charts/heatmap/config.py
XY Charts¶
Create line, bar, and area charts for time series and other data.
For configuration details and examples, see the XY Chart Panel Configuration.
ESQL Panel¶
ESQLPanel
pydantic-model
¶
Represents an ES|QL chart panel.
The esql field contains a discriminated union of ES|QL chart panel configurations. The chart type is determined by the 'type' field.
Attributes:
| Name | Type | Description |
|---|---|---|
esql |
ESQLPanelConfig
|
ES|QL panel configuration. |
Show JSON schema:
{
"$defs": {
"AreaChartAppearance": {
"additionalProperties": false,
"description": "Represents area chart appearance formatting options.",
"properties": {
"x_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the X-axis."
},
"y_left_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the left Y-axis."
},
"y_right_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the right Y-axis."
},
"values": {
"anyOf": [
{
"$ref": "#/$defs/XYValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for value labels on data points."
},
"missing_values": {
"anyOf": [
{
"enum": [
"none",
"linear",
"carry",
"lookahead",
"average",
"nearest"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "How to handle missing data points. Controls interpolation for gaps in your data.",
"title": "Missing Values"
},
"show_as_dotted": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, visually distinguish interpolated data from real data points. Defaults to `false`.",
"title": "Show As Dotted"
},
"end_values": {
"anyOf": [
{
"enum": [
"none",
"zero",
"nearest"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "How to handle the end of the time range in line/area charts.",
"title": "End Values"
},
"line_style": {
"anyOf": [
{
"enum": [
"linear",
"monotone-x",
"step-after"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The line style for line/area charts. Only 3 types are supported by Kibana: linear (straight), monotone-x (smooth), step-after (stepped).",
"title": "Line Style"
},
"show_current_time_marker": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show a vertical line at the current time in time series charts.",
"title": "Show Current Time Marker"
},
"hide_endzones": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to hide end zones in time series charts (areas where data is incomplete).",
"title": "Hide Endzones"
},
"fill_opacity": {
"anyOf": [
{
"maximum": 1.0,
"minimum": 0.0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "The fill opacity for area charts (0.0 to 1.0).",
"title": "Fill Opacity"
}
},
"title": "AreaChartAppearance",
"type": "object"
},
"AxisConfig": {
"additionalProperties": false,
"description": "Represents configuration for a single axis in XY charts.",
"properties": {
"title": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Axis title mode/value: True=auto, False=hidden, string=custom title.",
"title": "Title"
},
"scale": {
"anyOf": [
{
"enum": [
"linear",
"log",
"sqrt",
"time"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Scale type for the axis. Defaults to 'linear'.",
"title": "Scale"
},
"extent": {
"anyOf": [
{
"$ref": "#/$defs/AxisExtent"
},
{
"type": "null"
}
],
"default": null,
"description": "Extent/bounds configuration for the axis."
}
},
"title": "AxisConfig",
"type": "object"
},
"AxisExtent": {
"additionalProperties": false,
"description": "Represents axis extent (bounds) configuration for XY chart axes.\n\nControls the range of values displayed on an axis. Can be set to:\n- 'full': Use the full extent of the data\n- 'custom': Specify custom bounds with min/max values\n- 'data_bounds': Fit to the actual data bounds",
"properties": {
"mode": {
"default": "full",
"description": "The extent mode for the axis. Defaults to 'full'.",
"enum": [
"full",
"custom",
"data_bounds"
],
"title": "Mode",
"type": "string"
},
"min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum value for the axis (only used when mode is 'custom').",
"title": "Min"
},
"max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum value for the axis (only used when mode is 'custom').",
"title": "Max"
},
"enforce": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to enforce the bounds strictly. Defaults to false.",
"title": "Enforce"
},
"nice_values": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to use nice rounded values for bounds. Defaults to true.",
"title": "Nice Values"
}
},
"title": "AxisExtent",
"type": "object"
},
"BarChartAppearance": {
"additionalProperties": false,
"description": "Represents bar chart appearance formatting options.\n\nExtends BaseXYChartAppearance to include bar-specific options.",
"properties": {
"x_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the X-axis."
},
"y_left_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the left Y-axis."
},
"y_right_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the right Y-axis."
},
"values": {
"anyOf": [
{
"$ref": "#/$defs/XYValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for value labels on data points."
},
"min_bar_height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "The minimum height for bars in bar charts.",
"title": "Min Bar Height"
}
},
"title": "BarChartAppearance",
"type": "object"
},
"CollapseAggregationEnum": {
"description": "The aggregation to use for the dimension.",
"enum": [
"sum",
"min",
"max",
"avg"
],
"title": "CollapseAggregationEnum",
"type": "string"
},
"ColorRangeMapping": {
"additionalProperties": false,
"description": "Range/threshold-based color mapping for numeric values.",
"properties": {
"range_type": {
"default": "number",
"description": "How threshold values are interpreted by Kibana.",
"enum": [
"number",
"percent"
],
"title": "Range Type",
"type": "string"
},
"range_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": 0,
"description": "Optional lower bound for the palette domain. Use null for auto/open lower bound.",
"title": "Range Min"
},
"range_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional upper bound for the palette domain. Use null for auto/open upper bound.",
"title": "Range Max"
},
"thresholds": {
"description": "Ordered threshold bands used to build gauge-style color palettes.",
"items": {
"$ref": "#/$defs/ColorThreshold"
},
"minItems": 1,
"title": "Thresholds",
"type": "array"
}
},
"required": [
"thresholds"
],
"title": "ColorRangeMapping",
"type": "object"
},
"ColorThreshold": {
"additionalProperties": false,
"description": "Single threshold band in a range-based color map.",
"properties": {
"up_to": {
"description": "Upper bound for this threshold band.",
"title": "Up To",
"type": "number"
},
"color": {
"description": "The color applied within this threshold band (hex color code).",
"title": "Color",
"type": "string"
}
},
"required": [
"up_to",
"color"
],
"title": "ColorThreshold",
"type": "object"
},
"ColorValueAssignment": {
"additionalProperties": false,
"description": "Manual color assignment to specific categorical values.",
"properties": {
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A single category value to assign a color to.",
"title": "Value"
},
"values": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Multiple category values to assign the same color to.",
"title": "Values"
},
"color": {
"description": "The hex color code to assign (e.g., '#FF0000').",
"title": "Color",
"type": "string"
}
},
"required": [
"color"
],
"title": "ColorValueAssignment",
"type": "object"
},
"ColorValueMapping": {
"additionalProperties": false,
"description": "Categorical color mapping for charts keyed by exact values.",
"properties": {
"palette": {
"default": "eui_amsterdam_color_blind",
"description": "The palette ID to use for unassigned colors.\n\nAvailable palettes:\n- 'default' - Standard EUI palette\n- 'eui_amsterdam_color_blind' - Color-blind safe palette (default)\n- 'kibana_palette' or 'legacy' - Legacy Kibana colors\n- 'elastic_brand' - Elastic brand colors\n- 'gray' - Grayscale palette",
"title": "Palette",
"type": "string"
},
"assignments": {
"description": "Manual color assignments to specific data values.",
"items": {
"$ref": "#/$defs/ColorValueAssignment"
},
"title": "Assignments",
"type": "array"
}
},
"title": "ColorValueMapping",
"type": "object"
},
"DashboardDrilldown": {
"additionalProperties": false,
"description": "Dashboard-to-dashboard drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"dashboard": {
"description": "Target dashboard ID or friendly identifier.",
"title": "Dashboard",
"type": "string"
},
"with_filters": {
"default": true,
"description": "Whether to carry over current filters to the target dashboard. Defaults to True.",
"title": "With Filters",
"type": "boolean"
},
"with_time": {
"default": true,
"description": "Whether to carry over current time range to the target dashboard. Defaults to True.",
"title": "With Time",
"type": "boolean"
}
},
"required": [
"name",
"dashboard"
],
"title": "DashboardDrilldown",
"type": "object"
},
"DatatableAlignmentEnum": {
"description": "Alignment options for datatable columns.",
"enum": [
"left",
"right",
"center"
],
"title": "DatatableAlignmentEnum",
"type": "string"
},
"DatatableAppearance": {
"additionalProperties": false,
"description": "Appearance settings for datatable visualization.",
"properties": {
"row_height": {
"$ref": "#/$defs/DatatableRowHeightEnum",
"default": "auto",
"description": "Row height mode."
},
"row_height_lines": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines for custom row height (only used with row_height='custom').",
"title": "Row Height Lines"
},
"header_row_height": {
"$ref": "#/$defs/DatatableRowHeightEnum",
"default": "auto",
"description": "Header row height mode."
},
"header_row_height_lines": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines for custom header row height (only used with header_row_height='custom').",
"title": "Header Row Height Lines"
},
"density": {
"$ref": "#/$defs/DatatableDensityEnum",
"default": "normal",
"description": "Grid density setting."
}
},
"title": "DatatableAppearance",
"type": "object"
},
"DatatableColorModeEnum": {
"description": "Color mode options for datatable columns.",
"enum": [
"none",
"cell",
"text"
],
"title": "DatatableColorModeEnum",
"type": "string"
},
"DatatableColumnAppearance": {
"additionalProperties": false,
"description": "Appearance options shared by datatable metric and dimension columns.",
"properties": {
"width": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Column width in pixels.",
"title": "Width"
},
"hidden": {
"default": false,
"description": "Whether to hide this column.",
"title": "Hidden",
"type": "boolean"
},
"one_click_filter": {
"default": false,
"description": "Enable one-click filtering for this column.",
"title": "One Click Filter",
"type": "boolean"
},
"alignment": {
"anyOf": [
{
"$ref": "#/$defs/DatatableAlignmentEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Text alignment for the column."
}
},
"title": "DatatableColumnAppearance",
"type": "object"
},
"DatatableDensityEnum": {
"description": "Density options for datatable.",
"enum": [
"compact",
"normal",
"expanded"
],
"title": "DatatableDensityEnum",
"type": "string"
},
"DatatableMetricAppearance": {
"additionalProperties": false,
"description": "Appearance options specific to datatable metric columns.",
"properties": {
"width": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Column width in pixels.",
"title": "Width"
},
"hidden": {
"default": false,
"description": "Whether to hide this column.",
"title": "Hidden",
"type": "boolean"
},
"one_click_filter": {
"default": false,
"description": "Enable one-click filtering for this column.",
"title": "One Click Filter",
"type": "boolean"
},
"alignment": {
"anyOf": [
{
"$ref": "#/$defs/DatatableAlignmentEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Text alignment for the column."
},
"summary_row": {
"anyOf": [
{
"$ref": "#/$defs/DatatableSummaryRowEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Summary function to display at the bottom of the metric column."
},
"summary_label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom label for the summary row.",
"title": "Summary Label"
}
},
"title": "DatatableMetricAppearance",
"type": "object"
},
"DatatableMetricColor": {
"additionalProperties": false,
"description": "Color settings for datatable metric appearance.",
"properties": {
"apply_to": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColorModeEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "How to apply colors to the metric column."
},
"range_type": {
"default": "number",
"description": "How threshold values are interpreted by Kibana.",
"enum": [
"number",
"percent"
],
"title": "Range Type",
"type": "string"
},
"range_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": 0,
"description": "Optional lower bound for the palette domain.",
"title": "Range Min"
},
"range_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional upper bound for the palette domain.",
"title": "Range Max"
},
"thresholds": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ColorThreshold"
},
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Ordered threshold bands used to build datatable palettes.",
"title": "Thresholds"
}
},
"title": "DatatableMetricColor",
"type": "object"
},
"DatatablePagingConfig": {
"additionalProperties": false,
"description": "Pagination configuration for datatable.",
"properties": {
"enabled": {
"default": true,
"description": "Whether pagination is enabled.",
"title": "Enabled",
"type": "boolean"
},
"page_size": {
"default": 10,
"description": "Number of rows per page.",
"title": "Page Size",
"type": "integer"
}
},
"title": "DatatablePagingConfig",
"type": "object"
},
"DatatableRowHeightEnum": {
"description": "Row height options for datatable.",
"enum": [
"auto",
"single",
"custom"
],
"title": "DatatableRowHeightEnum",
"type": "string"
},
"DatatableSortingConfig": {
"additionalProperties": false,
"description": "Sorting configuration for datatable.",
"properties": {
"column_id": {
"description": "The ID of the column to sort by.",
"title": "Column Id",
"type": "string"
},
"direction": {
"default": "asc",
"description": "Sort direction.",
"enum": [
"asc",
"desc"
],
"title": "Direction",
"type": "string"
}
},
"required": [
"column_id"
],
"title": "DatatableSortingConfig",
"type": "object"
},
"DatatableSummaryRowEnum": {
"description": "Summary row options for datatable columns.",
"enum": [
"none",
"sum",
"avg",
"count",
"min",
"max"
],
"title": "DatatableSummaryRowEnum",
"type": "string"
},
"DrilldownTrigger": {
"description": "User-facing drilldown trigger types.",
"enum": [
"click",
"filter",
"range"
],
"title": "DrilldownTrigger",
"type": "string"
},
"DrilldownTypes": {
"anyOf": [
{
"$ref": "#/$defs/DashboardDrilldown"
},
{
"$ref": "#/$defs/UrlDrilldown"
}
]
},
"ESQLAreaPanelConfig": {
"additionalProperties": false,
"description": "Configuration for an ES|QL area panel.",
"properties": {
"query": {
"$ref": "#/$defs/ESQLQueryTypes",
"description": "The ES|QL query to execute."
},
"time_field": {
"default": "@timestamp",
"description": "The time field to use for the dashboard time picker. Defaults to '@timestamp'.",
"title": "Time Field",
"type": "string"
},
"dimension": {
"anyOf": [
{
"$ref": "#/$defs/ESQLDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Defines the X-axis dimension for the chart. XY charts support 0 or 1 dimension."
},
"metrics": {
"description": "Defines the metrics for the chart. At least one metric is required.",
"items": {
"$ref": "#/$defs/ESQLXYMetricTypes"
},
"minItems": 1,
"title": "Metrics",
"type": "array"
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/ESQLBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional dimension to split the series by. If provided, it will be used to break down the data into multiple series."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/XYLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color palette."
},
"type": {
"const": "area",
"default": "area",
"description": "The type of XY chart to display. Defaults to 'area'.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/AreaChartAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance. AreaChartAppearance includes all line chart options plus fill_opacity."
},
"mode": {
"default": "stacked",
"description": "The stacking mode for bar and area charts. Defaults to 'stacked'.",
"enum": [
"stacked",
"unstacked",
"percentage"
],
"title": "Mode",
"type": "string"
}
},
"required": [
"query",
"metrics"
],
"title": "ESQLAreaPanelConfig",
"type": "object"
},
"ESQLBarPanelConfig": {
"additionalProperties": false,
"description": "Configuration for an ES|QL bar panel.",
"properties": {
"query": {
"$ref": "#/$defs/ESQLQueryTypes",
"description": "The ES|QL query to execute."
},
"time_field": {
"default": "@timestamp",
"description": "The time field to use for the dashboard time picker. Defaults to '@timestamp'.",
"title": "Time Field",
"type": "string"
},
"dimension": {
"anyOf": [
{
"$ref": "#/$defs/ESQLDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Defines the X-axis dimension for the chart. XY charts support 0 or 1 dimension."
},
"metrics": {
"description": "Defines the metrics for the chart. At least one metric is required.",
"items": {
"$ref": "#/$defs/ESQLXYMetricTypes"
},
"minItems": 1,
"title": "Metrics",
"type": "array"
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/ESQLBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional dimension to split the series by. If provided, it will be used to break down the data into multiple series."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/XYLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color palette."
},
"type": {
"const": "bar",
"default": "bar",
"description": "The type of XY chart to display. Defaults to 'bar'.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/BarChartAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"mode": {
"default": "stacked",
"description": "The stacking mode for bar and area charts. Defaults to 'stacked'.",
"enum": [
"stacked",
"unstacked",
"percentage"
],
"title": "Mode",
"type": "string"
}
},
"required": [
"query",
"metrics"
],
"title": "ESQLBarPanelConfig",
"type": "object"
},
"ESQLBreakdownTypes": {
"additionalProperties": false,
"description": "A breakdown dimension for ESQL charts that supports collapse aggregation.\n\nBreakdowns slice data into categories (e.g. bar segments, waffle sections).\nUnlike plain dimensions, breakdowns support the ``collapse`` aggregation\nwhich merges multiple dimension values into a single bucket using a summary function.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"field": {
"description": "The field to use for the dimension.",
"title": "Field",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display label for the dimension.",
"title": "Label"
},
"data_type": {
"anyOf": [
{
"const": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The data type of the field. Set to 'date' for time/date fields to enable proper sorting and formatting.",
"title": "Data Type"
},
"collapse": {
"anyOf": [
{
"$ref": "#/$defs/CollapseAggregationEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Aggregate all breakdown values into a single bucket using this function (sum, avg, min, max)."
}
},
"required": [
"field"
],
"title": "ESQLBreakdown",
"type": "object"
},
"ESQLCustomMetricFormat": {
"additionalProperties": false,
"description": "Custom format configuration for ES|QL metrics.\n\nAllows specifying a custom number format pattern.\nThis is separate from LensCustomMetricFormat as ES|QL and Lens formatting may diverge in the future.",
"properties": {
"type": {
"const": "custom",
"default": "custom",
"title": "Type",
"type": "string"
},
"pattern": {
"description": "The pattern to display the number in.",
"title": "Pattern",
"type": "string"
}
},
"required": [
"pattern"
],
"title": "ESQLCustomMetricFormat",
"type": "object"
},
"ESQLDatatableBreakdownTypes": {
"additionalProperties": false,
"description": "Datatable ES|QL dimension with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColumnAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this dimension."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"field": {
"description": "The field to use for the dimension.",
"title": "Field",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display label for the dimension.",
"title": "Label"
},
"data_type": {
"anyOf": [
{
"const": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The data type of the field. Set to 'date' for time/date fields to enable proper sorting and formatting.",
"title": "Data Type"
}
},
"required": [
"field"
],
"title": "DatatableESQLDimension",
"type": "object"
},
"ESQLDatatableDimensionTypes": {
"additionalProperties": false,
"description": "Datatable ES|QL dimension with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableColumnAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this dimension."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"field": {
"description": "The field to use for the dimension.",
"title": "Field",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display label for the dimension.",
"title": "Label"
},
"data_type": {
"anyOf": [
{
"const": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The data type of the field. Set to 'date' for time/date fields to enable proper sorting and formatting.",
"title": "Data Type"
}
},
"required": [
"field"
],
"title": "DatatableESQLDimension",
"type": "object"
},
"ESQLDatatableMetricTypes": {
"additionalProperties": false,
"description": "Datatable ES|QL metric with appearance options.",
"properties": {
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Presentation options for this metric (width, alignment, summary row, etc.)."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/DatatableMetricColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color display mode and optional range mapping for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"field": {
"description": "The field in the data view that this metric is based on.",
"title": "Field",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display label for the metric.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric (number, bytes, bits, percent, duration, or custom)."
}
},
"required": [
"field"
],
"title": "DatatableESQLMetric",
"type": "object"
},
"ESQLDatatablePanelConfig": {
"additionalProperties": false,
"description": "Configuration for an ES|QL datatable panel.",
"properties": {
"query": {
"$ref": "#/$defs/ESQLQueryTypes",
"description": "The ES|QL query to execute."
},
"time_field": {
"default": "@timestamp",
"description": "The time field to use for the dashboard time picker. Defaults to '@timestamp'.",
"title": "Time Field",
"type": "string"
},
"type": {
"const": "datatable",
"default": "datatable",
"description": "The type of chart, which is 'datatable' for this visualization.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/DatatableAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Appearance settings for the datatable."
},
"sorting": {
"anyOf": [
{
"$ref": "#/$defs/DatatableSortingConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional sorting configuration."
},
"paging": {
"anyOf": [
{
"$ref": "#/$defs/DatatablePagingConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional pagination configuration."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"metrics": {
"description": "List of ESQL metrics to display as columns.",
"items": {
"anyOf": [
{
"$ref": "#/$defs/ESQLDatatableMetricTypes"
},
{
"$ref": "#/$defs/ESQLMetricTypes"
}
]
},
"title": "Metrics",
"type": "array"
},
"breakdowns": {
"description": "List of ESQL breakdowns to use as row groupings.",
"items": {
"anyOf": [
{
"$ref": "#/$defs/ESQLDatatableBreakdownTypes"
},
{
"$ref": "#/$defs/ESQLDimensionTypes"
}
]
},
"title": "Breakdowns",
"type": "array"
},
"metrics_split_by": {
"anyOf": [
{
"items": {
"anyOf": [
{
"$ref": "#/$defs/ESQLDatatableDimensionTypes"
},
{
"$ref": "#/$defs/ESQLDimensionTypes"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional split-metrics-by dimensions (creates separate metric columns for each dimension value).",
"title": "Metrics Split By"
}
},
"required": [
"query"
],
"title": "ESQLDatatablePanelConfig",
"type": "object"
},
"ESQLDimensionTypes": {
"additionalProperties": false,
"description": "A dimension that is defined in the ESQL query.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"field": {
"description": "The field to use for the dimension.",
"title": "Field",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display label for the dimension.",
"title": "Label"
},
"data_type": {
"anyOf": [
{
"const": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The data type of the field. Set to 'date' for time/date fields to enable proper sorting and formatting.",
"title": "Data Type"
}
},
"required": [
"field"
],
"title": "ESQLDimension",
"type": "object"
},
"ESQLGaugePanelConfig": {
"additionalProperties": false,
"description": "Configuration for an ES|QL gauge panel.",
"properties": {
"query": {
"$ref": "#/$defs/ESQLQueryTypes",
"description": "The ES|QL query to execute."
},
"time_field": {
"default": "@timestamp",
"description": "The time field to use for the dashboard time picker. Defaults to '@timestamp'.",
"title": "Time Field",
"type": "string"
},
"type": {
"const": "gauge",
"default": "gauge",
"description": "The type of chart, which is 'gauge' for this visualization.",
"title": "Type",
"type": "string"
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorRangeMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Range-based palette configuration for gauge thresholds. When set, enables palette color mode."
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/GaugeAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Visual appearance configuration for the gauge."
},
"titles_and_text": {
"anyOf": [
{
"$ref": "#/$defs/GaugeTitlesAndText"
},
{
"type": "null"
}
],
"default": null,
"description": "Title and subtitle options mapped to gauge `label_major` and `label_minor`."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"metric": {
"$ref": "#/$defs/ESQLMetric",
"description": "The primary metric to display in the gauge. This is the main value shown."
},
"minimum": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetric"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional minimum value for the gauge range, referenced from an ESQL query field."
},
"maximum": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetric"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional maximum value for the gauge range, referenced from an ESQL query field."
},
"goal": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetric"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional goal/target value to display as a reference, referenced from an ESQL query field."
}
},
"required": [
"query",
"metric"
],
"title": "ESQLGaugePanelConfig",
"type": "object"
},
"ESQLHeatmapPanelConfig": {
"additionalProperties": false,
"description": "Configuration for an ES|QL heatmap panel.",
"properties": {
"query": {
"$ref": "#/$defs/ESQLQueryTypes",
"description": "The ES|QL query to execute."
},
"time_field": {
"default": "@timestamp",
"description": "The time field to use for the dashboard time picker. Defaults to '@timestamp'.",
"title": "Time Field",
"type": "string"
},
"type": {
"const": "heatmap",
"default": "heatmap",
"description": "The type of chart, which is 'heatmap' for this visualization.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorRangeMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional range-based palette configuration for heatmap cell coloring."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"x_axis": {
"$ref": "#/$defs/ESQLDimensionTypes",
"description": "The dimension to display on the X-axis (horizontal)."
},
"y_axis": {
"anyOf": [
{
"$ref": "#/$defs/ESQLDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The dimension to display on the Y-axis (vertical). Optional for 1D heatmaps."
},
"metric": {
"$ref": "#/$defs/ESQLMetricTypes",
"description": "The metric that determines cell color intensity."
}
},
"required": [
"query",
"x_axis",
"metric"
],
"title": "ESQLHeatmapPanelConfig",
"type": "object"
},
"ESQLLinePanelConfig": {
"additionalProperties": false,
"description": "Configuration for an ES|QL line panel.",
"properties": {
"query": {
"$ref": "#/$defs/ESQLQueryTypes",
"description": "The ES|QL query to execute."
},
"time_field": {
"default": "@timestamp",
"description": "The time field to use for the dashboard time picker. Defaults to '@timestamp'.",
"title": "Time Field",
"type": "string"
},
"dimension": {
"anyOf": [
{
"$ref": "#/$defs/ESQLDimensionTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Defines the X-axis dimension for the chart. XY charts support 0 or 1 dimension."
},
"metrics": {
"description": "Defines the metrics for the chart. At least one metric is required.",
"items": {
"$ref": "#/$defs/ESQLXYMetricTypes"
},
"minItems": 1,
"title": "Metrics",
"type": "array"
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/ESQLBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional dimension to split the series by. If provided, it will be used to break down the data into multiple series."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/XYLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color palette."
},
"type": {
"const": "line",
"default": "line",
"description": "The type of XY chart to display. Defaults to 'line'.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/LineChartAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
}
},
"required": [
"query",
"metrics"
],
"title": "ESQLLinePanelConfig",
"type": "object"
},
"ESQLMetric": {
"additionalProperties": false,
"description": "A metric that is defined in the ESQL query.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"field": {
"description": "The field in the data view that this metric is based on.",
"title": "Field",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display label for the metric.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric (number, bytes, bits, percent, duration, or custom)."
}
},
"required": [
"field"
],
"title": "ESQLMetric",
"type": "object"
},
"ESQLMetricChartMetricTypes": {
"additionalProperties": false,
"description": "Metric chart ES|QL metric with color options.",
"properties": {
"color": {
"anyOf": [
{
"$ref": "#/$defs/MetricChartColor"
},
{
"type": "null"
}
],
"default": null,
"description": "Color range mapping and application mode for this metric."
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"field": {
"description": "The field in the data view that this metric is based on.",
"title": "Field",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display label for the metric.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric (number, bytes, bits, percent, duration, or custom)."
}
},
"required": [
"field"
],
"title": "MetricESQLMetric",
"type": "object"
},
"ESQLMetricFormat": {
"additionalProperties": false,
"description": "The format configuration for ES|QL metrics.\n\nSupports standard format types like number, bytes, bits, percent, and duration.\nThis is separate from LensMetricFormat as ES|QL and Lens formatting may diverge in the future.",
"properties": {
"type": {
"enum": [
"number",
"bytes",
"bits",
"percent",
"duration"
],
"title": "Type",
"type": "string"
},
"decimals": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The number of decimal places to display. If not specified, defaults to 2 for number/bytes/percent/duration, 0 for bits.",
"title": "Decimals"
},
"suffix": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The suffix to display after the number.",
"title": "Suffix"
},
"compact": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to display the number in a compact format.",
"title": "Compact"
},
"pattern": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The pattern to display the number in.",
"title": "Pattern"
}
},
"required": [
"type"
],
"title": "ESQLMetricFormat",
"type": "object"
},
"ESQLMetricFormatTypes": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetricFormat"
},
{
"$ref": "#/$defs/ESQLCustomMetricFormat"
}
]
},
"ESQLMetricPanelConfig": {
"additionalProperties": false,
"description": "Configuration for an ES|QL metric panel.",
"properties": {
"query": {
"$ref": "#/$defs/ESQLQueryTypes",
"description": "The ES|QL query to execute."
},
"time_field": {
"default": "@timestamp",
"description": "The time field to use for the dashboard time picker. Defaults to '@timestamp'.",
"title": "Time Field",
"type": "string"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "metric",
"default": "metric",
"description": "The type of chart, which is 'metric' for this visualization.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/MetricAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Visual appearance configuration for the metric."
},
"titles_and_text": {
"anyOf": [
{
"$ref": "#/$defs/MetricTitlesAndText"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart titles and text."
},
"primary": {
"$ref": "#/$defs/ESQLMetricChartMetricTypes",
"description": "The primary metric to display in the chart. This is the main value shown in the metric visualization."
},
"secondary": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetricChartMetricTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional secondary metric to display alongside the primary metric."
},
"maximum": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetricTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional maximum metric to display, often used for comparison or thresholds."
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/ESQLBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "An optional breakdown dimension to split metric values by category."
}
},
"required": [
"query",
"primary"
],
"title": "ESQLMetricPanelConfig",
"type": "object"
},
"ESQLMetricTypes": {
"additionalProperties": false,
"description": "A metric that is defined in the ESQL query.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"field": {
"description": "The field in the data view that this metric is based on.",
"title": "Field",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display label for the metric.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric (number, bytes, bits, percent, duration, or custom)."
}
},
"required": [
"field"
],
"title": "ESQLMetric",
"type": "object"
},
"ESQLMosaicPanelConfig": {
"additionalProperties": false,
"description": "Configuration for an ES|QL mosaic panel.",
"properties": {
"query": {
"$ref": "#/$defs/ESQLQueryTypes",
"description": "The ES|QL query to execute."
},
"time_field": {
"default": "@timestamp",
"description": "The time field to use for the dashboard time picker. Defaults to '@timestamp'.",
"title": "Time Field",
"type": "string"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "mosaic",
"default": "mosaic",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/MosaicAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/MosaicLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color."
},
"metric": {
"$ref": "#/$defs/ESQLMetricTypes",
"description": "Metric that determines the size of rectangles. Mosaic charts support only one metric."
},
"dimension": {
"$ref": "#/$defs/ESQLDimensionTypes",
"description": "Primary dimension for grouping data. Mosaic charts support only one dimension."
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/ESQLBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional secondary breakdown for splitting the mosaic into sub-groups."
}
},
"required": [
"query",
"metric",
"dimension"
],
"title": "ESQLMosaicPanelConfig",
"type": "object"
},
"ESQLPanelConfig": {
"discriminator": {
"mapping": {
"area": "#/$defs/ESQLAreaPanelConfig",
"bar": "#/$defs/ESQLBarPanelConfig",
"datatable": "#/$defs/ESQLDatatablePanelConfig",
"gauge": "#/$defs/ESQLGaugePanelConfig",
"heatmap": "#/$defs/ESQLHeatmapPanelConfig",
"line": "#/$defs/ESQLLinePanelConfig",
"metric": "#/$defs/ESQLMetricPanelConfig",
"mosaic": "#/$defs/ESQLMosaicPanelConfig",
"pie": "#/$defs/ESQLPiePanelConfig",
"tagcloud": "#/$defs/ESQLTagcloudPanelConfig",
"treemap": "#/$defs/ESQLTreemapPanelConfig",
"waffle": "#/$defs/ESQLWafflePanelConfig"
},
"propertyName": "type"
},
"oneOf": [
{
"$ref": "#/$defs/ESQLMetricPanelConfig"
},
{
"$ref": "#/$defs/ESQLGaugePanelConfig"
},
{
"$ref": "#/$defs/ESQLHeatmapPanelConfig"
},
{
"$ref": "#/$defs/ESQLPiePanelConfig"
},
{
"$ref": "#/$defs/ESQLLinePanelConfig"
},
{
"$ref": "#/$defs/ESQLBarPanelConfig"
},
{
"$ref": "#/$defs/ESQLAreaPanelConfig"
},
{
"$ref": "#/$defs/ESQLTagcloudPanelConfig"
},
{
"$ref": "#/$defs/ESQLDatatablePanelConfig"
},
{
"$ref": "#/$defs/ESQLMosaicPanelConfig"
},
{
"$ref": "#/$defs/ESQLTreemapPanelConfig"
},
{
"$ref": "#/$defs/ESQLWafflePanelConfig"
}
]
},
"ESQLPiePanelConfig": {
"additionalProperties": false,
"description": "Configuration for an ES|QL pie panel.",
"properties": {
"query": {
"$ref": "#/$defs/ESQLQueryTypes",
"description": "The ES|QL query to execute."
},
"time_field": {
"default": "@timestamp",
"description": "The time field to use for the dashboard time picker. Defaults to '@timestamp'.",
"title": "Time Field",
"type": "string"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "pie",
"default": "pie",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/PieChartAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance, including donut size."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/PieLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color."
},
"metrics": {
"description": "Metrics that determine the size of slices.",
"items": {
"$ref": "#/$defs/ESQLMetricTypes"
},
"minItems": 1,
"title": "Metrics",
"type": "array"
},
"breakdowns": {
"description": "The breakdowns that determine the slices of the pie chart. First breakdown is primary, additional breakdowns are secondary.",
"items": {
"$ref": "#/$defs/ESQLDimensionTypes"
},
"title": "Breakdowns",
"type": "array"
}
},
"required": [
"query",
"metrics",
"breakdowns"
],
"title": "ESQLPiePanelConfig",
"type": "object"
},
"ESQLQueryTypes": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"anyOf": [
{
"type": "string"
},
{
"items": {},
"type": "array"
}
]
},
"type": "array"
}
],
"description": "Represents an ESQL (Elasticsearch Query Language) query configuration.\n\nESQL is a powerful query language for Elasticsearch that provides a flexible syntax for filtering data.\n\nThe query can be provided as either:\n- A string: The complete ESQL query\n- A list of strings: Query parts that will be concatenated with pipe characters (|)\n\nThe list format supports YAML anchors for query reuse. When anchors reference arrays,\nthey create nested lists which are automatically flattened before concatenation.\n\nExample with YAML anchors:\n .base: &base_query\n - FROM logs-*\n - WHERE @timestamp > NOW() - 1h\n\n query:\n - *base_query\n - STATS count = COUNT()\n\n # Results in:\n # FROM logs-*\n # | WHERE @timestamp > NOW() - 1h\n # | STATS count = COUNT()",
"title": "ESQLQuery"
},
"ESQLTagcloudPanelConfig": {
"additionalProperties": false,
"description": "Configuration for an ES|QL tagcloud panel.",
"properties": {
"query": {
"$ref": "#/$defs/ESQLQueryTypes",
"description": "The ES|QL query to execute."
},
"time_field": {
"default": "@timestamp",
"description": "The time field to use for the dashboard time picker. Defaults to '@timestamp'.",
"title": "Time Field",
"type": "string"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "tagcloud",
"default": "tagcloud",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/TagcloudAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart colors."
},
"dimension": {
"$ref": "#/$defs/ESQLDimensionTypes",
"description": "The dimension for grouping (terms). This determines the tags shown in the cloud."
},
"metric": {
"$ref": "#/$defs/ESQLMetricTypes",
"description": "The metric for sizing. This determines the size of each tag."
}
},
"required": [
"query",
"dimension",
"metric"
],
"title": "ESQLTagcloudPanelConfig",
"type": "object"
},
"ESQLTreemapBreakdownTypes": {
"additionalProperties": false,
"description": "A dimension that is defined in the ESQL query.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"field": {
"description": "The field to use for the dimension.",
"title": "Field",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display label for the dimension.",
"title": "Label"
},
"data_type": {
"anyOf": [
{
"const": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The data type of the field. Set to 'date' for time/date fields to enable proper sorting and formatting.",
"title": "Data Type"
}
},
"required": [
"field"
],
"title": "ESQLDimension",
"type": "object"
},
"ESQLTreemapPanelConfig": {
"additionalProperties": false,
"description": "Configuration for an ES|QL treemap panel.",
"properties": {
"query": {
"$ref": "#/$defs/ESQLQueryTypes",
"description": "The ES|QL query to execute."
},
"time_field": {
"default": "@timestamp",
"description": "The time field to use for the dashboard time picker. Defaults to '@timestamp'.",
"title": "Time Field",
"type": "string"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "treemap",
"default": "treemap",
"description": "The type of chart, which is 'treemap' for this visualization.",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/TreemapAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/TreemapLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color."
},
"metric": {
"$ref": "#/$defs/ESQLMetricTypes",
"description": "Metric that determines the rectangle sizes. Treemap supports only one metric."
},
"breakdowns": {
"description": "Breakdowns that determine treemap grouping levels. Maximum 2 breakdowns supported.",
"items": {
"$ref": "#/$defs/ESQLTreemapBreakdownTypes"
},
"maxItems": 2,
"title": "Breakdowns",
"type": "array"
}
},
"required": [
"query",
"metric",
"breakdowns"
],
"title": "ESQLTreemapPanelConfig",
"type": "object"
},
"ESQLWafflePanelConfig": {
"additionalProperties": false,
"description": "Configuration for an ES|QL waffle panel.",
"properties": {
"query": {
"$ref": "#/$defs/ESQLQueryTypes",
"description": "The ES|QL query to execute."
},
"time_field": {
"default": "@timestamp",
"description": "The time field to use for the dashboard time picker. Defaults to '@timestamp'.",
"title": "Time Field",
"type": "string"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"type": {
"const": "waffle",
"default": "waffle",
"title": "Type",
"type": "string"
},
"appearance": {
"anyOf": [
{
"$ref": "#/$defs/WaffleAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart appearance."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/WaffleLegend"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart legend."
},
"color": {
"anyOf": [
{
"$ref": "#/$defs/ColorValueMapping"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for the chart color."
},
"metric": {
"$ref": "#/$defs/ESQLMetricTypes",
"description": "Metric that determines the size of squares. Waffle charts support only one metric."
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/ESQLBreakdownTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional breakdown for grouping data. Waffle charts support only one breakdown."
}
},
"required": [
"query",
"metric"
],
"title": "ESQLWafflePanelConfig",
"type": "object"
},
"ESQLXYMetricTypes": {
"additionalProperties": false,
"description": "XY chart ESQL metric with appearance options.\n\nExtends ESQLMetric to include axis and color configuration\nfor use in XY charts.",
"properties": {
"axis": {
"anyOf": [
{
"enum": [
"left",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Which Y-axis to assign this metric to ('left' or 'right').",
"title": "Axis"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom color for this metric series (hex color code, e.g., '#2196F3').",
"title": "Color"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier. If not provided, one will be generated automatically.",
"title": "Id"
},
"field": {
"description": "The field in the data view that this metric is based on.",
"title": "Field",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display label for the metric.",
"title": "Label"
},
"format": {
"anyOf": [
{
"$ref": "#/$defs/ESQLMetricFormatTypes"
},
{
"type": "null"
}
],
"default": null,
"description": "The format of the metric (number, bytes, bits, percent, duration, or custom)."
}
},
"required": [
"field"
],
"title": "XYESQLMetric",
"type": "object"
},
"GaugeAppearance": {
"additionalProperties": false,
"description": "Appearance configuration for gauge visualizations.\n\nGroups all visual styling options for gauge charts including shape, tick positioning,\nand label configuration.",
"properties": {
"shape": {
"anyOf": [
{
"enum": [
"horizontal_bullet",
"vertical_bullet",
"arc",
"circle",
"semi_circle"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The shape of the gauge visualization.",
"title": "Shape"
},
"ticks_position": {
"anyOf": [
{
"enum": [
"auto",
"bands",
"hidden"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of tick marks on the gauge.",
"title": "Ticks Position"
},
"label_major": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Major label text to display on the gauge.",
"title": "Label Major"
},
"label_minor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minor label text to display on the gauge.",
"title": "Label Minor"
}
},
"title": "GaugeAppearance",
"type": "object"
},
"GaugeTitlesAndText": {
"additionalProperties": false,
"description": "Title and subtitle display options for gauges.\n\nThese fields map to Kibana gauge `labelMajor` (title) and `labelMinor` (subtitle).\n\n- ``None`` (omit): Kibana default (auto for title, hidden for subtitle)\n- ``False``: explicitly hidden\n- ``str``: custom text",
"properties": {
"title": {
"anyOf": [
{
"type": "string"
},
{
"const": false,
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Gauge title. Omit for Kibana default, ``False`` to hide, or a string for custom text.",
"title": "Title"
},
"subtitle": {
"anyOf": [
{
"type": "string"
},
{
"const": false,
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Gauge subtitle. Omit for no subtitle, ``False`` to hide, or a string for custom text.",
"title": "Subtitle"
}
},
"title": "GaugeTitlesAndText",
"type": "object"
},
"HeatmapAppearance": {
"additionalProperties": false,
"description": "Formatting options for the chart appearance.",
"properties": {
"values": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for numeric values shown in heatmap cells."
},
"x_axis": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the X-axis labels and title."
},
"y_axis": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the Y-axis labels and title."
},
"legend": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapLegendConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the color legend."
}
},
"title": "HeatmapAppearance",
"type": "object"
},
"HeatmapAxisAppearance": {
"additionalProperties": false,
"description": "Appearance configuration for a heatmap axis.",
"properties": {
"labels": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisLabelsConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for axis tick labels."
},
"title": {
"anyOf": [
{
"$ref": "#/$defs/HeatmapAxisTitleConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for axis title visibility."
}
},
"title": "HeatmapAxisAppearance",
"type": "object"
},
"HeatmapAxisLabelsConfig": {
"additionalProperties": false,
"description": "Configuration for heatmap axis tick labels.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show tick labels on the axis.",
"title": "Visible"
}
},
"title": "HeatmapAxisLabelsConfig",
"type": "object"
},
"HeatmapAxisTitleConfig": {
"additionalProperties": false,
"description": "Configuration for heatmap axis titles.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show the axis title.",
"title": "Visible"
}
},
"title": "HeatmapAxisTitleConfig",
"type": "object"
},
"HeatmapLegendConfig": {
"additionalProperties": false,
"description": "Legend configuration for heatmap visualizations.\n\nControls the visibility and position of the color legend.\nNote: Heatmaps only support 'show' and 'hide' visibility options (not 'auto').",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
}
},
"title": "HeatmapLegendConfig",
"type": "object"
},
"HeatmapValuesConfig": {
"additionalProperties": false,
"description": "Configuration for heatmap numeric values.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show numeric values inside heatmap cells.",
"title": "Visible"
}
},
"title": "HeatmapValuesConfig",
"type": "object"
},
"LegendVisibleEnum": {
"description": "Represents the possible values for the visibility of the legend in a pie chart.",
"enum": [
"show",
"hide",
"auto"
],
"title": "LegendVisibleEnum",
"type": "string"
},
"LegendWidthEnum": {
"description": "Represents the possible values for the width/size of the legend.",
"enum": [
"small",
"medium",
"large",
"extra_large"
],
"title": "LegendWidthEnum",
"type": "string"
},
"LineChartAppearance": {
"additionalProperties": false,
"description": "Represents line chart appearance formatting options.\n\nExtends BaseXYChartAppearance to include line-specific options.",
"properties": {
"x_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the X-axis."
},
"y_left_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the left Y-axis."
},
"y_right_axis": {
"anyOf": [
{
"$ref": "#/$defs/AxisConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Configuration for the right Y-axis."
},
"values": {
"anyOf": [
{
"$ref": "#/$defs/XYValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for value labels on data points."
},
"missing_values": {
"anyOf": [
{
"enum": [
"none",
"linear",
"carry",
"lookahead",
"average",
"nearest"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "How to handle missing data points. Controls interpolation for gaps in your data.",
"title": "Missing Values"
},
"show_as_dotted": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, visually distinguish interpolated data from real data points. Defaults to `false`.",
"title": "Show As Dotted"
},
"end_values": {
"anyOf": [
{
"enum": [
"none",
"zero",
"nearest"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "How to handle the end of the time range in line/area charts.",
"title": "End Values"
},
"line_style": {
"anyOf": [
{
"enum": [
"linear",
"monotone-x",
"step-after"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The line style for line/area charts. Only 3 types are supported by Kibana: linear (straight), monotone-x (smooth), step-after (stepped).",
"title": "Line Style"
},
"show_current_time_marker": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show a vertical line at the current time in time series charts.",
"title": "Show Current Time Marker"
},
"hide_endzones": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to hide end zones in time series charts (areas where data is incomplete).",
"title": "Hide Endzones"
}
},
"title": "LineChartAppearance",
"type": "object"
},
"MetricAppearance": {
"additionalProperties": false,
"description": "Grouped appearance configuration for metric chart visualizations.\n\nGroups all visual styling options for metric charts including icons, progress bars,\nlayout, and font configuration.",
"properties": {
"primary": {
"anyOf": [
{
"$ref": "#/$defs/MetricPrimaryAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary metric appearance options."
},
"secondary": {
"anyOf": [
{
"$ref": "#/$defs/MetricSecondaryAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Secondary metric appearance options."
},
"breakdown": {
"anyOf": [
{
"$ref": "#/$defs/MetricBreakdownAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Breakdown layout options."
}
},
"title": "MetricAppearance",
"type": "object"
},
"MetricBackgroundChart": {
"additionalProperties": false,
"description": "Background chart options for the primary metric value.",
"properties": {
"type": {
"default": "line",
"description": "Background chart mode. `none` hides the background chart.",
"enum": [
"line",
"bar",
"none"
],
"title": "Type",
"type": "string"
},
"direction": {
"anyOf": [
{
"enum": [
"horizontal",
"vertical"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Bar direction. Only valid when `type` is `bar`.",
"title": "Direction"
}
},
"title": "MetricBackgroundChart",
"type": "object"
},
"MetricBreakdownAppearance": {
"additionalProperties": false,
"description": "Breakdown layout options.",
"properties": {
"column_count": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum number of columns when displaying broken-down metric values.",
"title": "Column Count"
}
},
"title": "MetricBreakdownAppearance",
"type": "object"
},
"MetricChartColor": {
"additionalProperties": false,
"description": "Color settings for metric chart metrics, including thresholds and application mode.",
"properties": {
"apply_to": {
"anyOf": [
{
"enum": [
"value",
"background"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls where metric colors are applied: value text or background.",
"title": "Apply To"
},
"range_type": {
"default": "number",
"description": "How threshold values are interpreted by Kibana.",
"enum": [
"number",
"percent"
],
"title": "Range Type",
"type": "string"
},
"range_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": 0,
"description": "Optional lower bound for the palette domain.",
"title": "Range Min"
},
"range_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional upper bound for the palette domain.",
"title": "Range Max"
},
"thresholds": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ColorThreshold"
},
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Ordered threshold bands used to build color palettes.",
"title": "Thresholds"
}
},
"title": "MetricChartColor",
"type": "object"
},
"MetricPrimaryAppearance": {
"additionalProperties": false,
"description": "Primary metric appearance options.",
"properties": {
"icon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Icon identifier to display alongside the primary metric value.",
"title": "Icon"
},
"icon_position": {
"anyOf": [
{
"enum": [
"left",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Horizontal icon alignment relative to the primary metric value.",
"title": "Icon Position"
},
"background_chart": {
"anyOf": [
{
"$ref": "#/$defs/MetricBackgroundChart"
},
{
"type": "null"
}
],
"default": null,
"description": "Background chart options for the primary metric value."
},
"font_size": {
"anyOf": [
{
"enum": [
"default",
"fit",
"custom"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Font size mode for the primary metric value.",
"title": "Font Size"
},
"position": {
"anyOf": [
{
"enum": [
"top",
"bottom"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical position of the primary metric value within the panel.",
"title": "Position"
},
"alignment": {
"anyOf": [
{
"enum": [
"left",
"center",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text alignment for the primary metric value.",
"title": "Alignment"
}
},
"title": "MetricPrimaryAppearance",
"type": "object"
},
"MetricSecondaryAppearance": {
"additionalProperties": false,
"description": "Secondary metric appearance options.",
"properties": {
"alignment": {
"anyOf": [
{
"enum": [
"left",
"center",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text alignment for the secondary metric value.",
"title": "Alignment"
},
"label": {
"anyOf": [
{
"$ref": "#/$defs/MetricSecondaryLabelAppearance"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom secondary label configuration."
}
},
"title": "MetricSecondaryAppearance",
"type": "object"
},
"MetricSecondaryLabelAppearance": {
"additionalProperties": false,
"description": "Secondary metric label appearance options.",
"properties": {
"text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom label text for the secondary metric, overriding its default label.",
"title": "Text"
},
"position": {
"anyOf": [
{
"enum": [
"before",
"after"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of secondary label relative to the metric value.",
"title": "Position"
}
},
"title": "MetricSecondaryLabelAppearance",
"type": "object"
},
"MetricTitlesAndText": {
"additionalProperties": false,
"description": "Titles and text formatting options for metric charts.",
"properties": {
"subtitle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Custom subtitle text displayed below the metric title.",
"title": "Subtitle"
},
"alignment": {
"anyOf": [
{
"enum": [
"left",
"center",
"right"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text alignment for the metric title and subtitle.",
"title": "Alignment"
},
"weight": {
"anyOf": [
{
"enum": [
"bold",
"normal",
"lighter"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Font weight for the metric title.",
"title": "Weight"
}
},
"title": "MetricTitlesAndText",
"type": "object"
},
"MosaicAppearance": {
"additionalProperties": false,
"description": "Formatting options for value labels.",
"properties": {
"values": {
"anyOf": [
{
"$ref": "#/$defs/MosaicValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for numeric values."
}
},
"title": "MosaicAppearance",
"type": "object"
},
"MosaicLegend": {
"additionalProperties": false,
"description": "Represents legend formatting options for mosaic charts.",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
},
"truncate_labels": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines to truncate the legend labels to. Kibana defaults to 1 if not specified. Set to 0 to disable truncation.",
"title": "Truncate Labels"
},
"nested": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend in nested format for multi-level mosaic charts. Kibana defaults to False if not specified.",
"title": "Nested"
},
"show_single_series": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend when there is only one series. Kibana defaults to false if not specified.",
"title": "Show Single Series"
}
},
"title": "MosaicLegend",
"type": "object"
},
"MosaicValuesConfig": {
"additionalProperties": false,
"description": "Formatting options for value labels.",
"properties": {
"format": {
"anyOf": [
{
"enum": [
"percent",
"value",
"hide"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls how values are displayed in the mosaic chart. Kibana defaults to 'percent' if not specified.",
"title": "Format"
},
"decimal_places": {
"anyOf": [
{
"maximum": 10,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the number of decimal places for values in the mosaic chart. Kibana defaults to 2 if not specified.",
"title": "Decimal Places"
}
},
"title": "MosaicValuesConfig",
"type": "object"
},
"PieCategoriesConfig": {
"additionalProperties": false,
"description": "Formatting options for category labels.",
"properties": {
"position": {
"anyOf": [
{
"$ref": "#/$defs/PieSliceLabelsEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the visibility of category labels in the pie chart. Kibana defaults to 'auto' if not specified."
}
},
"title": "PieCategoriesConfig",
"type": "object"
},
"PieChartAppearance": {
"additionalProperties": false,
"description": "Represents chart appearance formatting options for Pie charts.",
"properties": {
"donut": {
"anyOf": [
{
"enum": [
"small",
"medium",
"large"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the size of the donut hole in the pie chart. Kibana defaults to 'medium' if not specified.",
"title": "Donut"
},
"categories": {
"anyOf": [
{
"$ref": "#/$defs/PieCategoriesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for category labels."
},
"values": {
"anyOf": [
{
"$ref": "#/$defs/PieValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for numeric values."
}
},
"title": "PieChartAppearance",
"type": "object"
},
"PieLegend": {
"additionalProperties": false,
"description": "Represents legend formatting options for pie charts.",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
},
"truncate_labels": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines to truncate the legend labels to. Kibana defaults to 1 if not specified. Set to 0 to disable truncation.",
"title": "Truncate Labels"
},
"nested": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend in nested format for multi-level pie charts. Kibana defaults to False if not specified.",
"title": "Nested"
},
"show_single_series": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend when there is only one series. Kibana defaults to false if not specified.",
"title": "Show Single Series"
}
},
"title": "PieLegend",
"type": "object"
},
"PieSliceLabelsEnum": {
"description": "Represents the possible values for slice labels in a pie chart.",
"enum": [
"hide",
"inside",
"auto"
],
"title": "PieSliceLabelsEnum",
"type": "string"
},
"PieSliceValuesEnum": {
"description": "Represents the possible values for slice values in a pie chart.",
"enum": [
"hide",
"integer",
"percent"
],
"title": "PieSliceValuesEnum",
"type": "string"
},
"PieValuesConfig": {
"additionalProperties": false,
"description": "Formatting options for numeric values.",
"properties": {
"format": {
"anyOf": [
{
"$ref": "#/$defs/PieSliceValuesEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the display of values in the pie chart. Kibana defaults to percent if not specified."
},
"decimal_places": {
"anyOf": [
{
"maximum": 10,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the number of decimal places for values in the pie chart. Kibana defaults to 2 if not specified.",
"title": "Decimal Places"
}
},
"title": "PieValuesConfig",
"type": "object"
},
"Position": {
"additionalProperties": false,
"description": "Panel position configuration.\n\nDetermines the x/y coordinates of a panel on the dashboard grid.\nIf not specified, the panel will be auto-positioned.",
"properties": {
"x": {
"anyOf": [
{
"maximum": 48,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The horizontal starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "X"
},
"y": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The vertical starting position of the panel on the grid (0-based). If None, position will be auto-calculated.",
"title": "Y"
}
},
"title": "Position",
"type": "object"
},
"Size": {
"additionalProperties": false,
"description": "Panel size configuration.\n\nDetermines the width and height of a panel on the dashboard grid.\nWidth accepts semantic values ('whole', 'half', etc.) or integers.",
"properties": {
"w": {
"anyOf": [
{
"type": "integer"
},
{
"enum": [
"whole",
"half",
"third",
"quarter",
"sixth",
"eighth"
],
"type": "string"
}
],
"default": 12,
"description": "The width of the panel in grid units.\n\nDefaults to 12 (quarter width). Accepts semantic values ('whole', 'half', 'third', 'quarter', 'sixth', 'eighth') or integers (1-48).",
"title": "W"
},
"h": {
"default": 8,
"description": "The height of the panel in grid units. Defaults to 8.",
"exclusiveMinimum": 0,
"title": "H",
"type": "integer"
}
},
"title": "Size",
"type": "object"
},
"TagcloudAppearance": {
"additionalProperties": false,
"description": "Appearance settings for tagcloud.",
"properties": {
"min_font_size": {
"anyOf": [
{
"maximum": 100,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": 12,
"description": "Minimum font size for tags. Defaults to 12.",
"title": "Min Font Size"
},
"max_font_size": {
"anyOf": [
{
"maximum": 200,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": 72,
"description": "Maximum font size for tags. Defaults to 72.",
"title": "Max Font Size"
},
"orientation": {
"anyOf": [
{
"$ref": "#/$defs/TagcloudOrientationEnum"
},
{
"type": "null"
}
],
"default": "single",
"description": "Text orientation configuration. Defaults to 'single'."
},
"labels": {
"anyOf": [
{
"$ref": "#/$defs/TagcloudLabelsConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Label visibility configuration."
}
},
"title": "TagcloudAppearance",
"type": "object"
},
"TagcloudLabelsConfig": {
"additionalProperties": false,
"description": "Label visibility settings for tagcloud.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": true,
"description": "Toggle for label visibility. Defaults to True.",
"title": "Visible"
}
},
"title": "TagcloudLabelsConfig",
"type": "object"
},
"TagcloudOrientationEnum": {
"description": "Text orientation options for tagcloud visualizations.\n\nControls how tags are rotated in the word cloud display.",
"enum": [
"single",
"right angled",
"multiple"
],
"title": "TagcloudOrientationEnum",
"type": "string"
},
"TreemapAppearance": {
"additionalProperties": false,
"description": "Formatting options for treemap appearance.",
"properties": {
"categories": {
"anyOf": [
{
"$ref": "#/$defs/TreemapCategoriesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for category labels."
},
"values": {
"anyOf": [
{
"$ref": "#/$defs/TreemapValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for numeric values."
}
},
"title": "TreemapAppearance",
"type": "object"
},
"TreemapCategoriesConfig": {
"additionalProperties": false,
"description": "Formatting options for category labels.",
"properties": {
"position": {
"anyOf": [
{
"$ref": "#/$defs/TreemapSliceLabelsEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the visibility of category labels. Defaults to show when not specified."
}
},
"title": "TreemapCategoriesConfig",
"type": "object"
},
"TreemapLegend": {
"additionalProperties": false,
"description": "Represents legend formatting options for treemap charts.",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
},
"truncate_labels": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines to truncate the legend labels to. Kibana defaults to 1 if not specified. Set to 0 to disable truncation.",
"title": "Truncate Labels"
},
"nested": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend in nested format for multi-level pie charts. Kibana defaults to False if not specified.",
"title": "Nested"
},
"show_single_series": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend when there is only one series. Kibana defaults to false if not specified.",
"title": "Show Single Series"
}
},
"title": "TreemapLegend",
"type": "object"
},
"TreemapSliceLabelsEnum": {
"description": "Represents the possible values for treemap slice labels.",
"enum": [
"hide",
"show"
],
"title": "TreemapSliceLabelsEnum",
"type": "string"
},
"TreemapValuesConfig": {
"additionalProperties": false,
"description": "Formatting options for numeric values.",
"properties": {
"format": {
"anyOf": [
{
"$ref": "#/$defs/PieSliceValuesEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the display of values in treemap rectangles. Defaults to percent."
},
"decimal_places": {
"anyOf": [
{
"maximum": 10,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the number of decimal places for values.",
"title": "Decimal Places"
}
},
"title": "TreemapValuesConfig",
"type": "object"
},
"UrlDrilldown": {
"additionalProperties": false,
"description": "URL drilldown configuration.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional unique identifier for the drilldown. If not provided, one will be generated.",
"title": "Id"
},
"name": {
"description": "Display name for the drilldown.",
"title": "Name",
"type": "string"
},
"triggers": {
"description": "List of triggers that activate this drilldown. Defaults to ['click'].",
"items": {
"$ref": "#/$defs/DrilldownTrigger"
},
"title": "Triggers",
"type": "array"
},
"url": {
"description": "Target URL template. Can include Kibana template variables.",
"title": "Url",
"type": "string"
},
"new_tab": {
"default": false,
"description": "Whether to open the URL in a new tab. Defaults to False.",
"title": "New Tab",
"type": "boolean"
},
"encode_url": {
"default": true,
"description": "Whether to URL-encode the template variables. Defaults to True.",
"title": "Encode Url",
"type": "boolean"
}
},
"required": [
"name",
"url"
],
"title": "UrlDrilldown",
"type": "object"
},
"WaffleAppearance": {
"additionalProperties": false,
"description": "Formatting options for value labels.",
"properties": {
"values": {
"anyOf": [
{
"$ref": "#/$defs/WaffleValuesConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Formatting options for numeric values."
}
},
"title": "WaffleAppearance",
"type": "object"
},
"WaffleLegend": {
"additionalProperties": false,
"description": "Represents legend formatting options for waffle charts.",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
},
"truncate_labels": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines to truncate the legend labels to. Kibana defaults to 1 if not specified. Set to 0 to disable truncation.",
"title": "Truncate Labels"
},
"nested": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend in nested format for multi-level waffle charts. Kibana defaults to False if not specified.",
"title": "Nested"
},
"show_single_series": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend when there is only one series. Kibana defaults to false if not specified.",
"title": "Show Single Series"
}
},
"title": "WaffleLegend",
"type": "object"
},
"WaffleValuesConfig": {
"additionalProperties": false,
"description": "Formatting options for value labels.",
"properties": {
"format": {
"anyOf": [
{
"enum": [
"percent",
"value",
"hide"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls how values are displayed in the waffle chart. Kibana defaults to 'percent' if not specified.",
"title": "Format"
},
"decimal_places": {
"anyOf": [
{
"maximum": 10,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls the number of decimal places for values in the waffle chart. Kibana defaults to 2 if not specified.",
"title": "Decimal Places"
}
},
"title": "WaffleValuesConfig",
"type": "object"
},
"XYLegend": {
"additionalProperties": false,
"description": "Represents legend formatting options for XY charts.",
"properties": {
"visible": {
"anyOf": [
{
"$ref": "#/$defs/LegendVisibleEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Visibility of the legend. Kibana defaults vary by chart type."
},
"position": {
"anyOf": [
{
"enum": [
"top",
"right",
"bottom",
"left"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Position of the legend.",
"title": "Position"
},
"width": {
"anyOf": [
{
"$ref": "#/$defs/LegendWidthEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Width of the legend."
},
"show_single_series": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether to show legend when there is only one series. Kibana defaults to false if not specified.",
"title": "Show Single Series"
},
"truncate_labels": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of lines to truncate legend labels to. Set to 0 to disable truncation. Kibana defaults to 1 if not specified.",
"title": "Truncate Labels"
}
},
"title": "XYLegend",
"type": "object"
},
"XYValuesConfig": {
"additionalProperties": false,
"description": "Formatting options for value labels on data points.",
"properties": {
"visible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Controls whether value labels are shown on data points (e.g., on top of bars). Kibana defaults to hidden if not specified.",
"title": "Visible"
}
},
"title": "XYValuesConfig",
"type": "object"
}
},
"additionalProperties": false,
"description": "Represents an ES|QL chart panel.\n\nThe esql field contains a discriminated union of ES|QL chart panel configurations.\nThe chart type is determined by the 'type' field.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique identifier for the panel. If not provided, one may be generated during compilation.",
"title": "Id"
},
"title": {
"default": "",
"description": "The title displayed on the panel header. Can be an empty string.",
"title": "Title",
"type": "string"
},
"hide_title": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If `true`, the panel title will be hidden. Defaults to `false` (title is shown).",
"title": "Hide Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the panel's content or purpose. Defaults to an empty string.",
"title": "Description"
},
"size": {
"$ref": "#/$defs/Size",
"description": "Defines the panel's size on the dashboard grid."
},
"position": {
"$ref": "#/$defs/Position",
"description": "Defines the panel's position on the dashboard grid. If not specified, position will be auto-calculated."
},
"drilldowns": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/DrilldownTypes"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional list of drilldowns to attach to this panel.",
"title": "Drilldowns"
},
"esql": {
"$ref": "#/$defs/ESQLPanelConfig",
"description": "ES|QL panel configuration."
}
},
"required": [
"esql"
],
"title": "ESQLPanel",
"type": "object"
}