diff --git a/.bazelignore b/.bazelignore
index 0e96d56e79aa8..fc8736ac96319 100644
--- a/.bazelignore
+++ b/.bazelignore
@@ -3,7 +3,6 @@
# https://github.com/bazelbuild/bazel/issues/7093
# https://github.com/bazelbuild/bazel/issues/8106
.buildkite
-.ci
.chromium
.git
.github
diff --git a/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml b/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml
index c0c68d8fc2192..80ea65eff8ea6 100644
--- a/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml
+++ b/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml
@@ -21,7 +21,7 @@ steps:
- build
- quick_checks
timeout_in_minutes: 60
- parallelism: 6
+ parallelism: 10
retry:
automatic:
- exit_status: '*'
diff --git a/.buildkite/scripts/lifecycle/pre_command.sh b/.buildkite/scripts/lifecycle/pre_command.sh
index 966ba22c1272c..e111d62beed6b 100755
--- a/.buildkite/scripts/lifecycle/pre_command.sh
+++ b/.buildkite/scripts/lifecycle/pre_command.sh
@@ -142,14 +142,14 @@ export SYNTHETICS_REMOTE_KIBANA_URL
DEPLOY_TAGGER_SLACK_WEBHOOK_URL=${DEPLOY_TAGGER_SLACK_WEBHOOK_URL:-"$(vault_get kibana-serverless-release-tools DEPLOY_TAGGER_SLACK_WEBHOOK_URL)"}
export DEPLOY_TAGGER_SLACK_WEBHOOK_URL
-GCS_SA_CDN_QA_KEY="$(vault_get gcs-sa-cdn-qa key)"
-export GCS_SA_CDN_QA_KEY
+GCS_SA_CDN_KEY="$(vault_get gcs-sa-cdn-prod key)"
+export GCS_SA_CDN_KEY
-GCS_SA_CDN_QA_EMAIL="$(vault_get gcs-sa-cdn-qa email)"
-export GCS_SA_CDN_QA_EMAIL
+GCS_SA_CDN_EMAIL="$(vault_get gcs-sa-cdn-prod email)"
+export GCS_SA_CDN_EMAIL
-GCS_SA_CDN_QA_BUCKET="$(vault_get gcs-sa-cdn-qa bucket)"
-export GCS_SA_CDN_QA_BUCKET
+GCS_SA_CDN_BUCKET="$(vault_get gcs-sa-cdn-prod bucket)"
+export GCS_SA_CDN_BUCKET
# Setup Failed Test Reporter Elasticsearch credentials
{
diff --git a/.buildkite/scripts/steps/artifacts/docker_image.sh b/.buildkite/scripts/steps/artifacts/docker_image.sh
index 6e07cec0947ba..251c5764aa324 100755
--- a/.buildkite/scripts/steps/artifacts/docker_image.sh
+++ b/.buildkite/scripts/steps/artifacts/docker_image.sh
@@ -90,13 +90,13 @@ node scripts/licenses_csv_report "--csv=target/dependencies-$GIT_ABBREV_COMMIT.c
echo "--- Upload CDN assets"
cd target
-gcloud auth activate-service-account --key-file <(echo "$GCS_SA_CDN_QA_KEY")
+gcloud auth activate-service-account --key-file <(echo "$GCS_SA_CDN_KEY")
CDN_ASSETS_FOLDER=$(mktemp -d)
tar -xf "kibana-$BASE_VERSION-cdn-assets.tar.gz" -C "$CDN_ASSETS_FOLDER" --strip=1
-gsutil -m cp -r "$CDN_ASSETS_FOLDER/*" "gs://$GCS_SA_CDN_QA_BUCKET/$GIT_ABBREV_COMMIT"
-gcloud auth revoke "$GCS_SA_CDN_QA_EMAIL"
+gsutil -m cp -r "$CDN_ASSETS_FOLDER/*" "gs://$GCS_SA_CDN_BUCKET/$GIT_ABBREV_COMMIT"
+gcloud auth revoke "$GCS_SA_CDN_EMAIL"
echo "--- Upload archives"
buildkite-agent artifact upload "kibana-$BASE_VERSION-linux-x86_64.tar.gz"
diff --git a/.eslintignore b/.eslintignore
index 211ee52634a04..296d712a4cdfe 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -15,7 +15,6 @@ node_modules
target
snapshots.js
-!/.ci
!/.eslintrc.js
!.storybook
!.buildkite
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 526c14d18846c..8bbe6945d97ac 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -813,6 +813,7 @@ x-pack/examples/third_party_vis_lens_example @elastic/kibana-visualizations
x-pack/plugins/threat_intelligence @elastic/security-threat-hunting-investigations
x-pack/plugins/timelines @elastic/security-threat-hunting-investigations
packages/kbn-timelion-grammar @elastic/kibana-visualizations
+packages/kbn-timerange @elastic/obs-ux-logs-team
packages/kbn-tinymath @elastic/kibana-visualizations
packages/kbn-tooling-log @elastic/kibana-operations
x-pack/plugins/transform @elastic/ml-ui
@@ -1148,7 +1149,6 @@ x-pack/plugins/infra/server/lib/alerting @elastic/obs-ux-management-team
/src/setup_node_env/ @elastic/kibana-operations
/src/cli/keystore/ @elastic/kibana-operations
/src/cli/serve/ @elastic/kibana-operations
-/.ci/es-snapshots/ @elastic/kibana-operations
/.github/workflows/ @elastic/kibana-operations
/vars/ @elastic/kibana-operations
/.bazelignore @elastic/kibana-operations
diff --git a/.github/workflows/docs-preview-links.yml b/.github/workflows/docs-preview-links.yml
index fe374deb5c2c2..7e8242c6035f9 100644
--- a/.github/workflows/docs-preview-links.yml
+++ b/.github/workflows/docs-preview-links.yml
@@ -16,5 +16,5 @@ jobs:
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
repo: ${{ github.event.repository.name }}
- preview-path: 'guide/en/observability/master/index.html'
+ preview-path: 'guide/index.html'
pr: ${{ github.event.pull_request.number }}
diff --git a/.gitignore b/.gitignore
index 2739b9a50172c..dbfb30c92ff31 100644
--- a/.gitignore
+++ b/.gitignore
@@ -81,9 +81,6 @@ package-lock.json
npm-debug.log*
.tern-project
.nyc_output
-.ci/pipeline-library/build/
-.ci/runbld
-.ci/bash_standard_lib.sh
.gradle
.vagrant
.envrc
diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx
index d43c6398c29b4..767c9750b2bf7 100644
--- a/api_docs/actions.mdx
+++ b/api_docs/actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions
title: "actions"
image: https://source.unsplash.com/400x175/?github
description: API docs for the actions plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions']
---
import actionsObj from './actions.devdocs.json';
diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx
index 6d2178ea713ff..be176bd763c53 100644
--- a/api_docs/advanced_settings.mdx
+++ b/api_docs/advanced_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings
title: "advancedSettings"
image: https://source.unsplash.com/400x175/?github
description: API docs for the advancedSettings plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings']
---
import advancedSettingsObj from './advanced_settings.devdocs.json';
diff --git a/api_docs/ai_assistant_management_observability.mdx b/api_docs/ai_assistant_management_observability.mdx
index e3dbc2551beeb..41d3120cd25ae 100644
--- a/api_docs/ai_assistant_management_observability.mdx
+++ b/api_docs/ai_assistant_management_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementObservability
title: "aiAssistantManagementObservability"
image: https://source.unsplash.com/400x175/?github
description: API docs for the aiAssistantManagementObservability plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementObservability']
---
import aiAssistantManagementObservabilityObj from './ai_assistant_management_observability.devdocs.json';
diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx
index ab216640fcff3..bbe400e99dbc8 100644
--- a/api_docs/ai_assistant_management_selection.mdx
+++ b/api_docs/ai_assistant_management_selection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection
title: "aiAssistantManagementSelection"
image: https://source.unsplash.com/400x175/?github
description: API docs for the aiAssistantManagementSelection plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection']
---
import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json';
diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx
index 2d4b28b18823c..087ba326fa748 100644
--- a/api_docs/aiops.mdx
+++ b/api_docs/aiops.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops
title: "aiops"
image: https://source.unsplash.com/400x175/?github
description: API docs for the aiops plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops']
---
import aiopsObj from './aiops.devdocs.json';
diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx
index d36ebd8783c39..28bd7629953c7 100644
--- a/api_docs/alerting.mdx
+++ b/api_docs/alerting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting
title: "alerting"
image: https://source.unsplash.com/400x175/?github
description: API docs for the alerting plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting']
---
import alertingObj from './alerting.devdocs.json';
diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx
index 97b6f5539cb29..6b03ed1a9acc6 100644
--- a/api_docs/apm.mdx
+++ b/api_docs/apm.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm
title: "apm"
image: https://source.unsplash.com/400x175/?github
description: API docs for the apm plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm']
---
import apmObj from './apm.devdocs.json';
diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx
index 5816bf254775e..c21060ea546a8 100644
--- a/api_docs/apm_data_access.mdx
+++ b/api_docs/apm_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess
title: "apmDataAccess"
image: https://source.unsplash.com/400x175/?github
description: API docs for the apmDataAccess plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess']
---
import apmDataAccessObj from './apm_data_access.devdocs.json';
diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx
index 3b144e7639d8e..5a36f586b0d9f 100644
--- a/api_docs/asset_manager.mdx
+++ b/api_docs/asset_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager
title: "assetManager"
image: https://source.unsplash.com/400x175/?github
description: API docs for the assetManager plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager']
---
import assetManagerObj from './asset_manager.devdocs.json';
diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx
index f6abb41894fc2..6b8d1325aacbe 100644
--- a/api_docs/banners.mdx
+++ b/api_docs/banners.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners
title: "banners"
image: https://source.unsplash.com/400x175/?github
description: API docs for the banners plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners']
---
import bannersObj from './banners.devdocs.json';
diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx
index ecf1c9fa52582..3d4b006b43e8b 100644
--- a/api_docs/bfetch.mdx
+++ b/api_docs/bfetch.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch
title: "bfetch"
image: https://source.unsplash.com/400x175/?github
description: API docs for the bfetch plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch']
---
import bfetchObj from './bfetch.devdocs.json';
diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx
index a830f857d18a9..fe5beb72e3da1 100644
--- a/api_docs/canvas.mdx
+++ b/api_docs/canvas.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas
title: "canvas"
image: https://source.unsplash.com/400x175/?github
description: API docs for the canvas plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas']
---
import canvasObj from './canvas.devdocs.json';
diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx
index 5887c75605c9d..f3115f0e30bdf 100644
--- a/api_docs/cases.mdx
+++ b/api_docs/cases.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases
title: "cases"
image: https://source.unsplash.com/400x175/?github
description: API docs for the cases plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases']
---
import casesObj from './cases.devdocs.json';
diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx
index 58527806ac51a..b856129ca36dd 100644
--- a/api_docs/charts.mdx
+++ b/api_docs/charts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts
title: "charts"
image: https://source.unsplash.com/400x175/?github
description: API docs for the charts plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts']
---
import chartsObj from './charts.devdocs.json';
diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx
index e8410b95b1026..da5dcb887baf2 100644
--- a/api_docs/cloud.mdx
+++ b/api_docs/cloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud
title: "cloud"
image: https://source.unsplash.com/400x175/?github
description: API docs for the cloud plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud']
---
import cloudObj from './cloud.devdocs.json';
diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx
index 99b6697d5f088..e0220ef31c29c 100644
--- a/api_docs/cloud_data_migration.mdx
+++ b/api_docs/cloud_data_migration.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration
title: "cloudDataMigration"
image: https://source.unsplash.com/400x175/?github
description: API docs for the cloudDataMigration plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration']
---
import cloudDataMigrationObj from './cloud_data_migration.devdocs.json';
diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx
index 211ad0a23a2af..97f26074cb914 100644
--- a/api_docs/cloud_defend.mdx
+++ b/api_docs/cloud_defend.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend
title: "cloudDefend"
image: https://source.unsplash.com/400x175/?github
description: API docs for the cloudDefend plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend']
---
import cloudDefendObj from './cloud_defend.devdocs.json';
diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx
index cacb804031389..438d42a415f6d 100644
--- a/api_docs/cloud_experiments.mdx
+++ b/api_docs/cloud_experiments.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments
title: "cloudExperiments"
image: https://source.unsplash.com/400x175/?github
description: API docs for the cloudExperiments plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments']
---
import cloudExperimentsObj from './cloud_experiments.devdocs.json';
diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx
index 4d2bd56f56276..6c28157f16c6b 100644
--- a/api_docs/cloud_security_posture.mdx
+++ b/api_docs/cloud_security_posture.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture
title: "cloudSecurityPosture"
image: https://source.unsplash.com/400x175/?github
description: API docs for the cloudSecurityPosture plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture']
---
import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json';
diff --git a/api_docs/console.mdx b/api_docs/console.mdx
index b6029553b5990..1a4841c281379 100644
--- a/api_docs/console.mdx
+++ b/api_docs/console.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console
title: "console"
image: https://source.unsplash.com/400x175/?github
description: API docs for the console plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console']
---
import consoleObj from './console.devdocs.json';
diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx
index e7b2038c14988..9d5d8e9b6908a 100644
--- a/api_docs/content_management.mdx
+++ b/api_docs/content_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement
title: "contentManagement"
image: https://source.unsplash.com/400x175/?github
description: API docs for the contentManagement plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement']
---
import contentManagementObj from './content_management.devdocs.json';
diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx
index 1c42f85318dba..f85e2e95f7b1d 100644
--- a/api_docs/controls.mdx
+++ b/api_docs/controls.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls
title: "controls"
image: https://source.unsplash.com/400x175/?github
description: API docs for the controls plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls']
---
import controlsObj from './controls.devdocs.json';
diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx
index 275968fb17094..6447471507a11 100644
--- a/api_docs/custom_integrations.mdx
+++ b/api_docs/custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations
title: "customIntegrations"
image: https://source.unsplash.com/400x175/?github
description: API docs for the customIntegrations plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations']
---
import customIntegrationsObj from './custom_integrations.devdocs.json';
diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx
index f3686f4fab007..cc00706818b18 100644
--- a/api_docs/dashboard.mdx
+++ b/api_docs/dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard
title: "dashboard"
image: https://source.unsplash.com/400x175/?github
description: API docs for the dashboard plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard']
---
import dashboardObj from './dashboard.devdocs.json';
diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx
index 5fee222cd7888..d3448e0f9af60 100644
--- a/api_docs/dashboard_enhanced.mdx
+++ b/api_docs/dashboard_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced
title: "dashboardEnhanced"
image: https://source.unsplash.com/400x175/?github
description: API docs for the dashboardEnhanced plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced']
---
import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json';
diff --git a/api_docs/data.mdx b/api_docs/data.mdx
index 7e88a04889d73..f4854c9533a48 100644
--- a/api_docs/data.mdx
+++ b/api_docs/data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data
title: "data"
image: https://source.unsplash.com/400x175/?github
description: API docs for the data plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data']
---
import dataObj from './data.devdocs.json';
diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx
index e87a8adbc283a..71f10a8fb4b0f 100644
--- a/api_docs/data_query.mdx
+++ b/api_docs/data_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query
title: "data.query"
image: https://source.unsplash.com/400x175/?github
description: API docs for the data.query plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query']
---
import dataQueryObj from './data_query.devdocs.json';
diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx
index 80ead719f5cc6..afdada354f97b 100644
--- a/api_docs/data_search.mdx
+++ b/api_docs/data_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search
title: "data.search"
image: https://source.unsplash.com/400x175/?github
description: API docs for the data.search plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search']
---
import dataSearchObj from './data_search.devdocs.json';
diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx
index 1a976e0eb848d..8f0282e9f1a4d 100644
--- a/api_docs/data_view_editor.mdx
+++ b/api_docs/data_view_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor
title: "dataViewEditor"
image: https://source.unsplash.com/400x175/?github
description: API docs for the dataViewEditor plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor']
---
import dataViewEditorObj from './data_view_editor.devdocs.json';
diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx
index 41518c50198e6..6c7891c51bc43 100644
--- a/api_docs/data_view_field_editor.mdx
+++ b/api_docs/data_view_field_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor
title: "dataViewFieldEditor"
image: https://source.unsplash.com/400x175/?github
description: API docs for the dataViewFieldEditor plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor']
---
import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json';
diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx
index d23b6608b2bf5..10432e46804a2 100644
--- a/api_docs/data_view_management.mdx
+++ b/api_docs/data_view_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement
title: "dataViewManagement"
image: https://source.unsplash.com/400x175/?github
description: API docs for the dataViewManagement plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement']
---
import dataViewManagementObj from './data_view_management.devdocs.json';
diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx
index ca1a73a1a5786..56b0eab89b31e 100644
--- a/api_docs/data_views.mdx
+++ b/api_docs/data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews
title: "dataViews"
image: https://source.unsplash.com/400x175/?github
description: API docs for the dataViews plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews']
---
import dataViewsObj from './data_views.devdocs.json';
diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx
index 4f1c43a0cb48b..4ad99615ccb59 100644
--- a/api_docs/data_visualizer.mdx
+++ b/api_docs/data_visualizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer
title: "dataVisualizer"
image: https://source.unsplash.com/400x175/?github
description: API docs for the dataVisualizer plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer']
---
import dataVisualizerObj from './data_visualizer.devdocs.json';
diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx
index 2b6fb5c86b170..f04230fe89017 100644
--- a/api_docs/dataset_quality.mdx
+++ b/api_docs/dataset_quality.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality
title: "datasetQuality"
image: https://source.unsplash.com/400x175/?github
description: API docs for the datasetQuality plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality']
---
import datasetQualityObj from './dataset_quality.devdocs.json';
diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx
index 947325fc6fff0..ea5ab4e707677 100644
--- a/api_docs/deprecations_by_api.mdx
+++ b/api_docs/deprecations_by_api.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi
slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api
title: Deprecated API usage by API
description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana']
---
diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx
index aa6a07ee60339..beefb00e6f8f9 100644
--- a/api_docs/deprecations_by_plugin.mdx
+++ b/api_docs/deprecations_by_plugin.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin
slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin
title: Deprecated API usage by plugin
description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana']
---
diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx
index 2f699c9581077..26e30dfa6d74a 100644
--- a/api_docs/deprecations_by_team.mdx
+++ b/api_docs/deprecations_by_team.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam
slug: /kibana-dev-docs/api-meta/deprecations-due-by-team
title: Deprecated APIs due to be removed, by team
description: Lists the teams that are referencing deprecated APIs with a remove by date.
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana']
---
diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx
index 9231617d37eb4..d8dbf5a522a89 100644
--- a/api_docs/dev_tools.mdx
+++ b/api_docs/dev_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools
title: "devTools"
image: https://source.unsplash.com/400x175/?github
description: API docs for the devTools plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools']
---
import devToolsObj from './dev_tools.devdocs.json';
diff --git a/api_docs/discover.devdocs.json b/api_docs/discover.devdocs.json
index ca132c40f7d5a..cd154884872a0 100644
--- a/api_docs/discover.devdocs.json
+++ b/api_docs/discover.devdocs.json
@@ -958,7 +958,15 @@
"section": "def-common.AggregateQuery",
"text": "AggregateQuery"
},
- " | undefined; }, isUpdate?: boolean | undefined) => void; onChangeDataView: (id: string) => Promise; setDataView: (dataView: ",
+ " | undefined; }, isUpdate?: boolean | undefined) => void; onChangeDataView: (id: string | ",
+ {
+ "pluginId": "dataViews",
+ "scope": "common",
+ "docId": "kibDataViewsPluginApi",
+ "section": "def-common.DataView",
+ "text": "DataView"
+ },
+ ") => Promise; setDataView: (dataView: ",
{
"pluginId": "dataViews",
"scope": "common",
diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx
index 23eae81104b89..e53a314d62d4f 100644
--- a/api_docs/discover.mdx
+++ b/api_docs/discover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover
title: "discover"
image: https://source.unsplash.com/400x175/?github
description: API docs for the discover plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover']
---
import discoverObj from './discover.devdocs.json';
diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx
index 4d6c3e8122f9e..f58b864129578 100644
--- a/api_docs/discover_enhanced.mdx
+++ b/api_docs/discover_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced
title: "discoverEnhanced"
image: https://source.unsplash.com/400x175/?github
description: API docs for the discoverEnhanced plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced']
---
import discoverEnhancedObj from './discover_enhanced.devdocs.json';
diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx
index 1cfc2db0a5fff..43388da193676 100644
--- a/api_docs/ecs_data_quality_dashboard.mdx
+++ b/api_docs/ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard
title: "ecsDataQualityDashboard"
image: https://source.unsplash.com/400x175/?github
description: API docs for the ecsDataQualityDashboard plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard']
---
import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx
index 0fbfed4697aeb..237a21665eecc 100644
--- a/api_docs/elastic_assistant.mdx
+++ b/api_docs/elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant
title: "elasticAssistant"
image: https://source.unsplash.com/400x175/?github
description: API docs for the elasticAssistant plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant']
---
import elasticAssistantObj from './elastic_assistant.devdocs.json';
diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx
index 2f248526309af..b5811fea650af 100644
--- a/api_docs/embeddable.mdx
+++ b/api_docs/embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable
title: "embeddable"
image: https://source.unsplash.com/400x175/?github
description: API docs for the embeddable plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable']
---
import embeddableObj from './embeddable.devdocs.json';
diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx
index 1542f87069a2e..6b13635a2fcb9 100644
--- a/api_docs/embeddable_enhanced.mdx
+++ b/api_docs/embeddable_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced
title: "embeddableEnhanced"
image: https://source.unsplash.com/400x175/?github
description: API docs for the embeddableEnhanced plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced']
---
import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json';
diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx
index dd77060561525..73f18e51c59bf 100644
--- a/api_docs/encrypted_saved_objects.mdx
+++ b/api_docs/encrypted_saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects
title: "encryptedSavedObjects"
image: https://source.unsplash.com/400x175/?github
description: API docs for the encryptedSavedObjects plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects']
---
import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json';
diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx
index 6d556fe29a1f1..6a249b296df44 100644
--- a/api_docs/enterprise_search.mdx
+++ b/api_docs/enterprise_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch
title: "enterpriseSearch"
image: https://source.unsplash.com/400x175/?github
description: API docs for the enterpriseSearch plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch']
---
import enterpriseSearchObj from './enterprise_search.devdocs.json';
diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx
index 34da61d95fd0d..8596b6490a853 100644
--- a/api_docs/es_ui_shared.mdx
+++ b/api_docs/es_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared
title: "esUiShared"
image: https://source.unsplash.com/400x175/?github
description: API docs for the esUiShared plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared']
---
import esUiSharedObj from './es_ui_shared.devdocs.json';
diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx
index 204151ac1a1ed..c77c550afbc96 100644
--- a/api_docs/event_annotation.mdx
+++ b/api_docs/event_annotation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation
title: "eventAnnotation"
image: https://source.unsplash.com/400x175/?github
description: API docs for the eventAnnotation plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation']
---
import eventAnnotationObj from './event_annotation.devdocs.json';
diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx
index 1b28ad46b42c6..85cd450e6259a 100644
--- a/api_docs/event_annotation_listing.mdx
+++ b/api_docs/event_annotation_listing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing
title: "eventAnnotationListing"
image: https://source.unsplash.com/400x175/?github
description: API docs for the eventAnnotationListing plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing']
---
import eventAnnotationListingObj from './event_annotation_listing.devdocs.json';
diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx
index be2ab6c1b6cdd..9470632479bc0 100644
--- a/api_docs/event_log.mdx
+++ b/api_docs/event_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog
title: "eventLog"
image: https://source.unsplash.com/400x175/?github
description: API docs for the eventLog plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog']
---
import eventLogObj from './event_log.devdocs.json';
diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx
index af95c05a11e56..e845a37b50352 100644
--- a/api_docs/exploratory_view.mdx
+++ b/api_docs/exploratory_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView
title: "exploratoryView"
image: https://source.unsplash.com/400x175/?github
description: API docs for the exploratoryView plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView']
---
import exploratoryViewObj from './exploratory_view.devdocs.json';
diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx
index 3fea4b9a3bd0d..39c39c914ab3f 100644
--- a/api_docs/expression_error.mdx
+++ b/api_docs/expression_error.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError
title: "expressionError"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionError plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError']
---
import expressionErrorObj from './expression_error.devdocs.json';
diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx
index f81736274c760..1f7432422c1a3 100644
--- a/api_docs/expression_gauge.mdx
+++ b/api_docs/expression_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge
title: "expressionGauge"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionGauge plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge']
---
import expressionGaugeObj from './expression_gauge.devdocs.json';
diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx
index 0645ae4952c7a..bf94f0cb50460 100644
--- a/api_docs/expression_heatmap.mdx
+++ b/api_docs/expression_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap
title: "expressionHeatmap"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionHeatmap plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap']
---
import expressionHeatmapObj from './expression_heatmap.devdocs.json';
diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx
index 44facfe28fa3b..2e0cb2928af54 100644
--- a/api_docs/expression_image.mdx
+++ b/api_docs/expression_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage
title: "expressionImage"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionImage plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage']
---
import expressionImageObj from './expression_image.devdocs.json';
diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx
index 96c40979b41c5..adaf7acd4544f 100644
--- a/api_docs/expression_legacy_metric_vis.mdx
+++ b/api_docs/expression_legacy_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis
title: "expressionLegacyMetricVis"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionLegacyMetricVis plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis']
---
import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json';
diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx
index 0f601f583f929..94fdfc2f12dd0 100644
--- a/api_docs/expression_metric.mdx
+++ b/api_docs/expression_metric.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric
title: "expressionMetric"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionMetric plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric']
---
import expressionMetricObj from './expression_metric.devdocs.json';
diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx
index 91beba0020159..ba3f3037f9f59 100644
--- a/api_docs/expression_metric_vis.mdx
+++ b/api_docs/expression_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis
title: "expressionMetricVis"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionMetricVis plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis']
---
import expressionMetricVisObj from './expression_metric_vis.devdocs.json';
diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx
index 5b3b56091e3bc..f04f9a99e85f6 100644
--- a/api_docs/expression_partition_vis.mdx
+++ b/api_docs/expression_partition_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis
title: "expressionPartitionVis"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionPartitionVis plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis']
---
import expressionPartitionVisObj from './expression_partition_vis.devdocs.json';
diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx
index cca1793c5c567..5781e2a56bac2 100644
--- a/api_docs/expression_repeat_image.mdx
+++ b/api_docs/expression_repeat_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage
title: "expressionRepeatImage"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionRepeatImage plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage']
---
import expressionRepeatImageObj from './expression_repeat_image.devdocs.json';
diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx
index 41344ed4cef64..4928adc83665e 100644
--- a/api_docs/expression_reveal_image.mdx
+++ b/api_docs/expression_reveal_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage
title: "expressionRevealImage"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionRevealImage plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage']
---
import expressionRevealImageObj from './expression_reveal_image.devdocs.json';
diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx
index d9075ecfa5284..298768e05014a 100644
--- a/api_docs/expression_shape.mdx
+++ b/api_docs/expression_shape.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape
title: "expressionShape"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionShape plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape']
---
import expressionShapeObj from './expression_shape.devdocs.json';
diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx
index 191922143f7fc..5877f2de828d6 100644
--- a/api_docs/expression_tagcloud.mdx
+++ b/api_docs/expression_tagcloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud
title: "expressionTagcloud"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionTagcloud plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud']
---
import expressionTagcloudObj from './expression_tagcloud.devdocs.json';
diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx
index 9f25cee48962a..c5bcbdc26a86a 100644
--- a/api_docs/expression_x_y.mdx
+++ b/api_docs/expression_x_y.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY
title: "expressionXY"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressionXY plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY']
---
import expressionXYObj from './expression_x_y.devdocs.json';
diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx
index a6e714dc9cfea..709c333bd2c7a 100644
--- a/api_docs/expressions.mdx
+++ b/api_docs/expressions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions
title: "expressions"
image: https://source.unsplash.com/400x175/?github
description: API docs for the expressions plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions']
---
import expressionsObj from './expressions.devdocs.json';
diff --git a/api_docs/features.mdx b/api_docs/features.mdx
index 1c5dc9e627871..054fc21dbec50 100644
--- a/api_docs/features.mdx
+++ b/api_docs/features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features
title: "features"
image: https://source.unsplash.com/400x175/?github
description: API docs for the features plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features']
---
import featuresObj from './features.devdocs.json';
diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx
index 9bb0d49ae911a..2359b79eae3ab 100644
--- a/api_docs/field_formats.mdx
+++ b/api_docs/field_formats.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats
title: "fieldFormats"
image: https://source.unsplash.com/400x175/?github
description: API docs for the fieldFormats plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats']
---
import fieldFormatsObj from './field_formats.devdocs.json';
diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx
index 1ae442d25a5c6..a4fe0444b6d9f 100644
--- a/api_docs/file_upload.mdx
+++ b/api_docs/file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload
title: "fileUpload"
image: https://source.unsplash.com/400x175/?github
description: API docs for the fileUpload plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload']
---
import fileUploadObj from './file_upload.devdocs.json';
diff --git a/api_docs/files.mdx b/api_docs/files.mdx
index f30d802100ad8..e4ac5fff6be62 100644
--- a/api_docs/files.mdx
+++ b/api_docs/files.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files
title: "files"
image: https://source.unsplash.com/400x175/?github
description: API docs for the files plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files']
---
import filesObj from './files.devdocs.json';
diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx
index 0dac01ae8d0f7..11ed0e3f9645a 100644
--- a/api_docs/files_management.mdx
+++ b/api_docs/files_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement
title: "filesManagement"
image: https://source.unsplash.com/400x175/?github
description: API docs for the filesManagement plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement']
---
import filesManagementObj from './files_management.devdocs.json';
diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx
index f119d1d36fa64..fb5654f57f08d 100644
--- a/api_docs/fleet.mdx
+++ b/api_docs/fleet.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet
title: "fleet"
image: https://source.unsplash.com/400x175/?github
description: API docs for the fleet plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet']
---
import fleetObj from './fleet.devdocs.json';
diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx
index c6d4699465b60..23d451e054470 100644
--- a/api_docs/global_search.mdx
+++ b/api_docs/global_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch
title: "globalSearch"
image: https://source.unsplash.com/400x175/?github
description: API docs for the globalSearch plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch']
---
import globalSearchObj from './global_search.devdocs.json';
diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx
index ebc1accfb0110..e989ce3a7d26f 100644
--- a/api_docs/guided_onboarding.mdx
+++ b/api_docs/guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding
title: "guidedOnboarding"
image: https://source.unsplash.com/400x175/?github
description: API docs for the guidedOnboarding plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding']
---
import guidedOnboardingObj from './guided_onboarding.devdocs.json';
diff --git a/api_docs/home.mdx b/api_docs/home.mdx
index 639738b850c99..3b31669d65212 100644
--- a/api_docs/home.mdx
+++ b/api_docs/home.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home
title: "home"
image: https://source.unsplash.com/400x175/?github
description: API docs for the home plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home']
---
import homeObj from './home.devdocs.json';
diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx
index 5362ac1dc5048..92ce5c1d81f46 100644
--- a/api_docs/image_embeddable.mdx
+++ b/api_docs/image_embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable
title: "imageEmbeddable"
image: https://source.unsplash.com/400x175/?github
description: API docs for the imageEmbeddable plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable']
---
import imageEmbeddableObj from './image_embeddable.devdocs.json';
diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx
index 044481829015f..bf2c7b413d55a 100644
--- a/api_docs/index_lifecycle_management.mdx
+++ b/api_docs/index_lifecycle_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement
title: "indexLifecycleManagement"
image: https://source.unsplash.com/400x175/?github
description: API docs for the indexLifecycleManagement plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement']
---
import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json';
diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx
index c0111c6099109..598a2a1bb9033 100644
--- a/api_docs/index_management.mdx
+++ b/api_docs/index_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement
title: "indexManagement"
image: https://source.unsplash.com/400x175/?github
description: API docs for the indexManagement plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement']
---
import indexManagementObj from './index_management.devdocs.json';
diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx
index 91159f75b95ae..f89d5ddda4481 100644
--- a/api_docs/infra.mdx
+++ b/api_docs/infra.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra
title: "infra"
image: https://source.unsplash.com/400x175/?github
description: API docs for the infra plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra']
---
import infraObj from './infra.devdocs.json';
diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx
index 82db6e8618314..fb2ea5cd1b731 100644
--- a/api_docs/ingest_pipelines.mdx
+++ b/api_docs/ingest_pipelines.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines
title: "ingestPipelines"
image: https://source.unsplash.com/400x175/?github
description: API docs for the ingestPipelines plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines']
---
import ingestPipelinesObj from './ingest_pipelines.devdocs.json';
diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx
index 30ed7fcfe9006..9ebc194b49770 100644
--- a/api_docs/inspector.mdx
+++ b/api_docs/inspector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector
title: "inspector"
image: https://source.unsplash.com/400x175/?github
description: API docs for the inspector plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector']
---
import inspectorObj from './inspector.devdocs.json';
diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx
index 16f3308857974..04acaadf038ce 100644
--- a/api_docs/interactive_setup.mdx
+++ b/api_docs/interactive_setup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup
title: "interactiveSetup"
image: https://source.unsplash.com/400x175/?github
description: API docs for the interactiveSetup plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup']
---
import interactiveSetupObj from './interactive_setup.devdocs.json';
diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx
index ceb5913e7b61b..5cf009058a132 100644
--- a/api_docs/kbn_ace.mdx
+++ b/api_docs/kbn_ace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace
title: "@kbn/ace"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ace plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace']
---
import kbnAceObj from './kbn_ace.devdocs.json';
diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx
index e25579ae77a8d..328f9eab80ba5 100644
--- a/api_docs/kbn_actions_types.mdx
+++ b/api_docs/kbn_actions_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types
title: "@kbn/actions-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/actions-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types']
---
import kbnActionsTypesObj from './kbn_actions_types.devdocs.json';
diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx
index a46e4802f07dd..1083df3dcec50 100644
--- a/api_docs/kbn_aiops_components.mdx
+++ b/api_docs/kbn_aiops_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components
title: "@kbn/aiops-components"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/aiops-components plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components']
---
import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json';
diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx
index 6a7bd61ac859e..4152564e74cb7 100644
--- a/api_docs/kbn_aiops_utils.mdx
+++ b/api_docs/kbn_aiops_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils
title: "@kbn/aiops-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/aiops-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils']
---
import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json';
diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx
index eba7157a6c6fb..fbca703e99d4d 100644
--- a/api_docs/kbn_alerting_api_integration_helpers.mdx
+++ b/api_docs/kbn_alerting_api_integration_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers
title: "@kbn/alerting-api-integration-helpers"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/alerting-api-integration-helpers plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers']
---
import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json';
diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx
index 4ebdd9b4fe34d..c05ba3ba791ef 100644
--- a/api_docs/kbn_alerting_state_types.mdx
+++ b/api_docs/kbn_alerting_state_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types
title: "@kbn/alerting-state-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/alerting-state-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types']
---
import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json';
diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx
index bbc2f22877505..9c4f5aa207cb2 100644
--- a/api_docs/kbn_alerting_types.mdx
+++ b/api_docs/kbn_alerting_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types
title: "@kbn/alerting-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/alerting-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types']
---
import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json';
diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx
index e1f5bdb88bc09..e5f6fbe94a352 100644
--- a/api_docs/kbn_alerts_as_data_utils.mdx
+++ b/api_docs/kbn_alerts_as_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils
title: "@kbn/alerts-as-data-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/alerts-as-data-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils']
---
import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json';
diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx
index b38a33f6848f4..b82fc0f603052 100644
--- a/api_docs/kbn_alerts_ui_shared.mdx
+++ b/api_docs/kbn_alerts_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared
title: "@kbn/alerts-ui-shared"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/alerts-ui-shared plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared']
---
import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json';
diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx
index 62dfaea48f1ff..0a058a9d9af2a 100644
--- a/api_docs/kbn_analytics.mdx
+++ b/api_docs/kbn_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics
title: "@kbn/analytics"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/analytics plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics']
---
import kbnAnalyticsObj from './kbn_analytics.devdocs.json';
diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx
index 343a367991446..a9b3252a9b5ed 100644
--- a/api_docs/kbn_analytics_client.mdx
+++ b/api_docs/kbn_analytics_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client
title: "@kbn/analytics-client"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/analytics-client plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client']
---
import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json';
diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx
index 3ca10bbeda2b7..52063fbb277d4 100644
--- a/api_docs/kbn_analytics_collection_utils.mdx
+++ b/api_docs/kbn_analytics_collection_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils
title: "@kbn/analytics-collection-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/analytics-collection-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils']
---
import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
index 9ac69bac7924d..4d80c5ca51b11 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser
title: "@kbn/analytics-shippers-elastic-v3-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser']
---
import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
index 38aa0bf02bf2a..539ae30a20c4d 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common
title: "@kbn/analytics-shippers-elastic-v3-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common']
---
import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
index ee778273bdfe3..8843eb4dc0669 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server
title: "@kbn/analytics-shippers-elastic-v3-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server']
---
import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx
index 5dd876c867ba2..6bc0b20d2d89b 100644
--- a/api_docs/kbn_analytics_shippers_fullstory.mdx
+++ b/api_docs/kbn_analytics_shippers_fullstory.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory
title: "@kbn/analytics-shippers-fullstory"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/analytics-shippers-fullstory plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory']
---
import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json';
diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx
index 6c6547f476099..6267ccf216389 100644
--- a/api_docs/kbn_apm_config_loader.mdx
+++ b/api_docs/kbn_apm_config_loader.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader
title: "@kbn/apm-config-loader"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/apm-config-loader plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader']
---
import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx
index 0a37c245410d8..3a62fa37796ca 100644
--- a/api_docs/kbn_apm_synthtrace.mdx
+++ b/api_docs/kbn_apm_synthtrace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace
title: "@kbn/apm-synthtrace"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/apm-synthtrace plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace']
---
import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx
index bfa6290815094..62e8a82fb7b55 100644
--- a/api_docs/kbn_apm_synthtrace_client.mdx
+++ b/api_docs/kbn_apm_synthtrace_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client
title: "@kbn/apm-synthtrace-client"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/apm-synthtrace-client plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client']
---
import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json';
diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx
index b55db6c78808e..6c266f6942f9a 100644
--- a/api_docs/kbn_apm_utils.mdx
+++ b/api_docs/kbn_apm_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils
title: "@kbn/apm-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/apm-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils']
---
import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json';
diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx
index 786f98c794793..106b0a8d8449e 100644
--- a/api_docs/kbn_axe_config.mdx
+++ b/api_docs/kbn_axe_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config
title: "@kbn/axe-config"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/axe-config plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config']
---
import kbnAxeConfigObj from './kbn_axe_config.devdocs.json';
diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx
index 678203d898b62..7acc4f32ff701 100644
--- a/api_docs/kbn_bfetch_error.mdx
+++ b/api_docs/kbn_bfetch_error.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error
title: "@kbn/bfetch-error"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/bfetch-error plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error']
---
import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json';
diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx
index 3157db90755d6..186f6bcc33ece 100644
--- a/api_docs/kbn_calculate_auto.mdx
+++ b/api_docs/kbn_calculate_auto.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto
title: "@kbn/calculate-auto"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/calculate-auto plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto']
---
import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json';
diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx
index f203617458376..7a496f335f663 100644
--- a/api_docs/kbn_calculate_width_from_char_count.mdx
+++ b/api_docs/kbn_calculate_width_from_char_count.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count
title: "@kbn/calculate-width-from-char-count"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/calculate-width-from-char-count plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count']
---
import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json';
diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx
index 7aba12b0960d7..09ab02276b96b 100644
--- a/api_docs/kbn_cases_components.mdx
+++ b/api_docs/kbn_cases_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components
title: "@kbn/cases-components"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/cases-components plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components']
---
import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json';
diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx
index 04d88d8f4b284..3f7b72c0ed3a7 100644
--- a/api_docs/kbn_cell_actions.mdx
+++ b/api_docs/kbn_cell_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions
title: "@kbn/cell-actions"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/cell-actions plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions']
---
import kbnCellActionsObj from './kbn_cell_actions.devdocs.json';
diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx
index 5a067a0ca379b..fa0232fc6aa5b 100644
--- a/api_docs/kbn_chart_expressions_common.mdx
+++ b/api_docs/kbn_chart_expressions_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common
title: "@kbn/chart-expressions-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/chart-expressions-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common']
---
import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json';
diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx
index 3bf8d7d54a972..b9253ca567c29 100644
--- a/api_docs/kbn_chart_icons.mdx
+++ b/api_docs/kbn_chart_icons.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons
title: "@kbn/chart-icons"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/chart-icons plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons']
---
import kbnChartIconsObj from './kbn_chart_icons.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx
index 66ef4d56a7450..8e915892024e4 100644
--- a/api_docs/kbn_ci_stats_core.mdx
+++ b/api_docs/kbn_ci_stats_core.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core
title: "@kbn/ci-stats-core"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ci-stats-core plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core']
---
import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx
index 4bb6cfc111659..5b6fea696ac8f 100644
--- a/api_docs/kbn_ci_stats_performance_metrics.mdx
+++ b/api_docs/kbn_ci_stats_performance_metrics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics
title: "@kbn/ci-stats-performance-metrics"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ci-stats-performance-metrics plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics']
---
import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx
index 8f3e80df48db4..8dda0d1d1d578 100644
--- a/api_docs/kbn_ci_stats_reporter.mdx
+++ b/api_docs/kbn_ci_stats_reporter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter
title: "@kbn/ci-stats-reporter"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ci-stats-reporter plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter']
---
import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json';
diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx
index ca0da5b2a34f5..e3d559a64b3c6 100644
--- a/api_docs/kbn_cli_dev_mode.mdx
+++ b/api_docs/kbn_cli_dev_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode
title: "@kbn/cli-dev-mode"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/cli-dev-mode plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode']
---
import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json';
diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx
index 757b6818be3f4..944b5a4fa4a9b 100644
--- a/api_docs/kbn_code_editor.mdx
+++ b/api_docs/kbn_code_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor
title: "@kbn/code-editor"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/code-editor plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor']
---
import kbnCodeEditorObj from './kbn_code_editor.devdocs.json';
diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx
index 00e02adeff5df..205747e2b8d86 100644
--- a/api_docs/kbn_code_editor_mock.mdx
+++ b/api_docs/kbn_code_editor_mock.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock
title: "@kbn/code-editor-mock"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/code-editor-mock plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock']
---
import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json';
diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx
index 6c322a6d84a6a..49d1dc4a63ca5 100644
--- a/api_docs/kbn_code_owners.mdx
+++ b/api_docs/kbn_code_owners.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners
title: "@kbn/code-owners"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/code-owners plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners']
---
import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json';
diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx
index efb1bd23488a9..4e486ee4ddecf 100644
--- a/api_docs/kbn_coloring.mdx
+++ b/api_docs/kbn_coloring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring
title: "@kbn/coloring"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/coloring plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring']
---
import kbnColoringObj from './kbn_coloring.devdocs.json';
diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx
index fc9a9a144a44f..54729f4e788d0 100644
--- a/api_docs/kbn_config.mdx
+++ b/api_docs/kbn_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config
title: "@kbn/config"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/config plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config']
---
import kbnConfigObj from './kbn_config.devdocs.json';
diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx
index 05700d3451f6c..b10ce3fb8c84e 100644
--- a/api_docs/kbn_config_mocks.mdx
+++ b/api_docs/kbn_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks
title: "@kbn/config-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/config-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks']
---
import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx
index 2e0f3e14d9e10..ac780a15af281 100644
--- a/api_docs/kbn_config_schema.mdx
+++ b/api_docs/kbn_config_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema
title: "@kbn/config-schema"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/config-schema plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema']
---
import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json';
diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx
index a3d74f5197543..0c2943c726cc4 100644
--- a/api_docs/kbn_content_management_content_editor.mdx
+++ b/api_docs/kbn_content_management_content_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor
title: "@kbn/content-management-content-editor"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/content-management-content-editor plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor']
---
import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json';
diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
index 36c687809ce2e..745a691ea7d8f 100644
--- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx
+++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view
title: "@kbn/content-management-tabbed-table-list-view"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/content-management-tabbed-table-list-view plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view']
---
import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx
index 2d044838de252..6f99f37e14299 100644
--- a/api_docs/kbn_content_management_table_list_view.mdx
+++ b/api_docs/kbn_content_management_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view
title: "@kbn/content-management-table-list-view"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/content-management-table-list-view plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view']
---
import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx
index 98878d2fc1959..fc2c13676b878 100644
--- a/api_docs/kbn_content_management_table_list_view_common.mdx
+++ b/api_docs/kbn_content_management_table_list_view_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common
title: "@kbn/content-management-table-list-view-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/content-management-table-list-view-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common']
---
import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx
index 98aa20cd15d7d..d612e3b3b436c 100644
--- a/api_docs/kbn_content_management_table_list_view_table.mdx
+++ b/api_docs/kbn_content_management_table_list_view_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table
title: "@kbn/content-management-table-list-view-table"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/content-management-table-list-view-table plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table']
---
import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json';
diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx
index 53311fc2bb858..50e4b685eb1ae 100644
--- a/api_docs/kbn_content_management_utils.mdx
+++ b/api_docs/kbn_content_management_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils
title: "@kbn/content-management-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/content-management-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils']
---
import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx
index ee5abf5acb2e3..58c465232a902 100644
--- a/api_docs/kbn_core_analytics_browser.mdx
+++ b/api_docs/kbn_core_analytics_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser
title: "@kbn/core-analytics-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-analytics-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser']
---
import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx
index b231b4afb4476..128258bef99c5 100644
--- a/api_docs/kbn_core_analytics_browser_internal.mdx
+++ b/api_docs/kbn_core_analytics_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal
title: "@kbn/core-analytics-browser-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-analytics-browser-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal']
---
import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx
index c40a19d15d9cd..a81e3bceb4331 100644
--- a/api_docs/kbn_core_analytics_browser_mocks.mdx
+++ b/api_docs/kbn_core_analytics_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks
title: "@kbn/core-analytics-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-analytics-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks']
---
import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx
index 160765cbc2d15..79b38537fa8c3 100644
--- a/api_docs/kbn_core_analytics_server.mdx
+++ b/api_docs/kbn_core_analytics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server
title: "@kbn/core-analytics-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-analytics-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server']
---
import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx
index 5349bb14da070..46906995b8499 100644
--- a/api_docs/kbn_core_analytics_server_internal.mdx
+++ b/api_docs/kbn_core_analytics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal
title: "@kbn/core-analytics-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-analytics-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal']
---
import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx
index 2daa4f50c83d6..e140f01c73217 100644
--- a/api_docs/kbn_core_analytics_server_mocks.mdx
+++ b/api_docs/kbn_core_analytics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks
title: "@kbn/core-analytics-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-analytics-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks']
---
import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx
index 7443cee43fd5e..9822ecfb415e9 100644
--- a/api_docs/kbn_core_application_browser.mdx
+++ b/api_docs/kbn_core_application_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser
title: "@kbn/core-application-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-application-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser']
---
import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx
index a7fcc1a46f5b7..c94b9920df16b 100644
--- a/api_docs/kbn_core_application_browser_internal.mdx
+++ b/api_docs/kbn_core_application_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal
title: "@kbn/core-application-browser-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-application-browser-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal']
---
import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx
index e7b9efc9e0cef..f1a9e8979433f 100644
--- a/api_docs/kbn_core_application_browser_mocks.mdx
+++ b/api_docs/kbn_core_application_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks
title: "@kbn/core-application-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-application-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks']
---
import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx
index d2569c5b93dd7..2ecd5a0cd100a 100644
--- a/api_docs/kbn_core_application_common.mdx
+++ b/api_docs/kbn_core_application_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common
title: "@kbn/core-application-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-application-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common']
---
import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx
index c623f706a8077..bc1b364f42179 100644
--- a/api_docs/kbn_core_apps_browser_internal.mdx
+++ b/api_docs/kbn_core_apps_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal
title: "@kbn/core-apps-browser-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-apps-browser-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal']
---
import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx
index dfd858ebd0afa..0441baac7e542 100644
--- a/api_docs/kbn_core_apps_browser_mocks.mdx
+++ b/api_docs/kbn_core_apps_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks
title: "@kbn/core-apps-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-apps-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks']
---
import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx
index 1f76e87c34775..2f25cd87ce938 100644
--- a/api_docs/kbn_core_apps_server_internal.mdx
+++ b/api_docs/kbn_core_apps_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal
title: "@kbn/core-apps-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-apps-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal']
---
import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx
index 7e30bbb60371f..11e3fa4eef717 100644
--- a/api_docs/kbn_core_base_browser_mocks.mdx
+++ b/api_docs/kbn_core_base_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks
title: "@kbn/core-base-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-base-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks']
---
import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx
index 323768b0e77da..732d733d2fb2c 100644
--- a/api_docs/kbn_core_base_common.mdx
+++ b/api_docs/kbn_core_base_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common
title: "@kbn/core-base-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-base-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common']
---
import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx
index e39f15e414137..751eae8cd13c7 100644
--- a/api_docs/kbn_core_base_server_internal.mdx
+++ b/api_docs/kbn_core_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal
title: "@kbn/core-base-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-base-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal']
---
import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx
index 7f2159a288d0d..ae412174f6795 100644
--- a/api_docs/kbn_core_base_server_mocks.mdx
+++ b/api_docs/kbn_core_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks
title: "@kbn/core-base-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-base-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks']
---
import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx
index 9a2aa79becca2..18769f34fc24a 100644
--- a/api_docs/kbn_core_capabilities_browser_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks
title: "@kbn/core-capabilities-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-capabilities-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks']
---
import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx
index aefb1370d0dfe..1380c1e93d80b 100644
--- a/api_docs/kbn_core_capabilities_common.mdx
+++ b/api_docs/kbn_core_capabilities_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common
title: "@kbn/core-capabilities-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-capabilities-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common']
---
import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx
index aab77354f1db2..828273917d0ff 100644
--- a/api_docs/kbn_core_capabilities_server.mdx
+++ b/api_docs/kbn_core_capabilities_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server
title: "@kbn/core-capabilities-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-capabilities-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server']
---
import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx
index a95a56b4633d6..ee2c83bf8ef62 100644
--- a/api_docs/kbn_core_capabilities_server_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks
title: "@kbn/core-capabilities-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-capabilities-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks']
---
import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx
index b4a60e51d3398..468a33a5bd58b 100644
--- a/api_docs/kbn_core_chrome_browser.mdx
+++ b/api_docs/kbn_core_chrome_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser
title: "@kbn/core-chrome-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-chrome-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser']
---
import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx
index 646a2368724d0..644a46bd22e50 100644
--- a/api_docs/kbn_core_chrome_browser_mocks.mdx
+++ b/api_docs/kbn_core_chrome_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks
title: "@kbn/core-chrome-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-chrome-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks']
---
import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx
index 5e19ee8a17115..2bc516ae69bee 100644
--- a/api_docs/kbn_core_config_server_internal.mdx
+++ b/api_docs/kbn_core_config_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal
title: "@kbn/core-config-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-config-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal']
---
import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx
index 4a3930ae4f6df..438fe35a56a8e 100644
--- a/api_docs/kbn_core_custom_branding_browser.mdx
+++ b/api_docs/kbn_core_custom_branding_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser
title: "@kbn/core-custom-branding-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-custom-branding-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser']
---
import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx
index dc3425681304f..e05403c8a0295 100644
--- a/api_docs/kbn_core_custom_branding_browser_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal
title: "@kbn/core-custom-branding-browser-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-custom-branding-browser-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal']
---
import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
index c71bb0aae06ff..b014992f334ac 100644
--- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks
title: "@kbn/core-custom-branding-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-custom-branding-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks']
---
import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx
index 6202e7132d5df..a932e044c483c 100644
--- a/api_docs/kbn_core_custom_branding_common.mdx
+++ b/api_docs/kbn_core_custom_branding_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common
title: "@kbn/core-custom-branding-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-custom-branding-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common']
---
import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx
index d525b8f56169b..d931eecf0e68e 100644
--- a/api_docs/kbn_core_custom_branding_server.mdx
+++ b/api_docs/kbn_core_custom_branding_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server
title: "@kbn/core-custom-branding-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-custom-branding-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server']
---
import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx
index 7ff4531fa9bdf..8f9f68f3e991d 100644
--- a/api_docs/kbn_core_custom_branding_server_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal
title: "@kbn/core-custom-branding-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-custom-branding-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal']
---
import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx
index 232b1796aa49b..46701491e55f7 100644
--- a/api_docs/kbn_core_custom_branding_server_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks
title: "@kbn/core-custom-branding-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-custom-branding-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks']
---
import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx
index ee9dbfe878e36..775f0110b890d 100644
--- a/api_docs/kbn_core_deprecations_browser.mdx
+++ b/api_docs/kbn_core_deprecations_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser
title: "@kbn/core-deprecations-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-deprecations-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser']
---
import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx
index b0e2c532adaba..a863f9f4f04c4 100644
--- a/api_docs/kbn_core_deprecations_browser_internal.mdx
+++ b/api_docs/kbn_core_deprecations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal
title: "@kbn/core-deprecations-browser-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-deprecations-browser-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal']
---
import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx
index 2b8f9d51201b8..290d86bafed72 100644
--- a/api_docs/kbn_core_deprecations_browser_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks
title: "@kbn/core-deprecations-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-deprecations-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks']
---
import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx
index f8484fc9b244b..5d8fcb89a5f55 100644
--- a/api_docs/kbn_core_deprecations_common.mdx
+++ b/api_docs/kbn_core_deprecations_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common
title: "@kbn/core-deprecations-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-deprecations-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common']
---
import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx
index 772fdb071ea8a..82fe53de02f45 100644
--- a/api_docs/kbn_core_deprecations_server.mdx
+++ b/api_docs/kbn_core_deprecations_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server
title: "@kbn/core-deprecations-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-deprecations-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server']
---
import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx
index 0e1bd44748c38..c8c61d9ac4d0f 100644
--- a/api_docs/kbn_core_deprecations_server_internal.mdx
+++ b/api_docs/kbn_core_deprecations_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal
title: "@kbn/core-deprecations-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-deprecations-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal']
---
import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx
index 90b50df987885..e40d8f5cd41aa 100644
--- a/api_docs/kbn_core_deprecations_server_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks
title: "@kbn/core-deprecations-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-deprecations-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks']
---
import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx
index cceab885adc5f..24136716568f5 100644
--- a/api_docs/kbn_core_doc_links_browser.mdx
+++ b/api_docs/kbn_core_doc_links_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser
title: "@kbn/core-doc-links-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-doc-links-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser']
---
import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx
index 642129644e984..9b95930bf212a 100644
--- a/api_docs/kbn_core_doc_links_browser_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks
title: "@kbn/core-doc-links-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-doc-links-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks']
---
import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx
index 4068fb0ad6bad..0e71b377c9ef3 100644
--- a/api_docs/kbn_core_doc_links_server.mdx
+++ b/api_docs/kbn_core_doc_links_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server
title: "@kbn/core-doc-links-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-doc-links-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server']
---
import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx
index 06d76de22ee0e..ca9f783414c3a 100644
--- a/api_docs/kbn_core_doc_links_server_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks
title: "@kbn/core-doc-links-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-doc-links-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks']
---
import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
index 5601ee7528577..e994c8681efe0 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal
title: "@kbn/core-elasticsearch-client-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal']
---
import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
index 5ea4d3164fbec..8410063911d81 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks
title: "@kbn/core-elasticsearch-client-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks']
---
import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx
index 6a04e647daa47..c762f03336d52 100644
--- a/api_docs/kbn_core_elasticsearch_server.mdx
+++ b/api_docs/kbn_core_elasticsearch_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server
title: "@kbn/core-elasticsearch-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-elasticsearch-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server']
---
import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx
index 1c44389c221ce..9f54e6569e44e 100644
--- a/api_docs/kbn_core_elasticsearch_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal
title: "@kbn/core-elasticsearch-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-elasticsearch-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal']
---
import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
index 802251c9006a9..728fa79fc5d2b 100644
--- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks
title: "@kbn/core-elasticsearch-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-elasticsearch-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks']
---
import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx
index a42b409ff4b8e..6559f51dffbb8 100644
--- a/api_docs/kbn_core_environment_server_internal.mdx
+++ b/api_docs/kbn_core_environment_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal
title: "@kbn/core-environment-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-environment-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal']
---
import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx
index 52063e6e5e773..d4ca1931b0680 100644
--- a/api_docs/kbn_core_environment_server_mocks.mdx
+++ b/api_docs/kbn_core_environment_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks
title: "@kbn/core-environment-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-environment-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks']
---
import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx
index 43ef889e84708..7408f6d1765d2 100644
--- a/api_docs/kbn_core_execution_context_browser.mdx
+++ b/api_docs/kbn_core_execution_context_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser
title: "@kbn/core-execution-context-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-execution-context-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser']
---
import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx
index c9f88a6d577a7..62ca7c31ffe58 100644
--- a/api_docs/kbn_core_execution_context_browser_internal.mdx
+++ b/api_docs/kbn_core_execution_context_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal
title: "@kbn/core-execution-context-browser-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-execution-context-browser-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal']
---
import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx
index 8e09bc903fade..7cac9b183e7cd 100644
--- a/api_docs/kbn_core_execution_context_browser_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks
title: "@kbn/core-execution-context-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-execution-context-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks']
---
import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx
index 3fc0d002df5ba..26169c93a9beb 100644
--- a/api_docs/kbn_core_execution_context_common.mdx
+++ b/api_docs/kbn_core_execution_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common
title: "@kbn/core-execution-context-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-execution-context-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common']
---
import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx
index 8524db0384857..8e8cd6445daa0 100644
--- a/api_docs/kbn_core_execution_context_server.mdx
+++ b/api_docs/kbn_core_execution_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server
title: "@kbn/core-execution-context-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-execution-context-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server']
---
import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx
index 7e130e5d9c6a1..774b034e4e2f2 100644
--- a/api_docs/kbn_core_execution_context_server_internal.mdx
+++ b/api_docs/kbn_core_execution_context_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal
title: "@kbn/core-execution-context-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-execution-context-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal']
---
import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx
index 8f0b12a3f5525..f9ef524129939 100644
--- a/api_docs/kbn_core_execution_context_server_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks
title: "@kbn/core-execution-context-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-execution-context-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks']
---
import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx
index cdc4101e48eba..32892f5f4887f 100644
--- a/api_docs/kbn_core_fatal_errors_browser.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser
title: "@kbn/core-fatal-errors-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-fatal-errors-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser']
---
import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
index 97285cc88f7e9..0075294cf9bde 100644
--- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks
title: "@kbn/core-fatal-errors-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks']
---
import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx
index 7345705ad1342..11b8afa9af5fe 100644
--- a/api_docs/kbn_core_http_browser.mdx
+++ b/api_docs/kbn_core_http_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser
title: "@kbn/core-http-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser']
---
import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx
index 87cd192f62fe7..74db75d88d298 100644
--- a/api_docs/kbn_core_http_browser_internal.mdx
+++ b/api_docs/kbn_core_http_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal
title: "@kbn/core-http-browser-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-browser-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal']
---
import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx
index 5efd0caf66b95..3cf875d46e1dd 100644
--- a/api_docs/kbn_core_http_browser_mocks.mdx
+++ b/api_docs/kbn_core_http_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks
title: "@kbn/core-http-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks']
---
import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx
index 71d1bfe254a5b..000b7628029ea 100644
--- a/api_docs/kbn_core_http_common.mdx
+++ b/api_docs/kbn_core_http_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common
title: "@kbn/core-http-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common']
---
import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json';
diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx
index d031cc0e265b7..14fae7d703e85 100644
--- a/api_docs/kbn_core_http_context_server_mocks.mdx
+++ b/api_docs/kbn_core_http_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks
title: "@kbn/core-http-context-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-context-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks']
---
import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx
index bdf31d5e4dfbe..4181ee193774c 100644
--- a/api_docs/kbn_core_http_request_handler_context_server.mdx
+++ b/api_docs/kbn_core_http_request_handler_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server
title: "@kbn/core-http-request-handler-context-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-request-handler-context-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server']
---
import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx
index c11aa9b74bf24..0162868a9b668 100644
--- a/api_docs/kbn_core_http_resources_server.mdx
+++ b/api_docs/kbn_core_http_resources_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server
title: "@kbn/core-http-resources-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-resources-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server']
---
import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx
index 61de2d0a17e8e..8d9f75c80620a 100644
--- a/api_docs/kbn_core_http_resources_server_internal.mdx
+++ b/api_docs/kbn_core_http_resources_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal
title: "@kbn/core-http-resources-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-resources-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal']
---
import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx
index a7dd4caf8ad08..cdf52f45d8810 100644
--- a/api_docs/kbn_core_http_resources_server_mocks.mdx
+++ b/api_docs/kbn_core_http_resources_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks
title: "@kbn/core-http-resources-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-resources-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks']
---
import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx
index 97d4c166726ff..14f2afbd97701 100644
--- a/api_docs/kbn_core_http_router_server_internal.mdx
+++ b/api_docs/kbn_core_http_router_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal
title: "@kbn/core-http-router-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-router-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal']
---
import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx
index e2ba432dabd1f..78a1e3601fc34 100644
--- a/api_docs/kbn_core_http_router_server_mocks.mdx
+++ b/api_docs/kbn_core_http_router_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks
title: "@kbn/core-http-router-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-router-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks']
---
import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_server.devdocs.json b/api_docs/kbn_core_http_server.devdocs.json
index d56e5d791e0fe..57a4d27052b2c 100644
--- a/api_docs/kbn_core_http_server.devdocs.json
+++ b/api_docs/kbn_core_http_server.devdocs.json
@@ -13458,10 +13458,6 @@
"plugin": "ml",
"path": "x-pack/plugins/ml/server/routes/management.ts"
},
- {
- "plugin": "fleet",
- "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts"
- },
{
"plugin": "telemetry",
"path": "src/plugins/telemetry/server/routes/telemetry_config.ts"
@@ -13474,6 +13470,10 @@
"plugin": "telemetry",
"path": "src/plugins/telemetry/server/routes/telemetry_last_reported.ts"
},
+ {
+ "plugin": "fleet",
+ "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts"
+ },
{
"plugin": "metricsDataAccess",
"path": "x-pack/plugins/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts"
@@ -14245,10 +14245,6 @@
"plugin": "ml",
"path": "x-pack/plugins/ml/server/routes/anomaly_detectors.ts"
},
- {
- "plugin": "fleet",
- "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts"
- },
{
"plugin": "telemetry",
"path": "src/plugins/telemetry/server/routes/telemetry_user_has_seen_notice.ts"
@@ -14257,6 +14253,10 @@
"plugin": "telemetry",
"path": "src/plugins/telemetry/server/routes/telemetry_last_reported.ts"
},
+ {
+ "plugin": "fleet",
+ "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts"
+ },
{
"plugin": "metricsDataAccess",
"path": "x-pack/plugins/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts"
@@ -14844,10 +14844,6 @@
"plugin": "ml",
"path": "x-pack/plugins/ml/server/routes/alerting.ts"
},
- {
- "plugin": "fleet",
- "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts"
- },
{
"plugin": "telemetry",
"path": "src/plugins/telemetry/server/routes/telemetry_opt_in_stats.ts"
@@ -14860,6 +14856,10 @@
"plugin": "telemetry",
"path": "src/plugins/telemetry/server/routes/telemetry_usage_stats.ts"
},
+ {
+ "plugin": "fleet",
+ "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts"
+ },
{
"plugin": "metricsDataAccess",
"path": "x-pack/plugins/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts"
diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx
index 37f7191b18491..230dca1c66cfb 100644
--- a/api_docs/kbn_core_http_server.mdx
+++ b/api_docs/kbn_core_http_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server
title: "@kbn/core-http-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server']
---
import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx
index 3fc37fb6cce16..fdc6b5fb8a5be 100644
--- a/api_docs/kbn_core_http_server_internal.mdx
+++ b/api_docs/kbn_core_http_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal
title: "@kbn/core-http-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal']
---
import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx
index 25913bc171452..ef7b5d6239fb9 100644
--- a/api_docs/kbn_core_http_server_mocks.mdx
+++ b/api_docs/kbn_core_http_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks
title: "@kbn/core-http-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-http-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks']
---
import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx
index 3176d91cddbeb..f3a78fe7a31cd 100644
--- a/api_docs/kbn_core_i18n_browser.mdx
+++ b/api_docs/kbn_core_i18n_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser
title: "@kbn/core-i18n-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-i18n-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser']
---
import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx
index 0cd83bf41925f..558c050279417 100644
--- a/api_docs/kbn_core_i18n_browser_mocks.mdx
+++ b/api_docs/kbn_core_i18n_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks
title: "@kbn/core-i18n-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-i18n-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks']
---
import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx
index 7d8076da8a034..82806d9631fbc 100644
--- a/api_docs/kbn_core_i18n_server.mdx
+++ b/api_docs/kbn_core_i18n_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server
title: "@kbn/core-i18n-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-i18n-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server']
---
import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx
index 1acc5925c43d4..7d76d69e08c49 100644
--- a/api_docs/kbn_core_i18n_server_internal.mdx
+++ b/api_docs/kbn_core_i18n_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal
title: "@kbn/core-i18n-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-i18n-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal']
---
import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx
index 92f2d9cd590cd..66d8e318d4ac8 100644
--- a/api_docs/kbn_core_i18n_server_mocks.mdx
+++ b/api_docs/kbn_core_i18n_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks
title: "@kbn/core-i18n-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-i18n-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks']
---
import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
index bdb66865eec2c..d5dfea4748b3b 100644
--- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
+++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks
title: "@kbn/core-injected-metadata-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks']
---
import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx
index 952af6620961c..1d86539b5be38 100644
--- a/api_docs/kbn_core_integrations_browser_internal.mdx
+++ b/api_docs/kbn_core_integrations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal
title: "@kbn/core-integrations-browser-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-integrations-browser-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal']
---
import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx
index a8061c897dc44..23353307cc18d 100644
--- a/api_docs/kbn_core_integrations_browser_mocks.mdx
+++ b/api_docs/kbn_core_integrations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks
title: "@kbn/core-integrations-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-integrations-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks']
---
import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx
index f8c684cc14a3d..067654c080f05 100644
--- a/api_docs/kbn_core_lifecycle_browser.mdx
+++ b/api_docs/kbn_core_lifecycle_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser
title: "@kbn/core-lifecycle-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-lifecycle-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser']
---
import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
index 5a39a5bf54f42..a233991504977 100644
--- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks
title: "@kbn/core-lifecycle-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-lifecycle-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks']
---
import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx
index afbcc50b05eb7..fe81daf4b2c60 100644
--- a/api_docs/kbn_core_lifecycle_server.mdx
+++ b/api_docs/kbn_core_lifecycle_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server
title: "@kbn/core-lifecycle-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-lifecycle-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server']
---
import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx
index cc2c4a2ba9f96..29ede0e2a0477 100644
--- a/api_docs/kbn_core_lifecycle_server_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks
title: "@kbn/core-lifecycle-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-lifecycle-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks']
---
import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx
index 4547262addfc9..e9301faba75a6 100644
--- a/api_docs/kbn_core_logging_browser_mocks.mdx
+++ b/api_docs/kbn_core_logging_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks
title: "@kbn/core-logging-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-logging-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks']
---
import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx
index 7422b691db8e2..765aba7958f5c 100644
--- a/api_docs/kbn_core_logging_common_internal.mdx
+++ b/api_docs/kbn_core_logging_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal
title: "@kbn/core-logging-common-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-logging-common-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal']
---
import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx
index d1fe65c9fcf7b..5e46a325c97a1 100644
--- a/api_docs/kbn_core_logging_server.mdx
+++ b/api_docs/kbn_core_logging_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server
title: "@kbn/core-logging-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-logging-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server']
---
import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx
index a26a495e3bcd8..806460ea79148 100644
--- a/api_docs/kbn_core_logging_server_internal.mdx
+++ b/api_docs/kbn_core_logging_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal
title: "@kbn/core-logging-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-logging-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal']
---
import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx
index f0dde5f886da8..f5865f9698507 100644
--- a/api_docs/kbn_core_logging_server_mocks.mdx
+++ b/api_docs/kbn_core_logging_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks
title: "@kbn/core-logging-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-logging-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks']
---
import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
index 5793b31f98c8c..851a26e67adc2 100644
--- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal
title: "@kbn/core-metrics-collectors-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-metrics-collectors-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal']
---
import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
index d4311763380dc..f9379c11236ae 100644
--- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks
title: "@kbn/core-metrics-collectors-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks']
---
import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server.devdocs.json b/api_docs/kbn_core_metrics_server.devdocs.json
index 1d18b5552b80b..94105c95f94cd 100644
--- a/api_docs/kbn_core_metrics_server.devdocs.json
+++ b/api_docs/kbn_core_metrics_server.devdocs.json
@@ -774,7 +774,7 @@
"tags": [],
"label": "event_loop_delay",
"description": [
- "mean event loop delay since last collection"
+ "max event loop delay since last collection"
],
"path": "packages/core/metrics/core-metrics-server/src/metrics.ts",
"deprecated": false,
diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx
index e1b20174b418d..6c984819ffdb7 100644
--- a/api_docs/kbn_core_metrics_server.mdx
+++ b/api_docs/kbn_core_metrics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server
title: "@kbn/core-metrics-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-metrics-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server']
---
import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx
index 5665b61fe4ca9..9a69132b004ae 100644
--- a/api_docs/kbn_core_metrics_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal
title: "@kbn/core-metrics-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-metrics-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal']
---
import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx
index 852028a83ba28..d9af1975fa5c7 100644
--- a/api_docs/kbn_core_metrics_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks
title: "@kbn/core-metrics-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-metrics-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks']
---
import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx
index 01588d1779dc4..93b5b48ae5c99 100644
--- a/api_docs/kbn_core_mount_utils_browser.mdx
+++ b/api_docs/kbn_core_mount_utils_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser
title: "@kbn/core-mount-utils-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-mount-utils-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser']
---
import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json';
diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx
index 3c922aecbfcc0..82f06e407d346 100644
--- a/api_docs/kbn_core_node_server.mdx
+++ b/api_docs/kbn_core_node_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server
title: "@kbn/core-node-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-node-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server']
---
import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx
index 7c983162cc84f..44ed6c4b2a1c7 100644
--- a/api_docs/kbn_core_node_server_internal.mdx
+++ b/api_docs/kbn_core_node_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal
title: "@kbn/core-node-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-node-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal']
---
import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx
index b74726656c740..fe5f1d2acec51 100644
--- a/api_docs/kbn_core_node_server_mocks.mdx
+++ b/api_docs/kbn_core_node_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks
title: "@kbn/core-node-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-node-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks']
---
import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx
index 81e3d42e67d41..24bafb61c4d79 100644
--- a/api_docs/kbn_core_notifications_browser.mdx
+++ b/api_docs/kbn_core_notifications_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser
title: "@kbn/core-notifications-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-notifications-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser']
---
import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx
index 25e7adabe9247..9476d68072f54 100644
--- a/api_docs/kbn_core_notifications_browser_internal.mdx
+++ b/api_docs/kbn_core_notifications_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal
title: "@kbn/core-notifications-browser-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-notifications-browser-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal']
---
import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx
index f82c7ed4202c0..60c3449aa3578 100644
--- a/api_docs/kbn_core_notifications_browser_mocks.mdx
+++ b/api_docs/kbn_core_notifications_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks
title: "@kbn/core-notifications-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-notifications-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks']
---
import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx
index 1f5efebeb5fac..92fed9021ed28 100644
--- a/api_docs/kbn_core_overlays_browser.mdx
+++ b/api_docs/kbn_core_overlays_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser
title: "@kbn/core-overlays-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-overlays-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser']
---
import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx
index 937664dffe6e7..078ed92c6f2d3 100644
--- a/api_docs/kbn_core_overlays_browser_internal.mdx
+++ b/api_docs/kbn_core_overlays_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal
title: "@kbn/core-overlays-browser-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-overlays-browser-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal']
---
import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx
index cfaa2d00fe7e9..f6a37f4fec3ec 100644
--- a/api_docs/kbn_core_overlays_browser_mocks.mdx
+++ b/api_docs/kbn_core_overlays_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks
title: "@kbn/core-overlays-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-overlays-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks']
---
import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx
index 0f305e00c2d2d..6cf3a9a8ce30b 100644
--- a/api_docs/kbn_core_plugins_browser.mdx
+++ b/api_docs/kbn_core_plugins_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser
title: "@kbn/core-plugins-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-plugins-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser']
---
import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx
index b4db4c8de8a27..eaded7cce7ee3 100644
--- a/api_docs/kbn_core_plugins_browser_mocks.mdx
+++ b/api_docs/kbn_core_plugins_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks
title: "@kbn/core-plugins-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-plugins-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks']
---
import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx
index 8ac36c2f7632a..0608df49a653c 100644
--- a/api_docs/kbn_core_plugins_contracts_browser.mdx
+++ b/api_docs/kbn_core_plugins_contracts_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser
title: "@kbn/core-plugins-contracts-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-plugins-contracts-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser']
---
import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx
index d7af9a27b00a6..7209d1037a231 100644
--- a/api_docs/kbn_core_plugins_contracts_server.mdx
+++ b/api_docs/kbn_core_plugins_contracts_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server
title: "@kbn/core-plugins-contracts-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-plugins-contracts-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server']
---
import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx
index ba2859105a7c9..13b17fbc2b6d2 100644
--- a/api_docs/kbn_core_plugins_server.mdx
+++ b/api_docs/kbn_core_plugins_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server
title: "@kbn/core-plugins-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-plugins-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server']
---
import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx
index e7d3ccf9a4ff4..5a22bd7bb697e 100644
--- a/api_docs/kbn_core_plugins_server_mocks.mdx
+++ b/api_docs/kbn_core_plugins_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks
title: "@kbn/core-plugins-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-plugins-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks']
---
import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx
index 0c3f3cb32a2b5..1c33aa29f5908 100644
--- a/api_docs/kbn_core_preboot_server.mdx
+++ b/api_docs/kbn_core_preboot_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server
title: "@kbn/core-preboot-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-preboot-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server']
---
import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx
index af0717c6bc597..ee591d5411216 100644
--- a/api_docs/kbn_core_preboot_server_mocks.mdx
+++ b/api_docs/kbn_core_preboot_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks
title: "@kbn/core-preboot-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-preboot-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks']
---
import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx
index 5874b037ddc11..c36a7e68cbd6e 100644
--- a/api_docs/kbn_core_rendering_browser_mocks.mdx
+++ b/api_docs/kbn_core_rendering_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks
title: "@kbn/core-rendering-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-rendering-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks']
---
import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx
index 15ed875325bbe..5983e3925e755 100644
--- a/api_docs/kbn_core_rendering_server_internal.mdx
+++ b/api_docs/kbn_core_rendering_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal
title: "@kbn/core-rendering-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-rendering-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal']
---
import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx
index 84ca15d445fc0..8ceed00c2762b 100644
--- a/api_docs/kbn_core_rendering_server_mocks.mdx
+++ b/api_docs/kbn_core_rendering_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks
title: "@kbn/core-rendering-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-rendering-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks']
---
import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx
index 3ab0e4f82db21..9ba5556748b99 100644
--- a/api_docs/kbn_core_root_server_internal.mdx
+++ b/api_docs/kbn_core_root_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal
title: "@kbn/core-root-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-root-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal']
---
import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx
index 28134ae64a90d..4a7a4ef3ac01f 100644
--- a/api_docs/kbn_core_saved_objects_api_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_api_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser
title: "@kbn/core-saved-objects-api-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-api-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser']
---
import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx
index bdf3bc95ea6fd..e854e970ffe99 100644
--- a/api_docs/kbn_core_saved_objects_api_server.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server
title: "@kbn/core-saved-objects-api-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-api-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server']
---
import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
index c78c9e61422be..ad5ed8b9d3cd4 100644
--- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks
title: "@kbn/core-saved-objects-api-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks']
---
import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
index 02cb043dd2de3..e05d71651db6a 100644
--- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal
title: "@kbn/core-saved-objects-base-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-base-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal']
---
import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
index ca53cb11b38d4..a2a4b4f8b2dfb 100644
--- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks
title: "@kbn/core-saved-objects-base-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks']
---
import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx
index 7b4d5f3d3c71c..a77a967f35e7e 100644
--- a/api_docs/kbn_core_saved_objects_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser
title: "@kbn/core-saved-objects-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser']
---
import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx
index 7f1e6c20b5d18..28cbc50d2e911 100644
--- a/api_docs/kbn_core_saved_objects_browser_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal
title: "@kbn/core-saved-objects-browser-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-browser-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal']
---
import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
index 99b72e6544512..65d85b7fc7974 100644
--- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks
title: "@kbn/core-saved-objects-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks']
---
import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx
index 2869e76c8a1ab..a6c9208831285 100644
--- a/api_docs/kbn_core_saved_objects_common.mdx
+++ b/api_docs/kbn_core_saved_objects_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common
title: "@kbn/core-saved-objects-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common']
---
import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
index 3be5750bd3b3d..5798f04b9dfa4 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal
title: "@kbn/core-saved-objects-import-export-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal']
---
import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
index 6e40b9302e077..171580c0b8272 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks
title: "@kbn/core-saved-objects-import-export-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks']
---
import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
index ba6c00474f73e..44980eaadc1b7 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal
title: "@kbn/core-saved-objects-migration-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal']
---
import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
index 8784471837e07..d1e382cff2c8f 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks
title: "@kbn/core-saved-objects-migration-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks']
---
import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx
index db0af309d0afd..53b63e3f86519 100644
--- a/api_docs/kbn_core_saved_objects_server.mdx
+++ b/api_docs/kbn_core_saved_objects_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server
title: "@kbn/core-saved-objects-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server']
---
import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx
index dadf694ede7a5..c159b22fcbfa8 100644
--- a/api_docs/kbn_core_saved_objects_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal
title: "@kbn/core-saved-objects-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal']
---
import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx
index dbf49368e6046..e1ef308e0ebf5 100644
--- a/api_docs/kbn_core_saved_objects_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks
title: "@kbn/core-saved-objects-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks']
---
import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx
index 4c187f17802b1..b88f9592d4a4c 100644
--- a/api_docs/kbn_core_saved_objects_utils_server.mdx
+++ b/api_docs/kbn_core_saved_objects_utils_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server
title: "@kbn/core-saved-objects-utils-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-saved-objects-utils-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server']
---
import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx
index 09e60392297db..1a831b222e8f4 100644
--- a/api_docs/kbn_core_status_common.mdx
+++ b/api_docs/kbn_core_status_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common
title: "@kbn/core-status-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-status-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common']
---
import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json';
diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx
index a4b55f5af4e4c..1677c7e0eab28 100644
--- a/api_docs/kbn_core_status_common_internal.mdx
+++ b/api_docs/kbn_core_status_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal
title: "@kbn/core-status-common-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-status-common-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal']
---
import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx
index 18ffbfc385739..60f7ced5ec0c9 100644
--- a/api_docs/kbn_core_status_server.mdx
+++ b/api_docs/kbn_core_status_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server
title: "@kbn/core-status-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-status-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server']
---
import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx
index 583b2e06b7ea3..02a98b63df27c 100644
--- a/api_docs/kbn_core_status_server_internal.mdx
+++ b/api_docs/kbn_core_status_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal
title: "@kbn/core-status-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-status-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal']
---
import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx
index 23ef8fab43651..0c600a3c90701 100644
--- a/api_docs/kbn_core_status_server_mocks.mdx
+++ b/api_docs/kbn_core_status_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks
title: "@kbn/core-status-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-status-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks']
---
import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
index dba46af4a838d..c313879c99412 100644
--- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
+++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters
title: "@kbn/core-test-helpers-deprecations-getters"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters']
---
import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
index 812b329c8e0c6..1018bb94e9dec 100644
--- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
+++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser
title: "@kbn/core-test-helpers-http-setup-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser']
---
import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx
index 5c654e3baed82..7d244a1742445 100644
--- a/api_docs/kbn_core_test_helpers_kbn_server.mdx
+++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server
title: "@kbn/core-test-helpers-kbn-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-test-helpers-kbn-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server']
---
import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx
index 5473f6c55bdc0..31d9dd2c28d8e 100644
--- a/api_docs/kbn_core_test_helpers_model_versions.mdx
+++ b/api_docs/kbn_core_test_helpers_model_versions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions
title: "@kbn/core-test-helpers-model-versions"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-test-helpers-model-versions plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions']
---
import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
index adc7ce056f38d..7a94da085f2ad 100644
--- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
+++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer
title: "@kbn/core-test-helpers-so-type-serializer"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer']
---
import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx
index 2e84f1b126cf9..30b8dfa1edb87 100644
--- a/api_docs/kbn_core_test_helpers_test_utils.mdx
+++ b/api_docs/kbn_core_test_helpers_test_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils
title: "@kbn/core-test-helpers-test-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-test-helpers-test-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils']
---
import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx
index 4986c24dd3142..6b0bc462472b8 100644
--- a/api_docs/kbn_core_theme_browser.mdx
+++ b/api_docs/kbn_core_theme_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser
title: "@kbn/core-theme-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-theme-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser']
---
import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx
index 98e0c30778b4f..5cfb4ff53d196 100644
--- a/api_docs/kbn_core_theme_browser_mocks.mdx
+++ b/api_docs/kbn_core_theme_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks
title: "@kbn/core-theme-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-theme-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks']
---
import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx
index 8c8e0881e8a89..67504c2e704f9 100644
--- a/api_docs/kbn_core_ui_settings_browser.mdx
+++ b/api_docs/kbn_core_ui_settings_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser
title: "@kbn/core-ui-settings-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-ui-settings-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser']
---
import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx
index bc2c63bbe7d7e..3098860a5dc8f 100644
--- a/api_docs/kbn_core_ui_settings_browser_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal
title: "@kbn/core-ui-settings-browser-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-ui-settings-browser-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal']
---
import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
index 1f6ca016aab1c..814b1ba41aa00 100644
--- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks
title: "@kbn/core-ui-settings-browser-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-ui-settings-browser-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks']
---
import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx
index 187588d2bc5a3..c4c1a476b152b 100644
--- a/api_docs/kbn_core_ui_settings_common.mdx
+++ b/api_docs/kbn_core_ui_settings_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common
title: "@kbn/core-ui-settings-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-ui-settings-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common']
---
import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx
index e0fe3cfb183bd..e416f3608ccbd 100644
--- a/api_docs/kbn_core_ui_settings_server.mdx
+++ b/api_docs/kbn_core_ui_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server
title: "@kbn/core-ui-settings-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-ui-settings-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server']
---
import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx
index 6bdf31da5419b..830aa088f24a1 100644
--- a/api_docs/kbn_core_ui_settings_server_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal
title: "@kbn/core-ui-settings-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-ui-settings-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal']
---
import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx
index 0515552488e9a..cfad511c90d6c 100644
--- a/api_docs/kbn_core_ui_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks
title: "@kbn/core-ui-settings-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-ui-settings-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks']
---
import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx
index a8fd5771c15f0..8316f0ca36d5d 100644
--- a/api_docs/kbn_core_usage_data_server.mdx
+++ b/api_docs/kbn_core_usage_data_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server
title: "@kbn/core-usage-data-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-usage-data-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server']
---
import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx
index 748d12e8ab9a8..c4399e22370c6 100644
--- a/api_docs/kbn_core_usage_data_server_internal.mdx
+++ b/api_docs/kbn_core_usage_data_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal
title: "@kbn/core-usage-data-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-usage-data-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal']
---
import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx
index c28a9dc9b91bb..4a4f2d887d2cb 100644
--- a/api_docs/kbn_core_usage_data_server_mocks.mdx
+++ b/api_docs/kbn_core_usage_data_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks
title: "@kbn/core-usage-data-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-usage-data-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks']
---
import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx
index 303c4c7fd4cfb..d5a6ba567a240 100644
--- a/api_docs/kbn_core_user_settings_server.mdx
+++ b/api_docs/kbn_core_user_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server
title: "@kbn/core-user-settings-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-user-settings-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server']
---
import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx
index 98ab2b89d3dba..4d99359014c3f 100644
--- a/api_docs/kbn_core_user_settings_server_internal.mdx
+++ b/api_docs/kbn_core_user_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal
title: "@kbn/core-user-settings-server-internal"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-user-settings-server-internal plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal']
---
import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx
index 239ddafcb2624..04ba42b10541d 100644
--- a/api_docs/kbn_core_user_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_user_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks
title: "@kbn/core-user-settings-server-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/core-user-settings-server-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks']
---
import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx
index 8b3d833cf536d..d333baaa4a0de 100644
--- a/api_docs/kbn_crypto.mdx
+++ b/api_docs/kbn_crypto.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto
title: "@kbn/crypto"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/crypto plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto']
---
import kbnCryptoObj from './kbn_crypto.devdocs.json';
diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx
index c4c9cb58458fa..4d7bcb592744b 100644
--- a/api_docs/kbn_crypto_browser.mdx
+++ b/api_docs/kbn_crypto_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser
title: "@kbn/crypto-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/crypto-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser']
---
import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json';
diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx
index f636ec3e8e282..343eaaed92111 100644
--- a/api_docs/kbn_custom_icons.mdx
+++ b/api_docs/kbn_custom_icons.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons
title: "@kbn/custom-icons"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/custom-icons plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons']
---
import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json';
diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx
index 003067057d3c1..a389c3c26858e 100644
--- a/api_docs/kbn_custom_integrations.mdx
+++ b/api_docs/kbn_custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations
title: "@kbn/custom-integrations"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/custom-integrations plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations']
---
import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json';
diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx
index 2fa2e8356b094..81ef938d91d2c 100644
--- a/api_docs/kbn_cypress_config.mdx
+++ b/api_docs/kbn_cypress_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config
title: "@kbn/cypress-config"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/cypress-config plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config']
---
import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json';
diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx
index 984596fc272c5..002559499a1df 100644
--- a/api_docs/kbn_data_forge.mdx
+++ b/api_docs/kbn_data_forge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge
title: "@kbn/data-forge"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/data-forge plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge']
---
import kbnDataForgeObj from './kbn_data_forge.devdocs.json';
diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx
index 9819ba356279a..430d45498bb40 100644
--- a/api_docs/kbn_data_service.mdx
+++ b/api_docs/kbn_data_service.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service
title: "@kbn/data-service"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/data-service plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service']
---
import kbnDataServiceObj from './kbn_data_service.devdocs.json';
diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx
index f5b198e3a48b5..68f72a1fd0901 100644
--- a/api_docs/kbn_data_stream_adapter.mdx
+++ b/api_docs/kbn_data_stream_adapter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter
title: "@kbn/data-stream-adapter"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/data-stream-adapter plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter']
---
import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json';
diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx
index 72c261895988c..a763f21a11daa 100644
--- a/api_docs/kbn_data_view_utils.mdx
+++ b/api_docs/kbn_data_view_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils
title: "@kbn/data-view-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/data-view-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils']
---
import kbnDataViewUtilsObj from './kbn_data_view_utils.devdocs.json';
diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx
index e9fffd73a0d7b..4aa7fa6275ba8 100644
--- a/api_docs/kbn_datemath.mdx
+++ b/api_docs/kbn_datemath.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath
title: "@kbn/datemath"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/datemath plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath']
---
import kbnDatemathObj from './kbn_datemath.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx
index 4a05b2bf3d87b..c643f419d4ac3 100644
--- a/api_docs/kbn_deeplinks_analytics.mdx
+++ b/api_docs/kbn_deeplinks_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics
title: "@kbn/deeplinks-analytics"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/deeplinks-analytics plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics']
---
import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx
index 896a607ce4c28..16eee4094208f 100644
--- a/api_docs/kbn_deeplinks_devtools.mdx
+++ b/api_docs/kbn_deeplinks_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools
title: "@kbn/deeplinks-devtools"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/deeplinks-devtools plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools']
---
import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx
index 9fb95d8f21eb7..501e40ba80883 100644
--- a/api_docs/kbn_deeplinks_management.mdx
+++ b/api_docs/kbn_deeplinks_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management
title: "@kbn/deeplinks-management"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/deeplinks-management plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management']
---
import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx
index 8a5c1e6fda02a..90e31d805e486 100644
--- a/api_docs/kbn_deeplinks_ml.mdx
+++ b/api_docs/kbn_deeplinks_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml
title: "@kbn/deeplinks-ml"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/deeplinks-ml plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml']
---
import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_observability.devdocs.json b/api_docs/kbn_deeplinks_observability.devdocs.json
index 8283e29631a8a..87bd7314368bd 100644
--- a/api_docs/kbn_deeplinks_observability.devdocs.json
+++ b/api_docs/kbn_deeplinks_observability.devdocs.json
@@ -336,6 +336,50 @@
],
"initialIsOpen": false
},
+ {
+ "parentPluginId": "@kbn/deeplinks-observability",
+ "id": "def-common.ObsLogsExplorerDataViewLocatorParams",
+ "type": "Interface",
+ "tags": [],
+ "label": "ObsLogsExplorerDataViewLocatorParams",
+ "description": [],
+ "signature": [
+ {
+ "pluginId": "@kbn/deeplinks-observability",
+ "scope": "common",
+ "docId": "kibKbnDeeplinksObservabilityPluginApi",
+ "section": "def-common.ObsLogsExplorerDataViewLocatorParams",
+ "text": "ObsLogsExplorerDataViewLocatorParams"
+ },
+ " extends ",
+ {
+ "pluginId": "@kbn/deeplinks-observability",
+ "scope": "common",
+ "docId": "kibKbnDeeplinksObservabilityPluginApi",
+ "section": "def-common.DatasetLocatorParams",
+ "text": "DatasetLocatorParams"
+ }
+ ],
+ "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "children": [
+ {
+ "parentPluginId": "@kbn/deeplinks-observability",
+ "id": "def-common.ObsLogsExplorerDataViewLocatorParams.id",
+ "type": "string",
+ "tags": [],
+ "label": "id",
+ "description": [
+ "\nData view id to select"
+ ],
+ "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts",
+ "deprecated": false,
+ "trackAdoption": false
+ }
+ ],
+ "initialIsOpen": false
+ },
{
"parentPluginId": "@kbn/deeplinks-observability",
"id": "def-common.SingleDatasetLocatorParams",
@@ -621,6 +665,21 @@
"trackAdoption": false,
"initialIsOpen": false
},
+ {
+ "parentPluginId": "@kbn/deeplinks-observability",
+ "id": "def-common.OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR_ID",
+ "type": "string",
+ "tags": [],
+ "label": "OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR_ID",
+ "description": [],
+ "signature": [
+ "\"OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR\""
+ ],
+ "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "initialIsOpen": false
+ },
{
"parentPluginId": "@kbn/deeplinks-observability",
"id": "def-common.OBSERVABILITY_LOGS_EXPLORER_APP_ID",
diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx
index 97bfae2e44c7c..444f4019b9e67 100644
--- a/api_docs/kbn_deeplinks_observability.mdx
+++ b/api_docs/kbn_deeplinks_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability
title: "@kbn/deeplinks-observability"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/deeplinks-observability plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability']
---
import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux
| Public API count | Any count | Items lacking comments | Missing exports |
|-------------------|-----------|------------------------|-----------------|
-| 34 | 0 | 24 | 0 |
+| 37 | 0 | 26 | 0 |
## Common
diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx
index d8b725ec926e1..6a37a8a0dcadc 100644
--- a/api_docs/kbn_deeplinks_search.mdx
+++ b/api_docs/kbn_deeplinks_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search
title: "@kbn/deeplinks-search"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/deeplinks-search plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search']
---
import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json';
diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx
index e03823a47ca2b..f3c2ebd97625d 100644
--- a/api_docs/kbn_default_nav_analytics.mdx
+++ b/api_docs/kbn_default_nav_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics
title: "@kbn/default-nav-analytics"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/default-nav-analytics plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics']
---
import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json';
diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx
index 0295a0859635d..60c3b94e83e81 100644
--- a/api_docs/kbn_default_nav_devtools.mdx
+++ b/api_docs/kbn_default_nav_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools
title: "@kbn/default-nav-devtools"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/default-nav-devtools plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools']
---
import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json';
diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx
index fb0a5671c8e6f..653702796a06d 100644
--- a/api_docs/kbn_default_nav_management.mdx
+++ b/api_docs/kbn_default_nav_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management
title: "@kbn/default-nav-management"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/default-nav-management plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management']
---
import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json';
diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx
index 65f2ad6374478..d533d93ee91a6 100644
--- a/api_docs/kbn_default_nav_ml.mdx
+++ b/api_docs/kbn_default_nav_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml
title: "@kbn/default-nav-ml"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/default-nav-ml plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml']
---
import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx
index e56d905e7f6dd..6e35ab3db6853 100644
--- a/api_docs/kbn_dev_cli_errors.mdx
+++ b/api_docs/kbn_dev_cli_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors
title: "@kbn/dev-cli-errors"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/dev-cli-errors plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors']
---
import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx
index c323cd0621e43..64e1b05c27a91 100644
--- a/api_docs/kbn_dev_cli_runner.mdx
+++ b/api_docs/kbn_dev_cli_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner
title: "@kbn/dev-cli-runner"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/dev-cli-runner plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner']
---
import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx
index 086bc156c4962..6aa90efa2e122 100644
--- a/api_docs/kbn_dev_proc_runner.mdx
+++ b/api_docs/kbn_dev_proc_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner
title: "@kbn/dev-proc-runner"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/dev-proc-runner plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner']
---
import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx
index 38caf1620fee0..ee730a5f9e490 100644
--- a/api_docs/kbn_dev_utils.mdx
+++ b/api_docs/kbn_dev_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils
title: "@kbn/dev-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/dev-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils']
---
import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json';
diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx
index c9171bb1205f3..d643d7df50c41 100644
--- a/api_docs/kbn_discover_utils.mdx
+++ b/api_docs/kbn_discover_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils
title: "@kbn/discover-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/discover-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils']
---
import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json';
diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx
index 9a514fd45bdf5..62561ff99f01e 100644
--- a/api_docs/kbn_doc_links.mdx
+++ b/api_docs/kbn_doc_links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links
title: "@kbn/doc-links"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/doc-links plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links']
---
import kbnDocLinksObj from './kbn_doc_links.devdocs.json';
diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx
index a7d8716b233b9..dabaa236ccfc2 100644
--- a/api_docs/kbn_docs_utils.mdx
+++ b/api_docs/kbn_docs_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils
title: "@kbn/docs-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/docs-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils']
---
import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json';
diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx
index e26db14bf190f..4de64f6f7ebe3 100644
--- a/api_docs/kbn_dom_drag_drop.mdx
+++ b/api_docs/kbn_dom_drag_drop.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop
title: "@kbn/dom-drag-drop"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/dom-drag-drop plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop']
---
import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json';
diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx
index 696a5ef2e14a3..8a2291c82f8f1 100644
--- a/api_docs/kbn_ebt_tools.mdx
+++ b/api_docs/kbn_ebt_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools
title: "@kbn/ebt-tools"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ebt-tools plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools']
---
import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json';
diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx
index 29a9c4b9fd241..1bd9fc5b43005 100644
--- a/api_docs/kbn_ecs_data_quality_dashboard.mdx
+++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard
title: "@kbn/ecs-data-quality-dashboard"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ecs-data-quality-dashboard plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard']
---
import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx
index cab94979ca8f2..99adc000925e5 100644
--- a/api_docs/kbn_elastic_agent_utils.mdx
+++ b/api_docs/kbn_elastic_agent_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils
title: "@kbn/elastic-agent-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/elastic-agent-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils']
---
import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json';
diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx
index 95cddc9df0ddf..11dbf0894e5e3 100644
--- a/api_docs/kbn_elastic_assistant.mdx
+++ b/api_docs/kbn_elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant
title: "@kbn/elastic-assistant"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/elastic-assistant plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant']
---
import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json';
diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx
index f0db1605f47b4..d6922741d28fb 100644
--- a/api_docs/kbn_elastic_assistant_common.mdx
+++ b/api_docs/kbn_elastic_assistant_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common
title: "@kbn/elastic-assistant-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/elastic-assistant-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common']
---
import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json';
diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx
index dc95925204d03..db9fa37c2e9be 100644
--- a/api_docs/kbn_es.mdx
+++ b/api_docs/kbn_es.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es
title: "@kbn/es"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/es plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es']
---
import kbnEsObj from './kbn_es.devdocs.json';
diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx
index b8f8532a167de..07e1705ab9477 100644
--- a/api_docs/kbn_es_archiver.mdx
+++ b/api_docs/kbn_es_archiver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver
title: "@kbn/es-archiver"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/es-archiver plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver']
---
import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json';
diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx
index d9c2553679145..865d7c7dc8e57 100644
--- a/api_docs/kbn_es_errors.mdx
+++ b/api_docs/kbn_es_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors
title: "@kbn/es-errors"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/es-errors plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors']
---
import kbnEsErrorsObj from './kbn_es_errors.devdocs.json';
diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx
index 1589adb099868..f7fe935246c89 100644
--- a/api_docs/kbn_es_query.mdx
+++ b/api_docs/kbn_es_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query
title: "@kbn/es-query"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/es-query plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query']
---
import kbnEsQueryObj from './kbn_es_query.devdocs.json';
diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx
index d1bb6ac780691..c368d1466e951 100644
--- a/api_docs/kbn_es_types.mdx
+++ b/api_docs/kbn_es_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types
title: "@kbn/es-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/es-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types']
---
import kbnEsTypesObj from './kbn_es_types.devdocs.json';
diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx
index 4d254f362cf86..d36ab7ffd0478 100644
--- a/api_docs/kbn_eslint_plugin_imports.mdx
+++ b/api_docs/kbn_eslint_plugin_imports.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports
title: "@kbn/eslint-plugin-imports"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/eslint-plugin-imports plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports']
---
import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json';
diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx
index a5466f1a89acf..1ce9fb1f375c0 100644
--- a/api_docs/kbn_esql_utils.mdx
+++ b/api_docs/kbn_esql_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils
title: "@kbn/esql-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/esql-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils']
---
import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx
index 62b7f5291ccdd..6b59b047261a4 100644
--- a/api_docs/kbn_event_annotation_common.mdx
+++ b/api_docs/kbn_event_annotation_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common
title: "@kbn/event-annotation-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/event-annotation-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common']
---
import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx
index 43f4cbbb7d259..d71f1f54ecdc3 100644
--- a/api_docs/kbn_event_annotation_components.mdx
+++ b/api_docs/kbn_event_annotation_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components
title: "@kbn/event-annotation-components"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/event-annotation-components plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components']
---
import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json';
diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx
index 64a9d6268455f..8c459c9a2ff93 100644
--- a/api_docs/kbn_expandable_flyout.mdx
+++ b/api_docs/kbn_expandable_flyout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout
title: "@kbn/expandable-flyout"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/expandable-flyout plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout']
---
import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json';
diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx
index 46e072b9ec6c3..d3215e532fc26 100644
--- a/api_docs/kbn_field_types.mdx
+++ b/api_docs/kbn_field_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types
title: "@kbn/field-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/field-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types']
---
import kbnFieldTypesObj from './kbn_field_types.devdocs.json';
diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx
index 4143d1c69fd59..7fb9d6827ffd8 100644
--- a/api_docs/kbn_field_utils.mdx
+++ b/api_docs/kbn_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils
title: "@kbn/field-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/field-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils']
---
import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json';
diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx
index b18db56509495..046406b4fdc50 100644
--- a/api_docs/kbn_find_used_node_modules.mdx
+++ b/api_docs/kbn_find_used_node_modules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules
title: "@kbn/find-used-node-modules"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/find-used-node-modules plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules']
---
import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json';
diff --git a/api_docs/kbn_formatters.mdx b/api_docs/kbn_formatters.mdx
index 1f6342a4476d9..5e67dc7aa5c04 100644
--- a/api_docs/kbn_formatters.mdx
+++ b/api_docs/kbn_formatters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-formatters
title: "@kbn/formatters"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/formatters plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/formatters']
---
import kbnFormattersObj from './kbn_formatters.devdocs.json';
diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx
index 1d03a4277165b..64f59b0a5f9e4 100644
--- a/api_docs/kbn_ftr_common_functional_services.mdx
+++ b/api_docs/kbn_ftr_common_functional_services.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services
title: "@kbn/ftr-common-functional-services"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ftr-common-functional-services plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services']
---
import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json';
diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx
index 05527a7c6b221..b33f2b2780ee9 100644
--- a/api_docs/kbn_ftr_common_functional_ui_services.mdx
+++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services
title: "@kbn/ftr-common-functional-ui-services"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ftr-common-functional-ui-services plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services']
---
import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json';
diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx
index 9fbf353c5b976..d0c49514b9b0f 100644
--- a/api_docs/kbn_generate.mdx
+++ b/api_docs/kbn_generate.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate
title: "@kbn/generate"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/generate plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate']
---
import kbnGenerateObj from './kbn_generate.devdocs.json';
diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx
index c2b2c84c3bc15..73ea041274e2d 100644
--- a/api_docs/kbn_generate_console_definitions.mdx
+++ b/api_docs/kbn_generate_console_definitions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions
title: "@kbn/generate-console-definitions"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/generate-console-definitions plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions']
---
import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json';
diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx
index 737d5cd63d818..d838fb0879739 100644
--- a/api_docs/kbn_generate_csv.mdx
+++ b/api_docs/kbn_generate_csv.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv
title: "@kbn/generate-csv"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/generate-csv plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv']
---
import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json';
diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx
index 2a0648e9eef2f..ec1e8c84e5e82 100644
--- a/api_docs/kbn_guided_onboarding.mdx
+++ b/api_docs/kbn_guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding
title: "@kbn/guided-onboarding"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/guided-onboarding plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding']
---
import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json';
diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx
index 9e3209221873e..d5b5e9ce086ee 100644
--- a/api_docs/kbn_handlebars.mdx
+++ b/api_docs/kbn_handlebars.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars
title: "@kbn/handlebars"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/handlebars plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars']
---
import kbnHandlebarsObj from './kbn_handlebars.devdocs.json';
diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx
index bcdead96c1394..c171a6488e222 100644
--- a/api_docs/kbn_hapi_mocks.mdx
+++ b/api_docs/kbn_hapi_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks
title: "@kbn/hapi-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/hapi-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks']
---
import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json';
diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx
index 1e0e7f9bf67ea..91c687ca342e2 100644
--- a/api_docs/kbn_health_gateway_server.mdx
+++ b/api_docs/kbn_health_gateway_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server
title: "@kbn/health-gateway-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/health-gateway-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server']
---
import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx
index c6c4b1d347fda..2ef5a79cf609d 100644
--- a/api_docs/kbn_home_sample_data_card.mdx
+++ b/api_docs/kbn_home_sample_data_card.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card
title: "@kbn/home-sample-data-card"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/home-sample-data-card plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card']
---
import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx
index 5180c2679f4c5..f36bd81483f91 100644
--- a/api_docs/kbn_home_sample_data_tab.mdx
+++ b/api_docs/kbn_home_sample_data_tab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab
title: "@kbn/home-sample-data-tab"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/home-sample-data-tab plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab']
---
import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json';
diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx
index 47902edc237c0..bba6538299a60 100644
--- a/api_docs/kbn_i18n.mdx
+++ b/api_docs/kbn_i18n.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n
title: "@kbn/i18n"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/i18n plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n']
---
import kbnI18nObj from './kbn_i18n.devdocs.json';
diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx
index e112b3075a951..a10a7d2415b6a 100644
--- a/api_docs/kbn_i18n_react.mdx
+++ b/api_docs/kbn_i18n_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react
title: "@kbn/i18n-react"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/i18n-react plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react']
---
import kbnI18nReactObj from './kbn_i18n_react.devdocs.json';
diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx
index 4ef7bd4dbd8cf..514b72a2e7627 100644
--- a/api_docs/kbn_import_resolver.mdx
+++ b/api_docs/kbn_import_resolver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver
title: "@kbn/import-resolver"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/import-resolver plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver']
---
import kbnImportResolverObj from './kbn_import_resolver.devdocs.json';
diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx
index 6df254e94ffef..56afa516cab4a 100644
--- a/api_docs/kbn_infra_forge.mdx
+++ b/api_docs/kbn_infra_forge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge
title: "@kbn/infra-forge"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/infra-forge plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge']
---
import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json';
diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx
index 7b24ff48884f4..78792d5d8c326 100644
--- a/api_docs/kbn_interpreter.mdx
+++ b/api_docs/kbn_interpreter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter
title: "@kbn/interpreter"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/interpreter plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter']
---
import kbnInterpreterObj from './kbn_interpreter.devdocs.json';
diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx
index 16d874d2700bb..5cc5cfd7daeaa 100644
--- a/api_docs/kbn_io_ts_utils.mdx
+++ b/api_docs/kbn_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils
title: "@kbn/io-ts-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/io-ts-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils']
---
import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json';
diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx
index 074b0cea3f712..e78585a9892f5 100644
--- a/api_docs/kbn_jest_serializers.mdx
+++ b/api_docs/kbn_jest_serializers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers
title: "@kbn/jest-serializers"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/jest-serializers plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers']
---
import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json';
diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx
index aed0ad41e76fc..f6746bd51a6e6 100644
--- a/api_docs/kbn_journeys.mdx
+++ b/api_docs/kbn_journeys.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys
title: "@kbn/journeys"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/journeys plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys']
---
import kbnJourneysObj from './kbn_journeys.devdocs.json';
diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx
index e0ab4f48d8744..ae25031b33ee8 100644
--- a/api_docs/kbn_json_ast.mdx
+++ b/api_docs/kbn_json_ast.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast
title: "@kbn/json-ast"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/json-ast plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast']
---
import kbnJsonAstObj from './kbn_json_ast.devdocs.json';
diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx
index 8aabded9430ec..0534e154abf07 100644
--- a/api_docs/kbn_kibana_manifest_schema.mdx
+++ b/api_docs/kbn_kibana_manifest_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema
title: "@kbn/kibana-manifest-schema"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/kibana-manifest-schema plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema']
---
import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json';
diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx
index 9434354494f2c..26265620b0818 100644
--- a/api_docs/kbn_language_documentation_popover.mdx
+++ b/api_docs/kbn_language_documentation_popover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover
title: "@kbn/language-documentation-popover"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/language-documentation-popover plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover']
---
import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json';
diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx
index 01e46ee4e74fa..33eb84335021e 100644
--- a/api_docs/kbn_lens_embeddable_utils.mdx
+++ b/api_docs/kbn_lens_embeddable_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils
title: "@kbn/lens-embeddable-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/lens-embeddable-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils']
---
import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json';
diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx
index c3a04c287f084..3b63f9c25cbfc 100644
--- a/api_docs/kbn_lens_formula_docs.mdx
+++ b/api_docs/kbn_lens_formula_docs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs
title: "@kbn/lens-formula-docs"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/lens-formula-docs plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs']
---
import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json';
diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx
index 143fef1311596..b287a4db3e44b 100644
--- a/api_docs/kbn_logging.mdx
+++ b/api_docs/kbn_logging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging
title: "@kbn/logging"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/logging plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging']
---
import kbnLoggingObj from './kbn_logging.devdocs.json';
diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx
index 1a737fd9722ee..8ef0cac7e7aad 100644
--- a/api_docs/kbn_logging_mocks.mdx
+++ b/api_docs/kbn_logging_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks
title: "@kbn/logging-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/logging-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks']
---
import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json';
diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx
index abcad6f0557cc..5449d0c47c8de 100644
--- a/api_docs/kbn_managed_content_badge.mdx
+++ b/api_docs/kbn_managed_content_badge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge
title: "@kbn/managed-content-badge"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/managed-content-badge plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge']
---
import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json';
diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx
index e1adf84eb942a..7fad2d0fcb710 100644
--- a/api_docs/kbn_managed_vscode_config.mdx
+++ b/api_docs/kbn_managed_vscode_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config
title: "@kbn/managed-vscode-config"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/managed-vscode-config plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config']
---
import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json';
diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx
index 6a265e32c4a24..57dd266a04956 100644
--- a/api_docs/kbn_management_cards_navigation.mdx
+++ b/api_docs/kbn_management_cards_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation
title: "@kbn/management-cards-navigation"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/management-cards-navigation plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation']
---
import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json';
diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx
index 70e4f59cafd9e..fbb9c577d664a 100644
--- a/api_docs/kbn_management_settings_application.mdx
+++ b/api_docs/kbn_management_settings_application.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application
title: "@kbn/management-settings-application"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/management-settings-application plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application']
---
import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx
index 1873a65717f03..7540217ffda57 100644
--- a/api_docs/kbn_management_settings_components_field_category.mdx
+++ b/api_docs/kbn_management_settings_components_field_category.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category
title: "@kbn/management-settings-components-field-category"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/management-settings-components-field-category plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category']
---
import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx
index e631f888bfb9f..abf88fa1625ed 100644
--- a/api_docs/kbn_management_settings_components_field_input.mdx
+++ b/api_docs/kbn_management_settings_components_field_input.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input
title: "@kbn/management-settings-components-field-input"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/management-settings-components-field-input plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input']
---
import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx
index 8599f3b0f40b6..9a491dce460a0 100644
--- a/api_docs/kbn_management_settings_components_field_row.mdx
+++ b/api_docs/kbn_management_settings_components_field_row.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row
title: "@kbn/management-settings-components-field-row"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/management-settings-components-field-row plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row']
---
import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx
index c3bf7d586b5dc..7b12b7bc0819d 100644
--- a/api_docs/kbn_management_settings_components_form.mdx
+++ b/api_docs/kbn_management_settings_components_form.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form
title: "@kbn/management-settings-components-form"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/management-settings-components-form plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form']
---
import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json';
diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx
index 5f3c6ea964b00..d9b89900f7155 100644
--- a/api_docs/kbn_management_settings_field_definition.mdx
+++ b/api_docs/kbn_management_settings_field_definition.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition
title: "@kbn/management-settings-field-definition"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/management-settings-field-definition plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition']
---
import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json';
diff --git a/api_docs/kbn_management_settings_ids.devdocs.json b/api_docs/kbn_management_settings_ids.devdocs.json
index 88b1e4ed9b9c8..34d869a82f860 100644
--- a/api_docs/kbn_management_settings_ids.devdocs.json
+++ b/api_docs/kbn_management_settings_ids.devdocs.json
@@ -1567,6 +1567,23 @@
"trackAdoption": false,
"initialIsOpen": false
},
+ {
+ "parentPluginId": "@kbn/management-settings-ids",
+ "id": "def-common.SECURITY_SOLUTION_ENABLE_ASSET_CRITICALITY_SETTING",
+ "type": "string",
+ "tags": [],
+ "label": "SECURITY_SOLUTION_ENABLE_ASSET_CRITICALITY_SETTING",
+ "description": [
+ "This Kibana Advanced Setting allows users to enable/disable the Asset Criticality feature"
+ ],
+ "signature": [
+ "\"securitySolution:enableAssetCriticality\""
+ ],
+ "path": "packages/kbn-management/settings/setting_ids/index.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "initialIsOpen": false
+ },
{
"parentPluginId": "@kbn/management-settings-ids",
"id": "def-common.SECURITY_SOLUTION_ENABLE_CCS_WARNING_ID",
diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx
index 14f5fbdbb0791..37410c0f73113 100644
--- a/api_docs/kbn_management_settings_ids.mdx
+++ b/api_docs/kbn_management_settings_ids.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids
title: "@kbn/management-settings-ids"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/management-settings-ids plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids']
---
import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux @elastic/platform-deployment-management](https:
| Public API count | Any count | Items lacking comments | Missing exports |
|-------------------|-----------|------------------------|-----------------|
-| 134 | 0 | 132 | 0 |
+| 135 | 0 | 132 | 0 |
## Common
diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx
index bf29b2ab8259a..44583469f92a4 100644
--- a/api_docs/kbn_management_settings_section_registry.mdx
+++ b/api_docs/kbn_management_settings_section_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry
title: "@kbn/management-settings-section-registry"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/management-settings-section-registry plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry']
---
import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json';
diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx
index d2a9644930b2e..dcf2c784188b0 100644
--- a/api_docs/kbn_management_settings_types.mdx
+++ b/api_docs/kbn_management_settings_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types
title: "@kbn/management-settings-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/management-settings-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types']
---
import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json';
diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx
index ce9de47412497..ac2975f93ee08 100644
--- a/api_docs/kbn_management_settings_utilities.mdx
+++ b/api_docs/kbn_management_settings_utilities.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities
title: "@kbn/management-settings-utilities"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/management-settings-utilities plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities']
---
import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json';
diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx
index 81114996229d7..b69c5e19a5281 100644
--- a/api_docs/kbn_management_storybook_config.mdx
+++ b/api_docs/kbn_management_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config
title: "@kbn/management-storybook-config"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/management-storybook-config plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config']
---
import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx
index bac9951cdd1f7..201825c38ed62 100644
--- a/api_docs/kbn_mapbox_gl.mdx
+++ b/api_docs/kbn_mapbox_gl.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl
title: "@kbn/mapbox-gl"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/mapbox-gl plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl']
---
import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json';
diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx
index 780db309ff0c0..62076a6b05747 100644
--- a/api_docs/kbn_maps_vector_tile_utils.mdx
+++ b/api_docs/kbn_maps_vector_tile_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils
title: "@kbn/maps-vector-tile-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/maps-vector-tile-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils']
---
import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx
index cee2f51f3a1f8..67d359b649729 100644
--- a/api_docs/kbn_ml_agg_utils.mdx
+++ b/api_docs/kbn_ml_agg_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils
title: "@kbn/ml-agg-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-agg-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils']
---
import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx
index 301e7b871c2bb..3e2c48930ae39 100644
--- a/api_docs/kbn_ml_anomaly_utils.mdx
+++ b/api_docs/kbn_ml_anomaly_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils
title: "@kbn/ml-anomaly-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-anomaly-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils']
---
import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx
index 8169ddf3b98af..adf1340e51676 100644
--- a/api_docs/kbn_ml_cancellable_search.mdx
+++ b/api_docs/kbn_ml_cancellable_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search
title: "@kbn/ml-cancellable-search"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-cancellable-search plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search']
---
import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json';
diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx
index 7a629ac7c293d..0ee7711644f0a 100644
--- a/api_docs/kbn_ml_category_validator.mdx
+++ b/api_docs/kbn_ml_category_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator
title: "@kbn/ml-category-validator"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-category-validator plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator']
---
import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json';
diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx
index 1b18769161822..1c6d11f07bbc1 100644
--- a/api_docs/kbn_ml_chi2test.mdx
+++ b/api_docs/kbn_ml_chi2test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test
title: "@kbn/ml-chi2test"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-chi2test plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test']
---
import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json';
diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
index bc251e942f943..9f1583639871f 100644
--- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx
+++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils
title: "@kbn/ml-data-frame-analytics-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-data-frame-analytics-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils']
---
import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx
index b258a9fa4d26e..b8f10c3453293 100644
--- a/api_docs/kbn_ml_data_grid.mdx
+++ b/api_docs/kbn_ml_data_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid
title: "@kbn/ml-data-grid"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-data-grid plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid']
---
import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json';
diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx
index 3ff1bf3d39960..b0099c7e5f466 100644
--- a/api_docs/kbn_ml_date_picker.mdx
+++ b/api_docs/kbn_ml_date_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker
title: "@kbn/ml-date-picker"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-date-picker plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker']
---
import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json';
diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx
index c772419bb3813..5295cb0221a5c 100644
--- a/api_docs/kbn_ml_date_utils.mdx
+++ b/api_docs/kbn_ml_date_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils
title: "@kbn/ml-date-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-date-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils']
---
import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx
index ddce3387051f7..336e3de0c1ab7 100644
--- a/api_docs/kbn_ml_error_utils.mdx
+++ b/api_docs/kbn_ml_error_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils
title: "@kbn/ml-error-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-error-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils']
---
import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx
index b36c969bd24ce..d9730090feac3 100644
--- a/api_docs/kbn_ml_in_memory_table.mdx
+++ b/api_docs/kbn_ml_in_memory_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table
title: "@kbn/ml-in-memory-table"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-in-memory-table plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table']
---
import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json';
diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx
index 570af20f9546e..3d9cb6a0dccd6 100644
--- a/api_docs/kbn_ml_is_defined.mdx
+++ b/api_docs/kbn_ml_is_defined.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined
title: "@kbn/ml-is-defined"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-is-defined plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined']
---
import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json';
diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx
index de1a96623b5ff..d2a1f33330a40 100644
--- a/api_docs/kbn_ml_is_populated_object.mdx
+++ b/api_docs/kbn_ml_is_populated_object.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object
title: "@kbn/ml-is-populated-object"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-is-populated-object plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object']
---
import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json';
diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx
index 3ad54b6ee3c64..361b047b9e02d 100644
--- a/api_docs/kbn_ml_kibana_theme.mdx
+++ b/api_docs/kbn_ml_kibana_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme
title: "@kbn/ml-kibana-theme"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-kibana-theme plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme']
---
import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json';
diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx
index d026e9f692962..dc9e3e86f8dda 100644
--- a/api_docs/kbn_ml_local_storage.mdx
+++ b/api_docs/kbn_ml_local_storage.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage
title: "@kbn/ml-local-storage"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-local-storage plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage']
---
import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json';
diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx
index 8964f624e0001..fea154bc766f2 100644
--- a/api_docs/kbn_ml_nested_property.mdx
+++ b/api_docs/kbn_ml_nested_property.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property
title: "@kbn/ml-nested-property"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-nested-property plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property']
---
import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json';
diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx
index ba92df63ec931..df1c41ee1a8f3 100644
--- a/api_docs/kbn_ml_number_utils.mdx
+++ b/api_docs/kbn_ml_number_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils
title: "@kbn/ml-number-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-number-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils']
---
import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx
index cee09bf974c6d..cd33026e67cfc 100644
--- a/api_docs/kbn_ml_query_utils.mdx
+++ b/api_docs/kbn_ml_query_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils
title: "@kbn/ml-query-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-query-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils']
---
import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx
index 0cbd45d0d747b..2ff124bf5f97e 100644
--- a/api_docs/kbn_ml_random_sampler_utils.mdx
+++ b/api_docs/kbn_ml_random_sampler_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils
title: "@kbn/ml-random-sampler-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-random-sampler-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils']
---
import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx
index 2e0ae4315c456..5d42171e5c1e8 100644
--- a/api_docs/kbn_ml_route_utils.mdx
+++ b/api_docs/kbn_ml_route_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils
title: "@kbn/ml-route-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-route-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils']
---
import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx
index 147ee1e2286e9..83b7733515ebb 100644
--- a/api_docs/kbn_ml_runtime_field_utils.mdx
+++ b/api_docs/kbn_ml_runtime_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils
title: "@kbn/ml-runtime-field-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-runtime-field-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils']
---
import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx
index df4e0e53e68c0..9e3bf5ec1c1f5 100644
--- a/api_docs/kbn_ml_string_hash.mdx
+++ b/api_docs/kbn_ml_string_hash.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash
title: "@kbn/ml-string-hash"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-string-hash plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash']
---
import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json';
diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx
index da31f994dfd5f..c8f3350e9d321 100644
--- a/api_docs/kbn_ml_trained_models_utils.mdx
+++ b/api_docs/kbn_ml_trained_models_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils
title: "@kbn/ml-trained-models-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-trained-models-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils']
---
import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx
index e0039aa9c2a0d..4e3a6c3a437cc 100644
--- a/api_docs/kbn_ml_ui_actions.mdx
+++ b/api_docs/kbn_ml_ui_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions
title: "@kbn/ml-ui-actions"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-ui-actions plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions']
---
import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json';
diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx
index 06ff66d16cc22..8a5f1d4f8a3c4 100644
--- a/api_docs/kbn_ml_url_state.mdx
+++ b/api_docs/kbn_ml_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state
title: "@kbn/ml-url-state"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ml-url-state plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state']
---
import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json';
diff --git a/api_docs/kbn_mock_idp_utils.mdx b/api_docs/kbn_mock_idp_utils.mdx
index 350879f89a3e1..1e4728758a6a8 100644
--- a/api_docs/kbn_mock_idp_utils.mdx
+++ b/api_docs/kbn_mock_idp_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mock-idp-utils
title: "@kbn/mock-idp-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/mock-idp-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils']
---
import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json';
diff --git a/api_docs/kbn_monaco.devdocs.json b/api_docs/kbn_monaco.devdocs.json
index 0b76ee4395f47..e3ab9d27a3d3f 100644
--- a/api_docs/kbn_monaco.devdocs.json
+++ b/api_docs/kbn_monaco.devdocs.json
@@ -1079,6 +1079,21 @@
],
"enums": [],
"misc": [
+ {
+ "parentPluginId": "@kbn/monaco",
+ "id": "def-common.CONSOLE_LANG_ID",
+ "type": "string",
+ "tags": [],
+ "label": "CONSOLE_LANG_ID",
+ "description": [],
+ "signature": [
+ "\"console\""
+ ],
+ "path": "packages/kbn-monaco/src/console/constants.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "initialIsOpen": false
+ },
{
"parentPluginId": "@kbn/monaco",
"id": "def-common.ESQL_LANG_ID",
diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx
index 09f5ee2600b8b..9a09f0c28e27e 100644
--- a/api_docs/kbn_monaco.mdx
+++ b/api_docs/kbn_monaco.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco
title: "@kbn/monaco"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/monaco plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco']
---
import kbnMonacoObj from './kbn_monaco.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh
| Public API count | Any count | Items lacking comments | Missing exports |
|-------------------|-----------|------------------------|-----------------|
-| 105 | 0 | 105 | 2 |
+| 106 | 0 | 106 | 2 |
## Common
diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx
index 316a63022248b..2478d79155322 100644
--- a/api_docs/kbn_object_versioning.mdx
+++ b/api_docs/kbn_object_versioning.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning
title: "@kbn/object-versioning"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/object-versioning plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning']
---
import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json';
diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx
index 6270785d68ef8..a68b59b791045 100644
--- a/api_docs/kbn_observability_alert_details.mdx
+++ b/api_docs/kbn_observability_alert_details.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details
title: "@kbn/observability-alert-details"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/observability-alert-details plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details']
---
import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json';
diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx
index f6873cf8e4dfc..4d5692a854f11 100644
--- a/api_docs/kbn_observability_alerting_test_data.mdx
+++ b/api_docs/kbn_observability_alerting_test_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data
title: "@kbn/observability-alerting-test-data"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/observability-alerting-test-data plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data']
---
import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json';
diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx
index 4e383e5358c1f..0a536a1ea6040 100644
--- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx
+++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util
title: "@kbn/observability-get-padded-alert-time-range-util"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util']
---
import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json';
diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx
index 5a102362e7de0..71b7081290e2c 100644
--- a/api_docs/kbn_openapi_bundler.mdx
+++ b/api_docs/kbn_openapi_bundler.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler
title: "@kbn/openapi-bundler"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/openapi-bundler plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler']
---
import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json';
diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx
index ddf20dc38cbd4..f204b54dd8a5c 100644
--- a/api_docs/kbn_openapi_generator.mdx
+++ b/api_docs/kbn_openapi_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator
title: "@kbn/openapi-generator"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/openapi-generator plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator']
---
import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json';
diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx
index 2da61c10d3e16..2af7cfcd7ca05 100644
--- a/api_docs/kbn_optimizer.mdx
+++ b/api_docs/kbn_optimizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer
title: "@kbn/optimizer"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/optimizer plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer']
---
import kbnOptimizerObj from './kbn_optimizer.devdocs.json';
diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx
index e8ddef28a242b..ccd79fc82de89 100644
--- a/api_docs/kbn_optimizer_webpack_helpers.mdx
+++ b/api_docs/kbn_optimizer_webpack_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers
title: "@kbn/optimizer-webpack-helpers"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/optimizer-webpack-helpers plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers']
---
import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json';
diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx
index 27051473f18fa..6ba3527f56510 100644
--- a/api_docs/kbn_osquery_io_ts_types.mdx
+++ b/api_docs/kbn_osquery_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types
title: "@kbn/osquery-io-ts-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/osquery-io-ts-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types']
---
import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx
index 570b77af826e6..78c808bcee52a 100644
--- a/api_docs/kbn_panel_loader.mdx
+++ b/api_docs/kbn_panel_loader.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader
title: "@kbn/panel-loader"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/panel-loader plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader']
---
import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json';
diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx
index 10ff9eefd9a83..53f54cb1b2b55 100644
--- a/api_docs/kbn_performance_testing_dataset_extractor.mdx
+++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor
title: "@kbn/performance-testing-dataset-extractor"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/performance-testing-dataset-extractor plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor']
---
import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json';
diff --git a/api_docs/kbn_plugin_check.mdx b/api_docs/kbn_plugin_check.mdx
index a96f23236f8b3..cb6749f7b8bb4 100644
--- a/api_docs/kbn_plugin_check.mdx
+++ b/api_docs/kbn_plugin_check.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check
title: "@kbn/plugin-check"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/plugin-check plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check']
---
import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json';
diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx
index 2baf56df696b9..f72ebbbd9acd0 100644
--- a/api_docs/kbn_plugin_generator.mdx
+++ b/api_docs/kbn_plugin_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator
title: "@kbn/plugin-generator"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/plugin-generator plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator']
---
import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json';
diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx
index 27596894777c5..a13ef4106e040 100644
--- a/api_docs/kbn_plugin_helpers.mdx
+++ b/api_docs/kbn_plugin_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers
title: "@kbn/plugin-helpers"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/plugin-helpers plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers']
---
import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json';
diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx
index c74e3c36aead4..3b17d3617fd00 100644
--- a/api_docs/kbn_presentation_containers.mdx
+++ b/api_docs/kbn_presentation_containers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers
title: "@kbn/presentation-containers"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/presentation-containers plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers']
---
import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json';
diff --git a/api_docs/kbn_presentation_library.mdx b/api_docs/kbn_presentation_library.mdx
index aee063b05ad99..a9b38a1992503 100644
--- a/api_docs/kbn_presentation_library.mdx
+++ b/api_docs/kbn_presentation_library.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-library
title: "@kbn/presentation-library"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/presentation-library plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-library']
---
import kbnPresentationLibraryObj from './kbn_presentation_library.devdocs.json';
diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx
index b2cba6c51ac3b..207513f8872dc 100644
--- a/api_docs/kbn_presentation_publishing.mdx
+++ b/api_docs/kbn_presentation_publishing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing
title: "@kbn/presentation-publishing"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/presentation-publishing plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing']
---
import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json';
diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx
index 85648faeaffe7..fe45c61749282 100644
--- a/api_docs/kbn_profiling_utils.mdx
+++ b/api_docs/kbn_profiling_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils
title: "@kbn/profiling-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/profiling-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils']
---
import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json';
diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx
index f03415dc01ba7..b391041a9da2e 100644
--- a/api_docs/kbn_random_sampling.mdx
+++ b/api_docs/kbn_random_sampling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling
title: "@kbn/random-sampling"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/random-sampling plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling']
---
import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json';
diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx
index cbb02cf4e59ba..26dca4ccf268c 100644
--- a/api_docs/kbn_react_field.mdx
+++ b/api_docs/kbn_react_field.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field
title: "@kbn/react-field"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/react-field plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field']
---
import kbnReactFieldObj from './kbn_react_field.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx
index c7d35c10daabb..790d63425f009 100644
--- a/api_docs/kbn_react_kibana_context_common.mdx
+++ b/api_docs/kbn_react_kibana_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common
title: "@kbn/react-kibana-context-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/react-kibana-context-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common']
---
import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx
index 7aec9ef563396..823b20f9f3488 100644
--- a/api_docs/kbn_react_kibana_context_render.mdx
+++ b/api_docs/kbn_react_kibana_context_render.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render
title: "@kbn/react-kibana-context-render"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/react-kibana-context-render plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render']
---
import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx
index ef44c8a85029f..3525649eee279 100644
--- a/api_docs/kbn_react_kibana_context_root.mdx
+++ b/api_docs/kbn_react_kibana_context_root.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root
title: "@kbn/react-kibana-context-root"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/react-kibana-context-root plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root']
---
import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx
index 5c0a43c1fddf4..6c597be215e60 100644
--- a/api_docs/kbn_react_kibana_context_styled.mdx
+++ b/api_docs/kbn_react_kibana_context_styled.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled
title: "@kbn/react-kibana-context-styled"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/react-kibana-context-styled plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled']
---
import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx
index daeb515005474..b7ff44c0ac2b0 100644
--- a/api_docs/kbn_react_kibana_context_theme.mdx
+++ b/api_docs/kbn_react_kibana_context_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme
title: "@kbn/react-kibana-context-theme"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/react-kibana-context-theme plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme']
---
import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx
index 8b27b4d8c6840..334b9fe199e67 100644
--- a/api_docs/kbn_react_kibana_mount.mdx
+++ b/api_docs/kbn_react_kibana_mount.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount
title: "@kbn/react-kibana-mount"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/react-kibana-mount plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount']
---
import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json';
diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx
index ced58555ad2a4..1e4092fd9ced4 100644
--- a/api_docs/kbn_repo_file_maps.mdx
+++ b/api_docs/kbn_repo_file_maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps
title: "@kbn/repo-file-maps"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/repo-file-maps plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps']
---
import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json';
diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx
index 4eb20ee8ec64e..ee30d644f6366 100644
--- a/api_docs/kbn_repo_linter.mdx
+++ b/api_docs/kbn_repo_linter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter
title: "@kbn/repo-linter"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/repo-linter plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter']
---
import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json';
diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx
index 7732388ea6e9a..902ca43d4eaca 100644
--- a/api_docs/kbn_repo_path.mdx
+++ b/api_docs/kbn_repo_path.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path
title: "@kbn/repo-path"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/repo-path plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path']
---
import kbnRepoPathObj from './kbn_repo_path.devdocs.json';
diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx
index ece304ba06b7e..bcd77a382559e 100644
--- a/api_docs/kbn_repo_source_classifier.mdx
+++ b/api_docs/kbn_repo_source_classifier.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier
title: "@kbn/repo-source-classifier"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/repo-source-classifier plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier']
---
import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json';
diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx
index f658949cc58e6..2d66da60c333a 100644
--- a/api_docs/kbn_reporting_common.mdx
+++ b/api_docs/kbn_reporting_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common
title: "@kbn/reporting-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/reporting-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common']
---
import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json';
diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx
index 3e4d90ffc8516..c25a10bd389a1 100644
--- a/api_docs/kbn_reporting_export_types_csv.mdx
+++ b/api_docs/kbn_reporting_export_types_csv.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv
title: "@kbn/reporting-export-types-csv"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/reporting-export-types-csv plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv']
---
import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json';
diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx
index 12c031cbf383a..0ab421e047ddf 100644
--- a/api_docs/kbn_reporting_export_types_csv_common.mdx
+++ b/api_docs/kbn_reporting_export_types_csv_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common
title: "@kbn/reporting-export-types-csv-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/reporting-export-types-csv-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common']
---
import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json';
diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx
index 0f368f07bbcda..a7d687aa79b63 100644
--- a/api_docs/kbn_reporting_export_types_pdf.mdx
+++ b/api_docs/kbn_reporting_export_types_pdf.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf
title: "@kbn/reporting-export-types-pdf"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/reporting-export-types-pdf plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf']
---
import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json';
diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx
index 9445e21bb6dc8..fcb3c4217e8fb 100644
--- a/api_docs/kbn_reporting_export_types_pdf_common.mdx
+++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common
title: "@kbn/reporting-export-types-pdf-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/reporting-export-types-pdf-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common']
---
import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json';
diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx
index c917534a6ee72..5d46fa8d62a15 100644
--- a/api_docs/kbn_reporting_export_types_png.mdx
+++ b/api_docs/kbn_reporting_export_types_png.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png
title: "@kbn/reporting-export-types-png"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/reporting-export-types-png plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png']
---
import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json';
diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx
index 0018060e196d7..739d9fae4200a 100644
--- a/api_docs/kbn_reporting_export_types_png_common.mdx
+++ b/api_docs/kbn_reporting_export_types_png_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common
title: "@kbn/reporting-export-types-png-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/reporting-export-types-png-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common']
---
import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json';
diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx
index d8b663c989d11..092d37138f880 100644
--- a/api_docs/kbn_reporting_mocks_server.mdx
+++ b/api_docs/kbn_reporting_mocks_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server
title: "@kbn/reporting-mocks-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/reporting-mocks-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server']
---
import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json';
diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx
index 1cece9c8418d4..3280b30121a63 100644
--- a/api_docs/kbn_reporting_public.mdx
+++ b/api_docs/kbn_reporting_public.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public
title: "@kbn/reporting-public"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/reporting-public plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public']
---
import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json';
diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx
index eae04a0a35d3c..5e80064111797 100644
--- a/api_docs/kbn_reporting_server.mdx
+++ b/api_docs/kbn_reporting_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server
title: "@kbn/reporting-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/reporting-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server']
---
import kbnReportingServerObj from './kbn_reporting_server.devdocs.json';
diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx
index 330754a1bf764..88155fb334512 100644
--- a/api_docs/kbn_resizable_layout.mdx
+++ b/api_docs/kbn_resizable_layout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout
title: "@kbn/resizable-layout"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/resizable-layout plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout']
---
import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json';
diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx
index 2e8dfa4feebb5..d53b17f4ac43f 100644
--- a/api_docs/kbn_rison.mdx
+++ b/api_docs/kbn_rison.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison
title: "@kbn/rison"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/rison plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison']
---
import kbnRisonObj from './kbn_rison.devdocs.json';
diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx
index 2cfb7736c15d2..8f44bc2647825 100644
--- a/api_docs/kbn_router_utils.mdx
+++ b/api_docs/kbn_router_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils
title: "@kbn/router-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/router-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils']
---
import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json';
diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx
index 9e8587b921516..e7d4a06a26ae4 100644
--- a/api_docs/kbn_rrule.mdx
+++ b/api_docs/kbn_rrule.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule
title: "@kbn/rrule"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/rrule plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule']
---
import kbnRruleObj from './kbn_rrule.devdocs.json';
diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx
index fc08607c82d89..03297b61f435b 100644
--- a/api_docs/kbn_rule_data_utils.mdx
+++ b/api_docs/kbn_rule_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils
title: "@kbn/rule-data-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/rule-data-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils']
---
import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json';
diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx
index 4617d6f1768f5..9a1a976bf0dfa 100644
--- a/api_docs/kbn_saved_objects_settings.mdx
+++ b/api_docs/kbn_saved_objects_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings
title: "@kbn/saved-objects-settings"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/saved-objects-settings plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings']
---
import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json';
diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx
index 63fdd521b2e6c..1261afb510b1a 100644
--- a/api_docs/kbn_search_api_panels.mdx
+++ b/api_docs/kbn_search_api_panels.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels
title: "@kbn/search-api-panels"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/search-api-panels plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels']
---
import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json';
diff --git a/api_docs/kbn_search_connectors.devdocs.json b/api_docs/kbn_search_connectors.devdocs.json
index 1b7afab1f9898..a2bc6cd33e3c5 100644
--- a/api_docs/kbn_search_connectors.devdocs.json
+++ b/api_docs/kbn_search_connectors.devdocs.json
@@ -693,13 +693,7 @@
"text": "ElasticsearchClient"
},
", id: string) => Promise<",
- {
- "pluginId": "@kbn/search-connectors",
- "scope": "common",
- "docId": "kibKbnSearchConnectorsPluginApi",
- "section": "def-common.ConnectorsAPIUpdateResponse",
- "text": "ConnectorsAPIUpdateResponse"
- },
+ "Result",
">"
],
"path": "packages/kbn-search-connectors/lib/delete_connector_secret.ts",
@@ -2047,7 +2041,7 @@
"text": "Connector"
},
", \"name\" | \"description\">>) => Promise<",
- "WriteResponseBase",
+ "Result",
">"
],
"path": "packages/kbn-search-connectors/lib/update_connector_name_and_description.ts",
@@ -2142,13 +2136,7 @@
"text": "SchedulingConfiguraton"
},
") => Promise<",
- {
- "pluginId": "@kbn/search-connectors",
- "scope": "common",
- "docId": "kibKbnSearchConnectorsPluginApi",
- "section": "def-common.ConnectorsAPIUpdateResponse",
- "text": "ConnectorsAPIUpdateResponse"
- },
+ "Result",
">"
],
"path": "packages/kbn-search-connectors/lib/update_connector_scheduling.ts",
@@ -2233,13 +2221,7 @@
"text": "ElasticsearchClient"
},
", value: string, secretId: string) => Promise<",
- {
- "pluginId": "@kbn/search-connectors",
- "scope": "common",
- "docId": "kibKbnSearchConnectorsPluginApi",
- "section": "def-common.ConnectorsAPIUpdateResponse",
- "text": "ConnectorsAPIUpdateResponse"
- },
+ "Result",
">"
],
"path": "packages/kbn-search-connectors/lib/update_connector_secret.ts",
@@ -3765,34 +3747,6 @@
],
"initialIsOpen": false
},
- {
- "parentPluginId": "@kbn/search-connectors",
- "id": "def-common.ConnectorsAPIUpdateResponse",
- "type": "Interface",
- "tags": [],
- "label": "ConnectorsAPIUpdateResponse",
- "description": [],
- "path": "packages/kbn-search-connectors/types/connectors_api.ts",
- "deprecated": false,
- "trackAdoption": false,
- "children": [
- {
- "parentPluginId": "@kbn/search-connectors",
- "id": "def-common.ConnectorsAPIUpdateResponse.result",
- "type": "Enum",
- "tags": [],
- "label": "result",
- "description": [],
- "signature": [
- "Result"
- ],
- "path": "packages/kbn-search-connectors/types/connectors_api.ts",
- "deprecated": false,
- "trackAdoption": false
- }
- ],
- "initialIsOpen": false
- },
{
"parentPluginId": "@kbn/search-connectors",
"id": "def-common.ConnectorScheduling",
diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx
index b37d448a69cce..e6f170cbf186e 100644
--- a/api_docs/kbn_search_connectors.mdx
+++ b/api_docs/kbn_search_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors
title: "@kbn/search-connectors"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/search-connectors plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors']
---
import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/te
| Public API count | Any count | Items lacking comments | Missing exports |
|-------------------|-----------|------------------------|-----------------|
-| 3084 | 0 | 3084 | 0 |
+| 3082 | 0 | 3082 | 0 |
## Common
diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx
index 4180f3c465017..2d9775764f58e 100644
--- a/api_docs/kbn_search_errors.mdx
+++ b/api_docs/kbn_search_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors
title: "@kbn/search-errors"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/search-errors plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors']
---
import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json';
diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx
index 322e25f946884..c69a95311ac9a 100644
--- a/api_docs/kbn_search_index_documents.mdx
+++ b/api_docs/kbn_search_index_documents.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents
title: "@kbn/search-index-documents"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/search-index-documents plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents']
---
import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json';
diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx
index f34cabda29cfc..b929a79404a0a 100644
--- a/api_docs/kbn_search_response_warnings.mdx
+++ b/api_docs/kbn_search_response_warnings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings
title: "@kbn/search-response-warnings"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/search-response-warnings plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings']
---
import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json';
diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx
index e32c40b845b35..13d39bbc86933 100644
--- a/api_docs/kbn_security_hardening.mdx
+++ b/api_docs/kbn_security_hardening.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening
title: "@kbn/security-hardening"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/security-hardening plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening']
---
import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json';
diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx
index dc2960dbf6db0..9edb791aaa952 100644
--- a/api_docs/kbn_security_plugin_types_common.mdx
+++ b/api_docs/kbn_security_plugin_types_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common
title: "@kbn/security-plugin-types-common"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/security-plugin-types-common plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common']
---
import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json';
diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx
index f776654ad0afc..0af709272e7d1 100644
--- a/api_docs/kbn_security_plugin_types_public.mdx
+++ b/api_docs/kbn_security_plugin_types_public.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public
title: "@kbn/security-plugin-types-public"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/security-plugin-types-public plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public']
---
import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json';
diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx
index 4aa34dcaf35d8..e79aa6ca3b83f 100644
--- a/api_docs/kbn_security_plugin_types_server.mdx
+++ b/api_docs/kbn_security_plugin_types_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server
title: "@kbn/security-plugin-types-server"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/security-plugin-types-server plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server']
---
import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json';
diff --git a/api_docs/kbn_security_solution_features.devdocs.json b/api_docs/kbn_security_solution_features.devdocs.json
index ff07b6dd43ca4..a90a3ec230623 100644
--- a/api_docs/kbn_security_solution_features.devdocs.json
+++ b/api_docs/kbn_security_solution_features.devdocs.json
@@ -22,18 +22,18 @@
"interfaces": [
{
"parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.AppFeatureParams",
+ "id": "def-common.ProductFeatureParams",
"type": "Interface",
"tags": [],
- "label": "AppFeatureParams",
+ "label": "ProductFeatureParams",
"description": [],
"signature": [
{
"pluginId": "@kbn/security-solution-features",
"scope": "common",
"docId": "kibKbnSecuritySolutionFeaturesPluginApi",
- "section": "def-common.AppFeatureParams",
- "text": "AppFeatureParams"
+ "section": "def-common.ProductFeatureParams",
+ "text": "ProductFeatureParams"
},
""
],
@@ -43,7 +43,7 @@
"children": [
{
"parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.AppFeatureParams.baseKibanaFeature",
+ "id": "def-common.ProductFeatureParams.baseKibanaFeature",
"type": "Object",
"tags": [],
"label": "baseKibanaFeature",
@@ -83,7 +83,7 @@
},
{
"parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.AppFeatureParams.baseKibanaSubFeatureIds",
+ "id": "def-common.ProductFeatureParams.baseKibanaSubFeatureIds",
"type": "Array",
"tags": [],
"label": "baseKibanaSubFeatureIds",
@@ -97,7 +97,7 @@
},
{
"parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.AppFeatureParams.subFeaturesMap",
+ "id": "def-common.ProductFeatureParams.subFeaturesMap",
"type": "Object",
"tags": [],
"label": "subFeaturesMap",
@@ -125,18 +125,82 @@
"misc": [
{
"parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.AppFeatureKeys",
+ "id": "def-common.AppSubFeaturesMap",
+ "type": "Type",
+ "tags": [],
+ "label": "AppSubFeaturesMap",
+ "description": [],
+ "signature": [
+ "Map"
+ ],
+ "path": "x-pack/packages/security-solution/features/src/types.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "initialIsOpen": false
+ },
+ {
+ "parentPluginId": "@kbn/security-solution-features",
+ "id": "def-common.BaseKibanaFeatureConfig",
+ "type": "Type",
+ "tags": [],
+ "label": "BaseKibanaFeatureConfig",
+ "description": [],
+ "signature": [
+ "{ id: string; order?: number | undefined; name: string; alerting?: readonly string[] | undefined; cases?: readonly string[] | undefined; category: ",
+ {
+ "pluginId": "@kbn/core-application-common",
+ "scope": "common",
+ "docId": "kibKbnCoreApplicationCommonPluginApi",
+ "section": "def-common.AppCategory",
+ "text": "AppCategory"
+ },
+ "; description?: string | undefined; management?: { [sectionId: string]: readonly string[]; } | undefined; privileges: { all: ",
+ {
+ "pluginId": "features",
+ "scope": "common",
+ "docId": "kibFeaturesPluginApi",
+ "section": "def-common.FeatureKibanaPrivileges",
+ "text": "FeatureKibanaPrivileges"
+ },
+ "; read: ",
+ {
+ "pluginId": "features",
+ "scope": "common",
+ "docId": "kibFeaturesPluginApi",
+ "section": "def-common.FeatureKibanaPrivileges",
+ "text": "FeatureKibanaPrivileges"
+ },
+ "; } | null; catalogue?: readonly string[] | undefined; excludeFromBasePrivileges?: boolean | undefined; minimumLicense?: \"basic\" | \"standard\" | \"gold\" | \"platinum\" | \"enterprise\" | \"trial\" | undefined; app: readonly string[]; privilegesTooltip?: string | undefined; reserved?: { description: string; privileges: readonly ",
+ "ReservedKibanaPrivilege",
+ "[]; } | undefined; }"
+ ],
+ "path": "x-pack/packages/security-solution/features/src/types.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "initialIsOpen": false
+ },
+ {
+ "parentPluginId": "@kbn/security-solution-features",
+ "id": "def-common.ProductFeatureKeys",
"type": "Type",
"tags": [],
- "label": "AppFeatureKeys",
+ "label": "ProductFeatureKeys",
"description": [],
"signature": [
{
"pluginId": "@kbn/security-solution-features",
"scope": "common",
"docId": "kibKbnSecuritySolutionFeaturesPluginApi",
- "section": "def-common.AppFeatureKeyType",
- "text": "AppFeatureKeyType"
+ "section": "def-common.ProductFeatureKeyType",
+ "text": "ProductFeatureKeyType"
},
"[]"
],
@@ -147,29 +211,29 @@
},
{
"parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.AppFeatureKeyType",
+ "id": "def-common.ProductFeatureKeyType",
"type": "Type",
"tags": [],
- "label": "AppFeatureKeyType",
+ "label": "ProductFeatureKeyType",
"description": [],
"signature": [
- "AppFeatureSecurityKey",
+ "ProductFeatureSecurityKey",
" | ",
- "AppFeatureCasesKey",
+ "ProductFeatureCasesKey",
" | ",
- "AppFeatureAssistantKey"
+ "ProductFeatureAssistantKey"
],
- "path": "x-pack/packages/security-solution/features/src/app_features_keys.ts",
+ "path": "x-pack/packages/security-solution/features/src/product_features_keys.ts",
"deprecated": false,
"trackAdoption": false,
"initialIsOpen": false
},
{
"parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.AppFeatureKibanaConfig",
+ "id": "def-common.ProductFeatureKibanaConfig",
"type": "Type",
"tags": [],
- "label": "AppFeatureKibanaConfig",
+ "label": "ProductFeatureKibanaConfig",
"description": [],
"signature": [
{
@@ -212,21 +276,21 @@
},
{
"parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.AppFeaturesAssistantConfig",
+ "id": "def-common.ProductFeaturesAssistantConfig",
"type": "Type",
"tags": [],
- "label": "AppFeaturesAssistantConfig",
+ "label": "ProductFeaturesAssistantConfig",
"description": [],
"signature": [
"Map<",
- "AppFeatureAssistantKey",
+ "ProductFeatureAssistantKey",
", ",
{
"pluginId": "@kbn/security-solution-features",
"scope": "common",
"docId": "kibKbnSecuritySolutionFeaturesPluginApi",
- "section": "def-common.AppFeatureKibanaConfig",
- "text": "AppFeatureKibanaConfig"
+ "section": "def-common.ProductFeatureKibanaConfig",
+ "text": "ProductFeatureKibanaConfig"
},
"<",
"AssistantSubFeatureId",
@@ -239,21 +303,21 @@
},
{
"parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.AppFeaturesCasesConfig",
+ "id": "def-common.ProductFeaturesCasesConfig",
"type": "Type",
"tags": [],
- "label": "AppFeaturesCasesConfig",
+ "label": "ProductFeaturesCasesConfig",
"description": [],
"signature": [
"Map<",
- "AppFeatureCasesKey",
+ "ProductFeatureCasesKey",
", ",
{
"pluginId": "@kbn/security-solution-features",
"scope": "common",
"docId": "kibKbnSecuritySolutionFeaturesPluginApi",
- "section": "def-common.AppFeatureKibanaConfig",
- "text": "AppFeatureKibanaConfig"
+ "section": "def-common.ProductFeatureKibanaConfig",
+ "text": "ProductFeatureKibanaConfig"
},
"<",
"CasesSubFeatureId",
@@ -266,10 +330,10 @@
},
{
"parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.AppFeaturesConfig",
+ "id": "def-common.ProductFeaturesConfig",
"type": "Type",
"tags": [],
- "label": "AppFeaturesConfig",
+ "label": "ProductFeaturesConfig",
"description": [],
"signature": [
"Map<",
@@ -277,16 +341,16 @@
"pluginId": "@kbn/security-solution-features",
"scope": "common",
"docId": "kibKbnSecuritySolutionFeaturesPluginApi",
- "section": "def-common.AppFeatureKeyType",
- "text": "AppFeatureKeyType"
+ "section": "def-common.ProductFeatureKeyType",
+ "text": "ProductFeatureKeyType"
},
", ",
{
"pluginId": "@kbn/security-solution-features",
"scope": "common",
"docId": "kibKbnSecuritySolutionFeaturesPluginApi",
- "section": "def-common.AppFeatureKibanaConfig",
- "text": "AppFeatureKibanaConfig"
+ "section": "def-common.ProductFeatureKibanaConfig",
+ "text": "ProductFeatureKibanaConfig"
},
">"
],
@@ -297,21 +361,21 @@
},
{
"parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.AppFeaturesSecurityConfig",
+ "id": "def-common.ProductFeaturesSecurityConfig",
"type": "Type",
"tags": [],
- "label": "AppFeaturesSecurityConfig",
+ "label": "ProductFeaturesSecurityConfig",
"description": [],
"signature": [
"Map<",
- "AppFeatureSecurityKey",
+ "ProductFeatureSecurityKey",
", ",
{
"pluginId": "@kbn/security-solution-features",
"scope": "common",
"docId": "kibKbnSecuritySolutionFeaturesPluginApi",
- "section": "def-common.AppFeatureKibanaConfig",
- "text": "AppFeatureKibanaConfig"
+ "section": "def-common.ProductFeatureKibanaConfig",
+ "text": "ProductFeatureKibanaConfig"
},
"<",
"SecuritySubFeatureId",
@@ -322,70 +386,6 @@
"trackAdoption": false,
"initialIsOpen": false
},
- {
- "parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.AppSubFeaturesMap",
- "type": "Type",
- "tags": [],
- "label": "AppSubFeaturesMap",
- "description": [],
- "signature": [
- "Map"
- ],
- "path": "x-pack/packages/security-solution/features/src/types.ts",
- "deprecated": false,
- "trackAdoption": false,
- "initialIsOpen": false
- },
- {
- "parentPluginId": "@kbn/security-solution-features",
- "id": "def-common.BaseKibanaFeatureConfig",
- "type": "Type",
- "tags": [],
- "label": "BaseKibanaFeatureConfig",
- "description": [],
- "signature": [
- "{ id: string; order?: number | undefined; name: string; alerting?: readonly string[] | undefined; cases?: readonly string[] | undefined; category: ",
- {
- "pluginId": "@kbn/core-application-common",
- "scope": "common",
- "docId": "kibKbnCoreApplicationCommonPluginApi",
- "section": "def-common.AppCategory",
- "text": "AppCategory"
- },
- "; description?: string | undefined; management?: { [sectionId: string]: readonly string[]; } | undefined; privileges: { all: ",
- {
- "pluginId": "features",
- "scope": "common",
- "docId": "kibFeaturesPluginApi",
- "section": "def-common.FeatureKibanaPrivileges",
- "text": "FeatureKibanaPrivileges"
- },
- "; read: ",
- {
- "pluginId": "features",
- "scope": "common",
- "docId": "kibFeaturesPluginApi",
- "section": "def-common.FeatureKibanaPrivileges",
- "text": "FeatureKibanaPrivileges"
- },
- "; } | null; catalogue?: readonly string[] | undefined; excludeFromBasePrivileges?: boolean | undefined; minimumLicense?: \"basic\" | \"standard\" | \"gold\" | \"platinum\" | \"enterprise\" | \"trial\" | undefined; app: readonly string[]; privilegesTooltip?: string | undefined; reserved?: { description: string; privileges: readonly ",
- "ReservedKibanaPrivilege",
- "[]; } | undefined; }"
- ],
- "path": "x-pack/packages/security-solution/features/src/types.ts",
- "deprecated": false,
- "trackAdoption": false,
- "initialIsOpen": false
- },
{
"parentPluginId": "@kbn/security-solution-features",
"id": "def-common.SubFeaturesPrivileges",
diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx
index 72ddff1cbb72d..2dbab671d083f 100644
--- a/api_docs/kbn_security_solution_features.mdx
+++ b/api_docs/kbn_security_solution_features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features
title: "@kbn/security-solution-features"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/security-solution-features plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features']
---
import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json';
diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx
index d39c687d89667..ec779fe9e2abf 100644
--- a/api_docs/kbn_security_solution_navigation.mdx
+++ b/api_docs/kbn_security_solution_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation
title: "@kbn/security-solution-navigation"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/security-solution-navigation plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation']
---
import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json';
diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx
index 120eae334e262..aaa68cc187fde 100644
--- a/api_docs/kbn_security_solution_side_nav.mdx
+++ b/api_docs/kbn_security_solution_side_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav
title: "@kbn/security-solution-side-nav"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/security-solution-side-nav plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav']
---
import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json';
diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx
index a6f1ac7491b9d..466b88b812218 100644
--- a/api_docs/kbn_security_solution_storybook_config.mdx
+++ b/api_docs/kbn_security_solution_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config
title: "@kbn/security-solution-storybook-config"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/security-solution-storybook-config plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config']
---
import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx
index a26975c7b664d..84a9d5566bc25 100644
--- a/api_docs/kbn_securitysolution_autocomplete.mdx
+++ b/api_docs/kbn_securitysolution_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete
title: "@kbn/securitysolution-autocomplete"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-autocomplete plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete']
---
import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx
index 55611dfff1ab2..5095364cb11b5 100644
--- a/api_docs/kbn_securitysolution_data_table.mdx
+++ b/api_docs/kbn_securitysolution_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table
title: "@kbn/securitysolution-data-table"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-data-table plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table']
---
import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx
index 323048d84e685..106ac6e6fc6a2 100644
--- a/api_docs/kbn_securitysolution_ecs.mdx
+++ b/api_docs/kbn_securitysolution_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs
title: "@kbn/securitysolution-ecs"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-ecs plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs']
---
import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx
index cdf75f7b7fb38..dfd08cce0cee9 100644
--- a/api_docs/kbn_securitysolution_es_utils.mdx
+++ b/api_docs/kbn_securitysolution_es_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils
title: "@kbn/securitysolution-es-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-es-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils']
---
import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx
index 72e4d3423bc49..fe6e9a0807c83 100644
--- a/api_docs/kbn_securitysolution_exception_list_components.mdx
+++ b/api_docs/kbn_securitysolution_exception_list_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components
title: "@kbn/securitysolution-exception-list-components"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-exception-list-components plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components']
---
import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx
index 5ba06f0d50087..3022583f1d294 100644
--- a/api_docs/kbn_securitysolution_grouping.mdx
+++ b/api_docs/kbn_securitysolution_grouping.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping
title: "@kbn/securitysolution-grouping"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-grouping plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping']
---
import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx
index eedbf308add1c..855cc6b6e8ab2 100644
--- a/api_docs/kbn_securitysolution_hook_utils.mdx
+++ b/api_docs/kbn_securitysolution_hook_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils
title: "@kbn/securitysolution-hook-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-hook-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils']
---
import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
index 570a55b709ce0..87f225478f553 100644
--- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types
title: "@kbn/securitysolution-io-ts-alerting-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types']
---
import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
index 8312305610257..6d8b170f2203c 100644
--- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types
title: "@kbn/securitysolution-io-ts-list-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-io-ts-list-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types']
---
import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx
index a5e9c59c35a8c..ce8784cb294da 100644
--- a/api_docs/kbn_securitysolution_io_ts_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types
title: "@kbn/securitysolution-io-ts-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-io-ts-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types']
---
import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx
index 2a82c41da5dc4..93c6fe273b746 100644
--- a/api_docs/kbn_securitysolution_io_ts_utils.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils
title: "@kbn/securitysolution-io-ts-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-io-ts-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils']
---
import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx
index ed41179a912c2..8686d24484359 100644
--- a/api_docs/kbn_securitysolution_list_api.mdx
+++ b/api_docs/kbn_securitysolution_list_api.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api
title: "@kbn/securitysolution-list-api"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-list-api plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api']
---
import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx
index 4bfe1f9cce92f..70b861b14538c 100644
--- a/api_docs/kbn_securitysolution_list_constants.mdx
+++ b/api_docs/kbn_securitysolution_list_constants.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants
title: "@kbn/securitysolution-list-constants"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-list-constants plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants']
---
import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx
index f5edda07ed1f3..afc4f370d204d 100644
--- a/api_docs/kbn_securitysolution_list_hooks.mdx
+++ b/api_docs/kbn_securitysolution_list_hooks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks
title: "@kbn/securitysolution-list-hooks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-list-hooks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks']
---
import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx
index 8dac14aa91765..c1269789d902a 100644
--- a/api_docs/kbn_securitysolution_list_utils.mdx
+++ b/api_docs/kbn_securitysolution_list_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils
title: "@kbn/securitysolution-list-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-list-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils']
---
import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx
index 9b3dfe33adce2..771f4e9f26a73 100644
--- a/api_docs/kbn_securitysolution_rules.mdx
+++ b/api_docs/kbn_securitysolution_rules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules
title: "@kbn/securitysolution-rules"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-rules plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules']
---
import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx
index a96ec83761854..af8916b2856e8 100644
--- a/api_docs/kbn_securitysolution_t_grid.mdx
+++ b/api_docs/kbn_securitysolution_t_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid
title: "@kbn/securitysolution-t-grid"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-t-grid plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid']
---
import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx
index 0c93f581d2064..0b5749c3b96ee 100644
--- a/api_docs/kbn_securitysolution_utils.mdx
+++ b/api_docs/kbn_securitysolution_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils
title: "@kbn/securitysolution-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/securitysolution-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils']
---
import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json';
diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx
index e8558d48fee90..8b9de3439d75e 100644
--- a/api_docs/kbn_server_http_tools.mdx
+++ b/api_docs/kbn_server_http_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools
title: "@kbn/server-http-tools"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/server-http-tools plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools']
---
import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json';
diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx
index 5ea5491c9dedd..35b4b8370d391 100644
--- a/api_docs/kbn_server_route_repository.mdx
+++ b/api_docs/kbn_server_route_repository.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository
title: "@kbn/server-route-repository"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/server-route-repository plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository']
---
import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json';
diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx
index 5fa37ece95e78..bf161d40fc47e 100644
--- a/api_docs/kbn_serverless_common_settings.mdx
+++ b/api_docs/kbn_serverless_common_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings
title: "@kbn/serverless-common-settings"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/serverless-common-settings plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings']
---
import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx
index 408aa43088b1b..58a0fc2f30587 100644
--- a/api_docs/kbn_serverless_observability_settings.mdx
+++ b/api_docs/kbn_serverless_observability_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings
title: "@kbn/serverless-observability-settings"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/serverless-observability-settings plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings']
---
import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx
index 201ed0304d49f..e161997b988fd 100644
--- a/api_docs/kbn_serverless_project_switcher.mdx
+++ b/api_docs/kbn_serverless_project_switcher.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher
title: "@kbn/serverless-project-switcher"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/serverless-project-switcher plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher']
---
import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json';
diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx
index 9c70808492cf8..53a39699e9371 100644
--- a/api_docs/kbn_serverless_search_settings.mdx
+++ b/api_docs/kbn_serverless_search_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings
title: "@kbn/serverless-search-settings"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/serverless-search-settings plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings']
---
import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx
index 55e2375dcfe41..3ca6b7fb09019 100644
--- a/api_docs/kbn_serverless_security_settings.mdx
+++ b/api_docs/kbn_serverless_security_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings
title: "@kbn/serverless-security-settings"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/serverless-security-settings plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings']
---
import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx
index 3c18a4b7b677f..be57f97ac1abc 100644
--- a/api_docs/kbn_serverless_storybook_config.mdx
+++ b/api_docs/kbn_serverless_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config
title: "@kbn/serverless-storybook-config"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/serverless-storybook-config plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config']
---
import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx
index 3443bbd8d9fff..1fad9bfa1846c 100644
--- a/api_docs/kbn_shared_svg.mdx
+++ b/api_docs/kbn_shared_svg.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg
title: "@kbn/shared-svg"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-svg plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg']
---
import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx
index 7ad9cee551ea2..bdfedb295acfd 100644
--- a/api_docs/kbn_shared_ux_avatar_solution.mdx
+++ b/api_docs/kbn_shared_ux_avatar_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution
title: "@kbn/shared-ux-avatar-solution"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-avatar-solution plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution']
---
import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
index a40e355471ac7..3e04e21bd64e8 100644
--- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
+++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen
title: "@kbn/shared-ux-button-exit-full-screen"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen']
---
import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx
index 7d712b564adc8..07b23302ff5af 100644
--- a/api_docs/kbn_shared_ux_button_toolbar.mdx
+++ b/api_docs/kbn_shared_ux_button_toolbar.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar
title: "@kbn/shared-ux-button-toolbar"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-button-toolbar plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar']
---
import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx
index b95efac768796..cd45691fd9312 100644
--- a/api_docs/kbn_shared_ux_card_no_data.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data
title: "@kbn/shared-ux-card-no-data"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-card-no-data plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data']
---
import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
index ae4884e7e9c87..c0cc4286a82dd 100644
--- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks
title: "@kbn/shared-ux-card-no-data-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks']
---
import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx
index 90296b04c2b25..6e3f4b6a50285 100644
--- a/api_docs/kbn_shared_ux_chrome_navigation.mdx
+++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation
title: "@kbn/shared-ux-chrome-navigation"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-chrome-navigation plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation']
---
import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx
index 3dfc615f01d9a..4008a62940bfe 100644
--- a/api_docs/kbn_shared_ux_error_boundary.mdx
+++ b/api_docs/kbn_shared_ux_error_boundary.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary
title: "@kbn/shared-ux-error-boundary"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-error-boundary plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary']
---
import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx
index 08c27e792dbfb..29be7a32a290d 100644
--- a/api_docs/kbn_shared_ux_file_context.mdx
+++ b/api_docs/kbn_shared_ux_file_context.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context
title: "@kbn/shared-ux-file-context"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-file-context plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context']
---
import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx
index 367fb56024b10..c93c06c44cddd 100644
--- a/api_docs/kbn_shared_ux_file_image.mdx
+++ b/api_docs/kbn_shared_ux_file_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image
title: "@kbn/shared-ux-file-image"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-file-image plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image']
---
import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx
index d9450dfd6c119..04d4cb9816daf 100644
--- a/api_docs/kbn_shared_ux_file_image_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks
title: "@kbn/shared-ux-file-image-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-file-image-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks']
---
import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx
index e901b24c6ee0b..c04f364b54506 100644
--- a/api_docs/kbn_shared_ux_file_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks
title: "@kbn/shared-ux-file-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-file-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks']
---
import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx
index 24195ee142ccc..ba9b9c47e7070 100644
--- a/api_docs/kbn_shared_ux_file_picker.mdx
+++ b/api_docs/kbn_shared_ux_file_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker
title: "@kbn/shared-ux-file-picker"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-file-picker plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker']
---
import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx
index 38817bfe32ef7..84d8e1ed42d69 100644
--- a/api_docs/kbn_shared_ux_file_types.mdx
+++ b/api_docs/kbn_shared_ux_file_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types
title: "@kbn/shared-ux-file-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-file-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types']
---
import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx
index 6e4bc3c88d8a1..04c10c2f0df86 100644
--- a/api_docs/kbn_shared_ux_file_upload.mdx
+++ b/api_docs/kbn_shared_ux_file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload
title: "@kbn/shared-ux-file-upload"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-file-upload plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload']
---
import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx
index 13aaf656b0ce3..cf5371758d945 100644
--- a/api_docs/kbn_shared_ux_file_util.mdx
+++ b/api_docs/kbn_shared_ux_file_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util
title: "@kbn/shared-ux-file-util"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-file-util plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util']
---
import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx
index f3daa3a3c02f9..43469cda6676e 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app
title: "@kbn/shared-ux-link-redirect-app"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-link-redirect-app plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app']
---
import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
index 5cd6f112a4d20..1eb8746c34306 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks
title: "@kbn/shared-ux-link-redirect-app-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks']
---
import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx
index 11bf524aba8c5..b9997627f7664 100644
--- a/api_docs/kbn_shared_ux_markdown.mdx
+++ b/api_docs/kbn_shared_ux_markdown.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown
title: "@kbn/shared-ux-markdown"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-markdown plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown']
---
import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx
index ae9540048805f..ea14294cb36de 100644
--- a/api_docs/kbn_shared_ux_markdown_mocks.mdx
+++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks
title: "@kbn/shared-ux-markdown-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-markdown-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks']
---
import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
index 937514faf07a9..d717b05af03e1 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data
title: "@kbn/shared-ux-page-analytics-no-data"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data']
---
import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
index 7a0960fa95137..a35d9f28aa21d 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks
title: "@kbn/shared-ux-page-analytics-no-data-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks']
---
import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
index e7e040800e903..55fb4181017fc 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data
title: "@kbn/shared-ux-page-kibana-no-data"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data']
---
import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
index c22d6edc94f13..d7d25a3853a3c 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks
title: "@kbn/shared-ux-page-kibana-no-data-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks']
---
import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx
index aa8525d6ada56..ddccb95431f7d 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template
title: "@kbn/shared-ux-page-kibana-template"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-page-kibana-template plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template']
---
import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
index 02f5126d0a551..4ba2e6cc33efa 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks
title: "@kbn/shared-ux-page-kibana-template-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks']
---
import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx
index f582b3940af41..31ac0b3de5839 100644
--- a/api_docs/kbn_shared_ux_page_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data
title: "@kbn/shared-ux-page-no-data"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-page-no-data plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data']
---
import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx
index 7ce68cc87db8b..154f26f59617b 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config
title: "@kbn/shared-ux-page-no-data-config"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-page-no-data-config plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config']
---
import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
index 7add3f313f665..c9c4b48603ca5 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks
title: "@kbn/shared-ux-page-no-data-config-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks']
---
import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
index 962149d4ecc5f..12a6879f502f6 100644
--- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks
title: "@kbn/shared-ux-page-no-data-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks']
---
import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx
index 83110736af57b..34e632680feae 100644
--- a/api_docs/kbn_shared_ux_page_solution_nav.mdx
+++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav
title: "@kbn/shared-ux-page-solution-nav"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-page-solution-nav plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav']
---
import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
index ad2df9d961b92..e4982e61fc860 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views
title: "@kbn/shared-ux-prompt-no-data-views"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views']
---
import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
index fc78f37828187..9dfff4794cef7 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks
title: "@kbn/shared-ux-prompt-no-data-views-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks']
---
import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx
index 40cf43f8616f3..403544b7bb335 100644
--- a/api_docs/kbn_shared_ux_prompt_not_found.mdx
+++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found
title: "@kbn/shared-ux-prompt-not-found"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-prompt-not-found plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found']
---
import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx
index cc74459eed0cd..4427ef98ac3f7 100644
--- a/api_docs/kbn_shared_ux_router.mdx
+++ b/api_docs/kbn_shared_ux_router.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router
title: "@kbn/shared-ux-router"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-router plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router']
---
import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx
index 4efe94af00fc3..95032bba084ef 100644
--- a/api_docs/kbn_shared_ux_router_mocks.mdx
+++ b/api_docs/kbn_shared_ux_router_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks
title: "@kbn/shared-ux-router-mocks"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-router-mocks plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks']
---
import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx
index 0e72ef7c0a1c8..89747505493a7 100644
--- a/api_docs/kbn_shared_ux_storybook_config.mdx
+++ b/api_docs/kbn_shared_ux_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config
title: "@kbn/shared-ux-storybook-config"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-storybook-config plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config']
---
import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx
index 21e26133879b9..5b253df4eac13 100644
--- a/api_docs/kbn_shared_ux_storybook_mock.mdx
+++ b/api_docs/kbn_shared_ux_storybook_mock.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock
title: "@kbn/shared-ux-storybook-mock"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-storybook-mock plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock']
---
import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx
index 4da7fcfff97c2..6500b3163f4bc 100644
--- a/api_docs/kbn_shared_ux_utility.mdx
+++ b/api_docs/kbn_shared_ux_utility.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility
title: "@kbn/shared-ux-utility"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/shared-ux-utility plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility']
---
import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json';
diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx
index 9ce2a703f0467..391ab58d97457 100644
--- a/api_docs/kbn_slo_schema.mdx
+++ b/api_docs/kbn_slo_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema
title: "@kbn/slo-schema"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/slo-schema plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema']
---
import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json';
diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx
index c24ad9cfaac58..4c630e44d9a74 100644
--- a/api_docs/kbn_some_dev_log.mdx
+++ b/api_docs/kbn_some_dev_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log
title: "@kbn/some-dev-log"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/some-dev-log plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log']
---
import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json';
diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx
index d513ac11f17f6..744831cb4520c 100644
--- a/api_docs/kbn_sort_predicates.mdx
+++ b/api_docs/kbn_sort_predicates.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates
title: "@kbn/sort-predicates"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/sort-predicates plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates']
---
import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json';
diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx
index bc97cf14c0cef..6c764a09e08b9 100644
--- a/api_docs/kbn_std.mdx
+++ b/api_docs/kbn_std.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std
title: "@kbn/std"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/std plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std']
---
import kbnStdObj from './kbn_std.devdocs.json';
diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx
index caa0b51575370..df22d936a4497 100644
--- a/api_docs/kbn_stdio_dev_helpers.mdx
+++ b/api_docs/kbn_stdio_dev_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers
title: "@kbn/stdio-dev-helpers"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/stdio-dev-helpers plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers']
---
import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json';
diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx
index 75326ce183284..f6f82ad25e6dd 100644
--- a/api_docs/kbn_storybook.mdx
+++ b/api_docs/kbn_storybook.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook
title: "@kbn/storybook"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/storybook plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook']
---
import kbnStorybookObj from './kbn_storybook.devdocs.json';
diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx
index dd8b3c92b0e3f..f8f7a811cf8a3 100644
--- a/api_docs/kbn_telemetry_tools.mdx
+++ b/api_docs/kbn_telemetry_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools
title: "@kbn/telemetry-tools"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/telemetry-tools plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools']
---
import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json';
diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx
index 95de1ec4e3917..ac3fa3c7485ae 100644
--- a/api_docs/kbn_test.mdx
+++ b/api_docs/kbn_test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test
title: "@kbn/test"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/test plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test']
---
import kbnTestObj from './kbn_test.devdocs.json';
diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx
index f0e5730b1d7a1..7184734174ef5 100644
--- a/api_docs/kbn_test_eui_helpers.mdx
+++ b/api_docs/kbn_test_eui_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers
title: "@kbn/test-eui-helpers"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/test-eui-helpers plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers']
---
import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json';
diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx
index fe46afeddda4c..e8801f19d644c 100644
--- a/api_docs/kbn_test_jest_helpers.mdx
+++ b/api_docs/kbn_test_jest_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers
title: "@kbn/test-jest-helpers"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/test-jest-helpers plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers']
---
import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json';
diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx
index 12641549e39d5..f61fd09496128 100644
--- a/api_docs/kbn_test_subj_selector.mdx
+++ b/api_docs/kbn_test_subj_selector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector
title: "@kbn/test-subj-selector"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/test-subj-selector plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector']
---
import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json';
diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx
index b9f2be440da40..7ea3e57237101 100644
--- a/api_docs/kbn_text_based_editor.mdx
+++ b/api_docs/kbn_text_based_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor
title: "@kbn/text-based-editor"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/text-based-editor plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor']
---
import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json';
diff --git a/api_docs/kbn_timerange.devdocs.json b/api_docs/kbn_timerange.devdocs.json
new file mode 100644
index 0000000000000..ed4a19c41a6e9
--- /dev/null
+++ b/api_docs/kbn_timerange.devdocs.json
@@ -0,0 +1,134 @@
+{
+ "id": "@kbn/timerange",
+ "client": {
+ "classes": [],
+ "functions": [],
+ "interfaces": [],
+ "enums": [],
+ "misc": [],
+ "objects": []
+ },
+ "server": {
+ "classes": [],
+ "functions": [],
+ "interfaces": [],
+ "enums": [],
+ "misc": [],
+ "objects": []
+ },
+ "common": {
+ "classes": [],
+ "functions": [
+ {
+ "parentPluginId": "@kbn/timerange",
+ "id": "def-common.getDateISORange",
+ "type": "Function",
+ "tags": [],
+ "label": "getDateISORange",
+ "description": [],
+ "signature": [
+ "({ from, to }: { from: string; to: string; }) => { startDate: string; endDate: string; }"
+ ],
+ "path": "packages/kbn-timerange/src/index.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "children": [
+ {
+ "parentPluginId": "@kbn/timerange",
+ "id": "def-common.getDateISORange.$1",
+ "type": "Object",
+ "tags": [],
+ "label": "{ from, to }",
+ "description": [],
+ "path": "packages/kbn-timerange/src/index.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "children": [
+ {
+ "parentPluginId": "@kbn/timerange",
+ "id": "def-common.getDateISORange.$1.from",
+ "type": "string",
+ "tags": [],
+ "label": "from",
+ "description": [],
+ "path": "packages/kbn-timerange/src/index.ts",
+ "deprecated": false,
+ "trackAdoption": false
+ },
+ {
+ "parentPluginId": "@kbn/timerange",
+ "id": "def-common.getDateISORange.$1.to",
+ "type": "string",
+ "tags": [],
+ "label": "to",
+ "description": [],
+ "path": "packages/kbn-timerange/src/index.ts",
+ "deprecated": false,
+ "trackAdoption": false
+ }
+ ]
+ }
+ ],
+ "returnComment": [],
+ "initialIsOpen": false
+ },
+ {
+ "parentPluginId": "@kbn/timerange",
+ "id": "def-common.getDateRange",
+ "type": "Function",
+ "tags": [],
+ "label": "getDateRange",
+ "description": [],
+ "signature": [
+ "({ from, to }: { from: string; to: string; }) => { startDate: number; endDate: number; }"
+ ],
+ "path": "packages/kbn-timerange/src/index.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "children": [
+ {
+ "parentPluginId": "@kbn/timerange",
+ "id": "def-common.getDateRange.$1",
+ "type": "Object",
+ "tags": [],
+ "label": "{ from, to }",
+ "description": [],
+ "path": "packages/kbn-timerange/src/index.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "children": [
+ {
+ "parentPluginId": "@kbn/timerange",
+ "id": "def-common.getDateRange.$1.from",
+ "type": "string",
+ "tags": [],
+ "label": "from",
+ "description": [],
+ "path": "packages/kbn-timerange/src/index.ts",
+ "deprecated": false,
+ "trackAdoption": false
+ },
+ {
+ "parentPluginId": "@kbn/timerange",
+ "id": "def-common.getDateRange.$1.to",
+ "type": "string",
+ "tags": [],
+ "label": "to",
+ "description": [],
+ "path": "packages/kbn-timerange/src/index.ts",
+ "deprecated": false,
+ "trackAdoption": false
+ }
+ ]
+ }
+ ],
+ "returnComment": [],
+ "initialIsOpen": false
+ }
+ ],
+ "interfaces": [],
+ "enums": [],
+ "misc": [],
+ "objects": []
+ }
+}
\ No newline at end of file
diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx
new file mode 100644
index 0000000000000..37e029c47288f
--- /dev/null
+++ b/api_docs/kbn_timerange.mdx
@@ -0,0 +1,30 @@
+---
+####
+#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system.
+#### Reach out in #docs-engineering for more info.
+####
+id: kibKbnTimerangePluginApi
+slug: /kibana-dev-docs/api/kbn-timerange
+title: "@kbn/timerange"
+image: https://source.unsplash.com/400x175/?github
+description: API docs for the @kbn/timerange plugin
+date: 2024-02-20
+tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange']
+---
+import kbnTimerangeObj from './kbn_timerange.devdocs.json';
+
+
+
+Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) for questions regarding this plugin.
+
+**Code health stats**
+
+| Public API count | Any count | Items lacking comments | Missing exports |
+|-------------------|-----------|------------------------|-----------------|
+| 8 | 0 | 8 | 0 |
+
+## Common
+
+### Functions
+
+
diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx
index e1544ddbc773b..768c39d634aa9 100644
--- a/api_docs/kbn_tooling_log.mdx
+++ b/api_docs/kbn_tooling_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log
title: "@kbn/tooling-log"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/tooling-log plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log']
---
import kbnToolingLogObj from './kbn_tooling_log.devdocs.json';
diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx
index 9c795e573bd9d..76726a0be2a63 100644
--- a/api_docs/kbn_triggers_actions_ui_types.mdx
+++ b/api_docs/kbn_triggers_actions_ui_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types
title: "@kbn/triggers-actions-ui-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/triggers-actions-ui-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types']
---
import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json';
diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx
index 59a1e40285715..fe76bdff5d1d1 100644
--- a/api_docs/kbn_ts_projects.mdx
+++ b/api_docs/kbn_ts_projects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects
title: "@kbn/ts-projects"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ts-projects plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects']
---
import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json';
diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx
index d2a5b87f66351..3910ca3ae20d8 100644
--- a/api_docs/kbn_typed_react_router_config.mdx
+++ b/api_docs/kbn_typed_react_router_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config
title: "@kbn/typed-react-router-config"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/typed-react-router-config plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config']
---
import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json';
diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx
index e803558be1c45..0ca2e1a923445 100644
--- a/api_docs/kbn_ui_actions_browser.mdx
+++ b/api_docs/kbn_ui_actions_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser
title: "@kbn/ui-actions-browser"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ui-actions-browser plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser']
---
import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json';
diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx
index 4ca348f16bc44..03004f22b2222 100644
--- a/api_docs/kbn_ui_shared_deps_src.mdx
+++ b/api_docs/kbn_ui_shared_deps_src.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src
title: "@kbn/ui-shared-deps-src"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ui-shared-deps-src plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src']
---
import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json';
diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx
index 0d1ec74e92aee..c1147e36ba093 100644
--- a/api_docs/kbn_ui_theme.mdx
+++ b/api_docs/kbn_ui_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme
title: "@kbn/ui-theme"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/ui-theme plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme']
---
import kbnUiThemeObj from './kbn_ui_theme.devdocs.json';
diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx
index 2fa0a83368912..8850a9a7e00d5 100644
--- a/api_docs/kbn_unified_data_table.mdx
+++ b/api_docs/kbn_unified_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table
title: "@kbn/unified-data-table"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/unified-data-table plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table']
---
import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json';
diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx
index 052b84191dff4..ce6e69b793ff6 100644
--- a/api_docs/kbn_unified_doc_viewer.mdx
+++ b/api_docs/kbn_unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer
title: "@kbn/unified-doc-viewer"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/unified-doc-viewer plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer']
---
import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json';
diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx
index 3d4d115a70f58..0679d417ea500 100644
--- a/api_docs/kbn_unified_field_list.mdx
+++ b/api_docs/kbn_unified_field_list.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list
title: "@kbn/unified-field-list"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/unified-field-list plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list']
---
import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json';
diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx
index ebfdbd7d9ee40..a86e7ce4de184 100644
--- a/api_docs/kbn_unsaved_changes_badge.mdx
+++ b/api_docs/kbn_unsaved_changes_badge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge
title: "@kbn/unsaved-changes-badge"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/unsaved-changes-badge plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge']
---
import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json';
diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx
index 76622ccd189f3..08d10559868c4 100644
--- a/api_docs/kbn_use_tracked_promise.mdx
+++ b/api_docs/kbn_use_tracked_promise.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise
title: "@kbn/use-tracked-promise"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/use-tracked-promise plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise']
---
import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json';
diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx
index f89c11ccb472e..b1fe99b862fbd 100644
--- a/api_docs/kbn_user_profile_components.mdx
+++ b/api_docs/kbn_user_profile_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components
title: "@kbn/user-profile-components"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/user-profile-components plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components']
---
import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json';
diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx
index 0c10f4a269824..e3c2ffb58c5ec 100644
--- a/api_docs/kbn_utility_types.mdx
+++ b/api_docs/kbn_utility_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types
title: "@kbn/utility-types"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/utility-types plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types']
---
import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json';
diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx
index 2ae0c726c55f3..48ae8524041ba 100644
--- a/api_docs/kbn_utility_types_jest.mdx
+++ b/api_docs/kbn_utility_types_jest.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest
title: "@kbn/utility-types-jest"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/utility-types-jest plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest']
---
import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json';
diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx
index f54f39f03cfd3..9f3e93587d748 100644
--- a/api_docs/kbn_utils.mdx
+++ b/api_docs/kbn_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils
title: "@kbn/utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils']
---
import kbnUtilsObj from './kbn_utils.devdocs.json';
diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx
index 36b89ebbbeb22..ad00053a3a3b4 100644
--- a/api_docs/kbn_visualization_ui_components.mdx
+++ b/api_docs/kbn_visualization_ui_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components
title: "@kbn/visualization-ui-components"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/visualization-ui-components plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components']
---
import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json';
diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx
index c0d52b734e823..92f5cf9813e91 100644
--- a/api_docs/kbn_visualization_utils.mdx
+++ b/api_docs/kbn_visualization_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils
title: "@kbn/visualization-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/visualization-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils']
---
import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json';
diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx
index 4251af327c76f..cbce1c1ced93a 100644
--- a/api_docs/kbn_xstate_utils.mdx
+++ b/api_docs/kbn_xstate_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils
title: "@kbn/xstate-utils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/xstate-utils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils']
---
import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json';
diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx
index 8145e58db9c77..8cb5d8a8f9a6d 100644
--- a/api_docs/kbn_yarn_lock_validator.mdx
+++ b/api_docs/kbn_yarn_lock_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator
title: "@kbn/yarn-lock-validator"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/yarn-lock-validator plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator']
---
import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json';
diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx
index e378b13a0db8c..ad66e20bf9110 100644
--- a/api_docs/kbn_zod_helpers.mdx
+++ b/api_docs/kbn_zod_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers
title: "@kbn/zod-helpers"
image: https://source.unsplash.com/400x175/?github
description: API docs for the @kbn/zod-helpers plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers']
---
import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json';
diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx
index 40d645ea54901..10cf5064c1569 100644
--- a/api_docs/kibana_overview.mdx
+++ b/api_docs/kibana_overview.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview
title: "kibanaOverview"
image: https://source.unsplash.com/400x175/?github
description: API docs for the kibanaOverview plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview']
---
import kibanaOverviewObj from './kibana_overview.devdocs.json';
diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx
index e99fd2724b769..18ae58832491b 100644
--- a/api_docs/kibana_react.mdx
+++ b/api_docs/kibana_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact
title: "kibanaReact"
image: https://source.unsplash.com/400x175/?github
description: API docs for the kibanaReact plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact']
---
import kibanaReactObj from './kibana_react.devdocs.json';
diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx
index 126b432992de3..c52a3b9cd5aa6 100644
--- a/api_docs/kibana_utils.mdx
+++ b/api_docs/kibana_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils
title: "kibanaUtils"
image: https://source.unsplash.com/400x175/?github
description: API docs for the kibanaUtils plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils']
---
import kibanaUtilsObj from './kibana_utils.devdocs.json';
diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx
index 3ba03cbe0fc35..12bb903901db2 100644
--- a/api_docs/kubernetes_security.mdx
+++ b/api_docs/kubernetes_security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity
title: "kubernetesSecurity"
image: https://source.unsplash.com/400x175/?github
description: API docs for the kubernetesSecurity plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity']
---
import kubernetesSecurityObj from './kubernetes_security.devdocs.json';
diff --git a/api_docs/lens.devdocs.json b/api_docs/lens.devdocs.json
index c4a7fd1a51056..97402a1876de4 100644
--- a/api_docs/lens.devdocs.json
+++ b/api_docs/lens.devdocs.json
@@ -11006,7 +11006,9 @@
"section": "def-common.DataView",
"text": "DataView"
},
- ", excludedVisualizations?: string[] | undefined) => ",
+ ", excludedVisualizations?: string[] | undefined, preferredChartType?: ",
+ "ChartType",
+ " | undefined) => ",
{
"pluginId": "lens",
"scope": "public",
@@ -11085,6 +11087,21 @@
"path": "x-pack/plugins/lens/public/plugin.ts",
"deprecated": false,
"trackAdoption": false
+ },
+ {
+ "parentPluginId": "lens",
+ "id": "def-public.LensSuggestionsApi.$4",
+ "type": "CompoundType",
+ "tags": [],
+ "label": "preferredChartType",
+ "description": [],
+ "signature": [
+ "ChartType",
+ " | undefined"
+ ],
+ "path": "x-pack/plugins/lens/public/plugin.ts",
+ "deprecated": false,
+ "trackAdoption": false
}
],
"initialIsOpen": false
diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx
index d32db29996cbc..bb4dad9207e79 100644
--- a/api_docs/lens.mdx
+++ b/api_docs/lens.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens
title: "lens"
image: https://source.unsplash.com/400x175/?github
description: API docs for the lens plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens']
---
import lensObj from './lens.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k
| Public API count | Any count | Items lacking comments | Missing exports |
|-------------------|-----------|------------------------|-----------------|
-| 662 | 0 | 561 | 61 |
+| 663 | 0 | 562 | 62 |
## Client
diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx
index 25bf8a37b2e73..5879c080d5284 100644
--- a/api_docs/license_api_guard.mdx
+++ b/api_docs/license_api_guard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard
title: "licenseApiGuard"
image: https://source.unsplash.com/400x175/?github
description: API docs for the licenseApiGuard plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard']
---
import licenseApiGuardObj from './license_api_guard.devdocs.json';
diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx
index 4e4242aaf5c1f..d63c7684938cb 100644
--- a/api_docs/license_management.mdx
+++ b/api_docs/license_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement
title: "licenseManagement"
image: https://source.unsplash.com/400x175/?github
description: API docs for the licenseManagement plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement']
---
import licenseManagementObj from './license_management.devdocs.json';
diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx
index 5c7afa0a6866a..1f3d208b897ae 100644
--- a/api_docs/licensing.mdx
+++ b/api_docs/licensing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing
title: "licensing"
image: https://source.unsplash.com/400x175/?github
description: API docs for the licensing plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing']
---
import licensingObj from './licensing.devdocs.json';
diff --git a/api_docs/links.mdx b/api_docs/links.mdx
index e855288cda2a6..8050574e97dbe 100644
--- a/api_docs/links.mdx
+++ b/api_docs/links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links
title: "links"
image: https://source.unsplash.com/400x175/?github
description: API docs for the links plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links']
---
import linksObj from './links.devdocs.json';
diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx
index 1a0291f4460aa..dc060736d31cc 100644
--- a/api_docs/lists.mdx
+++ b/api_docs/lists.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists
title: "lists"
image: https://source.unsplash.com/400x175/?github
description: API docs for the lists plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists']
---
import listsObj from './lists.devdocs.json';
diff --git a/api_docs/logs_explorer.devdocs.json b/api_docs/logs_explorer.devdocs.json
index 143de97ecd90a..4c377f721d569 100644
--- a/api_docs/logs_explorer.devdocs.json
+++ b/api_docs/logs_explorer.devdocs.json
@@ -972,7 +972,7 @@
},
" & { controls: ",
"ControlOptions",
- "; datasetSelection: { selectionType: \"all\"; } | { selectionType: \"dataView\"; selection: { dataView: { id: string; name: string; title: string; dataType: \"unknown\" | \"logs\"; } & { kibanaSpaces?: string[] | undefined; type?: string | undefined; }; }; } | { selectionType: \"single\"; selection: { name?: string | undefined; } & { title?: string | undefined; } & { version?: string | undefined; } & { dataset: { name: ",
+ "; datasetSelection: { selectionType: \"all\"; } | { selectionType: \"dataView\"; selection: { dataView: { id: string; } & { dataType?: \"unknown\" | \"logs\" | \"unresolved\" | undefined; kibanaSpaces?: string[] | undefined; name?: string | undefined; title?: string | undefined; type?: string | undefined; }; }; } | { selectionType: \"single\"; selection: { name?: string | undefined; } & { title?: string | undefined; } & { version?: string | undefined; } & { dataset: { name: ",
"Branded",
" ",
+ "DataViewSpecWithId"
+ ],
+ "path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/data_view_selection.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "children": [],
+ "returnComment": []
+ },
+ {
+ "parentPluginId": "logsExplorer",
+ "id": "def-common.DataViewSelection.toPlainSelection",
+ "type": "Function",
+ "tags": [],
+ "label": "toPlainSelection",
+ "description": [],
+ "signature": [
+ "() => { selectionType: \"dataView\"; selection: { dataView: { id: string; dataType: \"unknown\" | \"logs\" | \"unresolved\" | undefined; name: string | undefined; title: string | undefined; }; }; }"
+ ],
+ "path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/data_view_selection.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "children": [],
+ "returnComment": []
+ },
+ {
+ "parentPluginId": "logsExplorer",
+ "id": "def-common.DataViewSelection.fromSelection",
+ "type": "Function",
+ "tags": [],
+ "label": "fromSelection",
+ "description": [],
+ "signature": [
+ "(selection: { dataView: { id: string; } & { dataType?: \"unknown\" | \"logs\" | \"unresolved\" | undefined; kibanaSpaces?: string[] | undefined; name?: string | undefined; title?: string | undefined; type?: string | undefined; }; }) => ",
+ {
+ "pluginId": "logsExplorer",
+ "scope": "common",
+ "docId": "kibLogsExplorerPluginApi",
+ "section": "def-common.DataViewSelection",
+ "text": "DataViewSelection"
+ }
+ ],
+ "path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/data_view_selection.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "children": [
+ {
+ "parentPluginId": "logsExplorer",
+ "id": "def-common.DataViewSelection.fromSelection.$1",
+ "type": "Object",
+ "tags": [],
+ "label": "selection",
+ "description": [],
+ "signature": [
+ "{ dataView: { id: string; } & { dataType?: \"unknown\" | \"logs\" | \"unresolved\" | undefined; kibanaSpaces?: string[] | undefined; name?: string | undefined; title?: string | undefined; type?: string | undefined; }; }"
+ ],
+ "path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/data_view_selection.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "isRequired": true
+ }
+ ],
+ "returnComment": []
+ },
+ {
+ "parentPluginId": "logsExplorer",
+ "id": "def-common.DataViewSelection.create",
+ "type": "Function",
+ "tags": [],
+ "label": "create",
+ "description": [],
+ "signature": [
+ "(dataViewDescriptor: ",
+ "DataViewDescriptor",
+ ") => ",
+ {
+ "pluginId": "logsExplorer",
+ "scope": "common",
+ "docId": "kibLogsExplorerPluginApi",
+ "section": "def-common.DataViewSelection",
+ "text": "DataViewSelection"
+ }
+ ],
+ "path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/data_view_selection.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "children": [
+ {
+ "parentPluginId": "logsExplorer",
+ "id": "def-common.DataViewSelection.create.$1",
+ "type": "Object",
+ "tags": [],
+ "label": "dataViewDescriptor",
+ "description": [],
+ "signature": [
+ "DataViewDescriptor"
+ ],
+ "path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/data_view_selection.ts",
+ "deprecated": false,
+ "trackAdoption": false,
+ "isRequired": true
+ }
+ ],
+ "returnComment": []
+ }
+ ],
+ "initialIsOpen": false
+ },
{
"parentPluginId": "logsExplorer",
"id": "def-common.UnresolvedDatasetSelection",
@@ -1474,7 +1642,7 @@
"label": "hydrateDatasetSelection",
"description": [],
"signature": [
- "(datasetSelection: { selectionType: \"all\"; } | { selectionType: \"dataView\"; selection: { dataView: { id: string; name: string; title: string; dataType: \"unknown\" | \"logs\"; } & { kibanaSpaces?: string[] | undefined; type?: string | undefined; }; }; } | { selectionType: \"single\"; selection: { name?: string | undefined; } & { title?: string | undefined; } & { version?: string | undefined; } & { dataset: { name: ",
+ "(datasetSelection: { selectionType: \"all\"; } | { selectionType: \"dataView\"; selection: { dataView: { id: string; } & { dataType?: \"unknown\" | \"logs\" | \"unresolved\" | undefined; kibanaSpaces?: string[] | undefined; name?: string | undefined; title?: string | undefined; type?: string | undefined; }; }; } | { selectionType: \"single\"; selection: { name?: string | undefined; } & { title?: string | undefined; } & { version?: string | undefined; } & { dataset: { name: ",
"Branded",
" input is ",
- "DataViewSelection"
+ {
+ "pluginId": "logsExplorer",
+ "scope": "common",
+ "docId": "kibLogsExplorerPluginApi",
+ "section": "def-common.DataViewSelection",
+ "text": "DataViewSelection"
+ }
],
"path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/index.ts",
"deprecated": false,
@@ -1954,7 +2134,7 @@
"label": "DatasetSelectionPlain",
"description": [],
"signature": [
- "{ selectionType: \"all\"; } | { selectionType: \"dataView\"; selection: { dataView: { id: string; name: string; title: string; dataType: \"unknown\" | \"logs\"; } & { kibanaSpaces?: string[] | undefined; type?: string | undefined; }; }; } | { selectionType: \"single\"; selection: { name?: string | undefined; } & { title?: string | undefined; } & { version?: string | undefined; } & { dataset: { name: ",
+ "{ selectionType: \"all\"; } | { selectionType: \"dataView\"; selection: { dataView: { id: string; } & { dataType?: \"unknown\" | \"logs\" | \"unresolved\" | undefined; kibanaSpaces?: string[] | undefined; name?: string | undefined; title?: string | undefined; type?: string | undefined; }; }; } | { selectionType: \"single\"; selection: { name?: string | undefined; } & { title?: string | undefined; } & { version?: string | undefined; } & { dataset: { name: ",
"Branded",
"; }>, ",
+ "; }>, ",
"PartialC",
- "<{ kibanaSpaces: ",
+ "<{ dataType: ",
+ "KeyofC",
+ "<{ logs: null; unknown: null; unresolved: null; }>; kibanaSpaces: ",
"ArrayC",
"<",
"StringC",
- ">; type: ",
+ ">; name: ",
+ "StringC",
+ "; title: ",
+ "StringC",
+ "; type: ",
"StringC",
"; }>]>>; }>; }>, ",
"TypeC",
diff --git a/api_docs/logs_explorer.mdx b/api_docs/logs_explorer.mdx
index 7f4f7c3263fe3..fa4fc4b8830c4 100644
--- a/api_docs/logs_explorer.mdx
+++ b/api_docs/logs_explorer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsExplorer
title: "logsExplorer"
image: https://source.unsplash.com/400x175/?github
description: API docs for the logsExplorer plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsExplorer']
---
import logsExplorerObj from './logs_explorer.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux
| Public API count | Any count | Items lacking comments | Missing exports |
|-------------------|-----------|------------------------|-----------------|
-| 110 | 3 | 110 | 22 |
+| 119 | 3 | 119 | 22 |
## Client
diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx
index 7b7970373cb8e..b549819aaf282 100644
--- a/api_docs/logs_shared.mdx
+++ b/api_docs/logs_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared
title: "logsShared"
image: https://source.unsplash.com/400x175/?github
description: API docs for the logsShared plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared']
---
import logsSharedObj from './logs_shared.devdocs.json';
diff --git a/api_docs/management.mdx b/api_docs/management.mdx
index 1b0cf3db40859..7d918a4444237 100644
--- a/api_docs/management.mdx
+++ b/api_docs/management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management
title: "management"
image: https://source.unsplash.com/400x175/?github
description: API docs for the management plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management']
---
import managementObj from './management.devdocs.json';
diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx
index c8518fcca3e4f..167e23cd587e4 100644
--- a/api_docs/maps.mdx
+++ b/api_docs/maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps
title: "maps"
image: https://source.unsplash.com/400x175/?github
description: API docs for the maps plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps']
---
import mapsObj from './maps.devdocs.json';
diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx
index 139aec384ac76..c832fdfd2d83b 100644
--- a/api_docs/maps_ems.mdx
+++ b/api_docs/maps_ems.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms
title: "mapsEms"
image: https://source.unsplash.com/400x175/?github
description: API docs for the mapsEms plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms']
---
import mapsEmsObj from './maps_ems.devdocs.json';
diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx
index 2a3e86386590e..2415b995f6aa1 100644
--- a/api_docs/metrics_data_access.mdx
+++ b/api_docs/metrics_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess
title: "metricsDataAccess"
image: https://source.unsplash.com/400x175/?github
description: API docs for the metricsDataAccess plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess']
---
import metricsDataAccessObj from './metrics_data_access.devdocs.json';
diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx
index 83597a95222cd..e26e096e81c70 100644
--- a/api_docs/ml.mdx
+++ b/api_docs/ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml
title: "ml"
image: https://source.unsplash.com/400x175/?github
description: API docs for the ml plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml']
---
import mlObj from './ml.devdocs.json';
diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx
index 6e2b4d6a5622f..cf3b376c3db93 100644
--- a/api_docs/mock_idp_plugin.mdx
+++ b/api_docs/mock_idp_plugin.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin
title: "mockIdpPlugin"
image: https://source.unsplash.com/400x175/?github
description: API docs for the mockIdpPlugin plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin']
---
import mockIdpPluginObj from './mock_idp_plugin.devdocs.json';
diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx
index b8e6b6f8b9144..0cd707c1e58c7 100644
--- a/api_docs/monitoring.mdx
+++ b/api_docs/monitoring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring
title: "monitoring"
image: https://source.unsplash.com/400x175/?github
description: API docs for the monitoring plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring']
---
import monitoringObj from './monitoring.devdocs.json';
diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx
index 649c2a54a9bb8..3a4ef81c93463 100644
--- a/api_docs/monitoring_collection.mdx
+++ b/api_docs/monitoring_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection
title: "monitoringCollection"
image: https://source.unsplash.com/400x175/?github
description: API docs for the monitoringCollection plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection']
---
import monitoringCollectionObj from './monitoring_collection.devdocs.json';
diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx
index 2dac3cd93bbb4..f1fef51258aff 100644
--- a/api_docs/navigation.mdx
+++ b/api_docs/navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation
title: "navigation"
image: https://source.unsplash.com/400x175/?github
description: API docs for the navigation plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation']
---
import navigationObj from './navigation.devdocs.json';
diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx
index 124d94a2aed8c..83bffaaafde0f 100644
--- a/api_docs/newsfeed.mdx
+++ b/api_docs/newsfeed.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed
title: "newsfeed"
image: https://source.unsplash.com/400x175/?github
description: API docs for the newsfeed plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed']
---
import newsfeedObj from './newsfeed.devdocs.json';
diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx
index 11052481a252c..f46bd2fec3924 100644
--- a/api_docs/no_data_page.mdx
+++ b/api_docs/no_data_page.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage
title: "noDataPage"
image: https://source.unsplash.com/400x175/?github
description: API docs for the noDataPage plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage']
---
import noDataPageObj from './no_data_page.devdocs.json';
diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx
index 4699c3d811ae0..66a830a783567 100644
--- a/api_docs/notifications.mdx
+++ b/api_docs/notifications.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications
title: "notifications"
image: https://source.unsplash.com/400x175/?github
description: API docs for the notifications plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications']
---
import notificationsObj from './notifications.devdocs.json';
diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx
index 695e289e9f26d..32c4af3c7d1b8 100644
--- a/api_docs/observability.mdx
+++ b/api_docs/observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability
title: "observability"
image: https://source.unsplash.com/400x175/?github
description: API docs for the observability plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability']
---
import observabilityObj from './observability.devdocs.json';
diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx
index d16dddc2f44d5..9b35ec5c33940 100644
--- a/api_docs/observability_a_i_assistant.mdx
+++ b/api_docs/observability_a_i_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant
title: "observabilityAIAssistant"
image: https://source.unsplash.com/400x175/?github
description: API docs for the observabilityAIAssistant plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant']
---
import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json';
diff --git a/api_docs/observability_logs_explorer.devdocs.json b/api_docs/observability_logs_explorer.devdocs.json
index 5c60b9f47b230..6f15cfcf43927 100644
--- a/api_docs/observability_logs_explorer.devdocs.json
+++ b/api_docs/observability_logs_explorer.devdocs.json
@@ -51,7 +51,7 @@
},
">"
],
- "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets/all_datasets_locator.ts",
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets_locator.ts",
"deprecated": false,
"trackAdoption": false,
"children": [
@@ -65,7 +65,7 @@
"signature": [
"\"ALL_DATASETS_LOCATOR\""
],
- "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets/all_datasets_locator.ts",
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets_locator.ts",
"deprecated": false,
"trackAdoption": false
},
@@ -79,7 +79,7 @@
"signature": [
"any"
],
- "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets/all_datasets_locator.ts",
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets_locator.ts",
"deprecated": false,
"trackAdoption": false,
"children": [
@@ -91,9 +91,9 @@
"label": "deps",
"description": [],
"signature": [
- "DatasetLocatorDependencies"
+ "ObsLogsExplorerLocatorDependencies"
],
- "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets/all_datasets_locator.ts",
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets_locator.ts",
"deprecated": false,
"trackAdoption": false,
"isRequired": true
@@ -119,7 +119,7 @@
},
") => Promise<{ app: string; path: string; state: { origin?: { id: \"application-log-onboarding\"; } | undefined; }; }>"
],
- "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets/all_datasets_locator.ts",
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets_locator.ts",
"deprecated": false,
"trackAdoption": false,
"children": [
@@ -139,7 +139,7 @@
"text": "DatasetLocatorParams"
}
],
- "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets/all_datasets_locator.ts",
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets_locator.ts",
"deprecated": false,
"trackAdoption": false,
"isRequired": true
@@ -183,7 +183,7 @@
},
">"
],
- "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset/single_dataset_locator.ts",
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset_locator.ts",
"deprecated": false,
"trackAdoption": false,
"children": [
@@ -197,7 +197,7 @@
"signature": [
"\"SINGLE_DATASET_LOCATOR\""
],
- "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset/single_dataset_locator.ts",
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset_locator.ts",
"deprecated": false,
"trackAdoption": false
},
@@ -211,7 +211,7 @@
"signature": [
"any"
],
- "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset/single_dataset_locator.ts",
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset_locator.ts",
"deprecated": false,
"trackAdoption": false,
"children": [
@@ -223,9 +223,9 @@
"label": "deps",
"description": [],
"signature": [
- "DatasetLocatorDependencies"
+ "ObsLogsExplorerLocatorDependencies"
],
- "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset/single_dataset_locator.ts",
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset_locator.ts",
"deprecated": false,
"trackAdoption": false,
"isRequired": true
@@ -251,7 +251,7 @@
},
") => Promise<{ app: string; path: string; state: { origin?: { id: \"application-log-onboarding\"; } | undefined; }; }>"
],
- "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset/single_dataset_locator.ts",
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset_locator.ts",
"deprecated": false,
"trackAdoption": false,
"children": [
@@ -271,7 +271,7 @@
"text": "SingleDatasetLocatorParams"
}
],
- "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset/single_dataset_locator.ts",
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset_locator.ts",
"deprecated": false,
"trackAdoption": false,
"isRequired": true
@@ -359,6 +359,35 @@
"deprecated": false,
"trackAdoption": false
},
+ {
+ "parentPluginId": "observabilityLogsExplorer",
+ "id": "def-common.ObservabilityLogsExplorerLocators.dataViewLocator",
+ "type": "Object",
+ "tags": [],
+ "label": "dataViewLocator",
+ "description": [],
+ "signature": [
+ {
+ "pluginId": "share",
+ "scope": "common",
+ "docId": "kibSharePluginApi",
+ "section": "def-common.LocatorPublic",
+ "text": "LocatorPublic"
+ },
+ "<",
+ {
+ "pluginId": "@kbn/deeplinks-observability",
+ "scope": "common",
+ "docId": "kibKbnDeeplinksObservabilityPluginApi",
+ "section": "def-common.ObsLogsExplorerDataViewLocatorParams",
+ "text": "ObsLogsExplorerDataViewLocatorParams"
+ },
+ ">"
+ ],
+ "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/index.ts",
+ "deprecated": false,
+ "trackAdoption": false
+ },
{
"parentPluginId": "observabilityLogsExplorer",
"id": "def-common.ObservabilityLogsExplorerLocators.singleDatasetLocator",
diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx
index 9e27455623b1d..1216e5b3dd349 100644
--- a/api_docs/observability_logs_explorer.mdx
+++ b/api_docs/observability_logs_explorer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer
title: "observabilityLogsExplorer"
image: https://source.unsplash.com/400x175/?github
description: API docs for the observabilityLogsExplorer plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer']
---
import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux
| Public API count | Any count | Items lacking comments | Missing exports |
|-------------------|-----------|------------------------|-----------------|
-| 19 | 0 | 19 | 1 |
+| 20 | 0 | 20 | 1 |
## Common
diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx
index 103cd41a0c7ea..0875e2c1c3ec0 100644
--- a/api_docs/observability_onboarding.mdx
+++ b/api_docs/observability_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding
title: "observabilityOnboarding"
image: https://source.unsplash.com/400x175/?github
description: API docs for the observabilityOnboarding plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding']
---
import observabilityOnboardingObj from './observability_onboarding.devdocs.json';
diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx
index 6cab17e76e71c..48a1fa1420af0 100644
--- a/api_docs/observability_shared.mdx
+++ b/api_docs/observability_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared
title: "observabilityShared"
image: https://source.unsplash.com/400x175/?github
description: API docs for the observabilityShared plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared']
---
import observabilitySharedObj from './observability_shared.devdocs.json';
diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx
index 1ed21aa10e09e..52f48a730005b 100644
--- a/api_docs/osquery.mdx
+++ b/api_docs/osquery.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery
title: "osquery"
image: https://source.unsplash.com/400x175/?github
description: API docs for the osquery plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery']
---
import osqueryObj from './osquery.devdocs.json';
diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx
index 20705c6b48506..25d742e2d4c63 100644
--- a/api_docs/painless_lab.mdx
+++ b/api_docs/painless_lab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab
title: "painlessLab"
image: https://source.unsplash.com/400x175/?github
description: API docs for the painlessLab plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab']
---
import painlessLabObj from './painless_lab.devdocs.json';
diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx
index 53985b0e0dbb6..9a2e0e358a581 100644
--- a/api_docs/plugin_directory.mdx
+++ b/api_docs/plugin_directory.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory
slug: /kibana-dev-docs/api-meta/plugin-api-directory
title: Directory
description: Directory of public APIs available through plugins or packages.
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana']
---
@@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
| Count | Plugins or Packages with a
public API | Number of teams |
|--------------|----------|------------------------|
-| 752 | 644 | 40 |
+| 753 | 645 | 40 |
### Public API health stats
| API Count | Any Count | Missing comments | Missing exports |
|--------------|----------|-----------------|--------|
-| 45094 | 231 | 34037 | 1745 |
+| 45116 | 231 | 34057 | 1746 |
## Plugin Directory
@@ -119,13 +119,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
| kibanaUsageCollection | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 |
| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 609 | 3 | 416 | 9 |
| | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 5 | 0 | 5 | 1 |
-| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Visualization editor allowing to quickly and easily configure compelling visualizations to use on dashboards and canvas workpads. Exposes components to embed visualizations and link into the Lens editor from within other apps in Kibana. | 662 | 0 | 561 | 61 |
+| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Visualization editor allowing to quickly and easily configure compelling visualizations to use on dashboards and canvas workpads. Exposes components to embed visualizations and link into the Lens editor from within other apps in Kibana. | 663 | 0 | 562 | 62 |
| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 8 | 0 | 8 | 0 |
| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 4 | 0 | 4 | 1 |
| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 117 | 0 | 42 | 10 |
| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | A dashboard panel for creating links to dashboards or external links. | 57 | 0 | 57 | 6 |
| | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 226 | 0 | 97 | 52 |
-| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin provides a LogsExplorer component using the Discover customization framework, offering several affordances specifically designed for log consumption. | 110 | 3 | 110 | 22 |
+| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin provides a LogsExplorer component using the Discover customization framework, offering several affordances specifically designed for log consumption. | 119 | 3 | 119 | 22 |
| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | Exposes the shared components and APIs to access and visualize logs. | 302 | 0 | 276 | 32 |
| logstash | [@elastic/logstash](https://github.com/orgs/elastic/teams/logstash) | - | 0 | 0 | 0 | 0 |
| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 45 | 0 | 45 | 7 |
@@ -142,7 +142,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 |
| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 649 | 2 | 640 | 17 |
| | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 78 | 0 | 76 | 14 |
-| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 19 | 0 | 19 | 1 |
+| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 20 | 0 | 20 | 1 |
| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 14 | 0 | 14 | 0 |
| | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 330 | 1 | 325 | 19 |
| | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 23 | 0 | 23 | 7 |
@@ -439,7 +439,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 5 | 0 | 5 | 0 |
| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 4 | 0 | 4 | 0 |
| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 3 | 0 | 3 | 0 |
-| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 34 | 0 | 24 | 0 |
+| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 37 | 0 | 26 | 0 |
| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 4 | 0 | 4 | 0 |
| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 8 | 0 | 8 | 0 |
| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 8 | 0 | 8 | 0 |
@@ -507,7 +507,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 23 | 0 | 7 | 0 |
| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 8 | 0 | 2 | 3 |
| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 45 | 0 | 0 | 0 |
-| | [@elastic/appex-sharedux @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 134 | 0 | 132 | 0 |
+| | [@elastic/appex-sharedux @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 135 | 0 | 132 | 0 |
| | [@elastic/appex-sharedux @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 20 | 0 | 11 | 0 |
| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 88 | 0 | 10 | 0 |
| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 56 | 0 | 6 | 0 |
@@ -540,7 +540,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 18 | 0 | 18 | 0 |
| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 31 | 1 | 24 | 1 |
| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 22 | 0 | 16 | 0 |
-| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 105 | 0 | 105 | 2 |
+| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 106 | 0 | 106 | 2 |
| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 55 | 1 | 50 | 0 |
| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 10 | 0 | 10 | 2 |
| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 99 | 1 | 99 | 0 |
@@ -588,7 +588,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
| | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 122 | 0 | 119 | 0 |
| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 |
| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 76 | 0 | 76 | 0 |
-| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 3084 | 0 | 3084 | 0 |
+| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 3082 | 0 | 3082 | 0 |
| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 18 | 1 | 17 | 1 |
| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 25 | 0 | 25 | 0 |
| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 20 | 0 | 18 | 1 |
@@ -677,6 +677,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
| | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 137 | 5 | 105 | 2 |
| | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 |
| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 31 | 0 | 13 | 0 |
+| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 8 | 0 | 8 | 0 |
| | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 72 | 0 | 55 | 0 |
| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 11 | 0 | 11 | 0 |
| | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 39 | 0 | 25 | 1 |
diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx
index c108c6e617302..1a0add4b625f4 100644
--- a/api_docs/presentation_panel.mdx
+++ b/api_docs/presentation_panel.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel
title: "presentationPanel"
image: https://source.unsplash.com/400x175/?github
description: API docs for the presentationPanel plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel']
---
import presentationPanelObj from './presentation_panel.devdocs.json';
diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx
index df7ac746ed342..c71e71fc0b829 100644
--- a/api_docs/presentation_util.mdx
+++ b/api_docs/presentation_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil
title: "presentationUtil"
image: https://source.unsplash.com/400x175/?github
description: API docs for the presentationUtil plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil']
---
import presentationUtilObj from './presentation_util.devdocs.json';
diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx
index f00d08fd192a3..b3a8c94dd28f5 100644
--- a/api_docs/profiling.mdx
+++ b/api_docs/profiling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling
title: "profiling"
image: https://source.unsplash.com/400x175/?github
description: API docs for the profiling plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling']
---
import profilingObj from './profiling.devdocs.json';
diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx
index c6548c2bbd0af..5d88a6e600d47 100644
--- a/api_docs/profiling_data_access.mdx
+++ b/api_docs/profiling_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess
title: "profilingDataAccess"
image: https://source.unsplash.com/400x175/?github
description: API docs for the profilingDataAccess plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess']
---
import profilingDataAccessObj from './profiling_data_access.devdocs.json';
diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx
index 427d57d507d40..e0bef04f33bb4 100644
--- a/api_docs/remote_clusters.mdx
+++ b/api_docs/remote_clusters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters
title: "remoteClusters"
image: https://source.unsplash.com/400x175/?github
description: API docs for the remoteClusters plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters']
---
import remoteClustersObj from './remote_clusters.devdocs.json';
diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx
index 15ad577e4adac..032b3c779f529 100644
--- a/api_docs/reporting.mdx
+++ b/api_docs/reporting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting
title: "reporting"
image: https://source.unsplash.com/400x175/?github
description: API docs for the reporting plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting']
---
import reportingObj from './reporting.devdocs.json';
diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx
index 6c73a8a4b61df..16d54a427dfb7 100644
--- a/api_docs/rollup.mdx
+++ b/api_docs/rollup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup
title: "rollup"
image: https://source.unsplash.com/400x175/?github
description: API docs for the rollup plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup']
---
import rollupObj from './rollup.devdocs.json';
diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx
index c336526b4197e..8ca2499d14932 100644
--- a/api_docs/rule_registry.mdx
+++ b/api_docs/rule_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry
title: "ruleRegistry"
image: https://source.unsplash.com/400x175/?github
description: API docs for the ruleRegistry plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry']
---
import ruleRegistryObj from './rule_registry.devdocs.json';
diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx
index 5602168067de0..ddf9d95abb35d 100644
--- a/api_docs/runtime_fields.mdx
+++ b/api_docs/runtime_fields.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields
title: "runtimeFields"
image: https://source.unsplash.com/400x175/?github
description: API docs for the runtimeFields plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields']
---
import runtimeFieldsObj from './runtime_fields.devdocs.json';
diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx
index 8ea068fc712ee..81f64e7b930a5 100644
--- a/api_docs/saved_objects.mdx
+++ b/api_docs/saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects
title: "savedObjects"
image: https://source.unsplash.com/400x175/?github
description: API docs for the savedObjects plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects']
---
import savedObjectsObj from './saved_objects.devdocs.json';
diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx
index 438ec5dc39fe8..8f3cb1e7c708c 100644
--- a/api_docs/saved_objects_finder.mdx
+++ b/api_docs/saved_objects_finder.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder
title: "savedObjectsFinder"
image: https://source.unsplash.com/400x175/?github
description: API docs for the savedObjectsFinder plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder']
---
import savedObjectsFinderObj from './saved_objects_finder.devdocs.json';
diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx
index 60006e628640e..5aa2906ab86df 100644
--- a/api_docs/saved_objects_management.mdx
+++ b/api_docs/saved_objects_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement
title: "savedObjectsManagement"
image: https://source.unsplash.com/400x175/?github
description: API docs for the savedObjectsManagement plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement']
---
import savedObjectsManagementObj from './saved_objects_management.devdocs.json';
diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx
index d996b4777a74e..4793fdac6a3ac 100644
--- a/api_docs/saved_objects_tagging.mdx
+++ b/api_docs/saved_objects_tagging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging
title: "savedObjectsTagging"
image: https://source.unsplash.com/400x175/?github
description: API docs for the savedObjectsTagging plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging']
---
import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json';
diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx
index 996721208d0df..895364c703223 100644
--- a/api_docs/saved_objects_tagging_oss.mdx
+++ b/api_docs/saved_objects_tagging_oss.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss
title: "savedObjectsTaggingOss"
image: https://source.unsplash.com/400x175/?github
description: API docs for the savedObjectsTaggingOss plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss']
---
import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json';
diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx
index b1a2181f89863..6d8d43f0dfedd 100644
--- a/api_docs/saved_search.mdx
+++ b/api_docs/saved_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch
title: "savedSearch"
image: https://source.unsplash.com/400x175/?github
description: API docs for the savedSearch plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch']
---
import savedSearchObj from './saved_search.devdocs.json';
diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx
index 3749ae6917709..d71a02d271540 100644
--- a/api_docs/screenshot_mode.mdx
+++ b/api_docs/screenshot_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode
title: "screenshotMode"
image: https://source.unsplash.com/400x175/?github
description: API docs for the screenshotMode plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode']
---
import screenshotModeObj from './screenshot_mode.devdocs.json';
diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx
index 5402ab2f0db28..df73a15245b49 100644
--- a/api_docs/screenshotting.mdx
+++ b/api_docs/screenshotting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting
title: "screenshotting"
image: https://source.unsplash.com/400x175/?github
description: API docs for the screenshotting plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting']
---
import screenshottingObj from './screenshotting.devdocs.json';
diff --git a/api_docs/security.mdx b/api_docs/security.mdx
index 131b5b2919a2e..3ff18b1634fa9 100644
--- a/api_docs/security.mdx
+++ b/api_docs/security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security
title: "security"
image: https://source.unsplash.com/400x175/?github
description: API docs for the security plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security']
---
import securityObj from './security.devdocs.json';
diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json
index cf688503dff61..c3872931ae67b 100644
--- a/api_docs/security_solution.devdocs.json
+++ b/api_docs/security_solution.devdocs.json
@@ -3085,16 +3085,16 @@
"children": [
{
"parentPluginId": "securitySolution",
- "id": "def-server.SecuritySolutionPluginSetup.setAppFeaturesConfigurator",
+ "id": "def-server.SecuritySolutionPluginSetup.setProductFeaturesConfigurator",
"type": "Function",
"tags": [],
- "label": "setAppFeaturesConfigurator",
+ "label": "setProductFeaturesConfigurator",
"description": [
"\nSets the configurations for app features that are available to the Security Solution"
],
"signature": [
"(configurator: ",
- "AppFeaturesConfigurator",
+ "ProductFeaturesConfigurator",
") => void"
],
"path": "x-pack/plugins/security_solution/server/plugin_contract.ts",
@@ -3104,15 +3104,15 @@
"children": [
{
"parentPluginId": "securitySolution",
- "id": "def-server.SecuritySolutionPluginSetup.setAppFeaturesConfigurator.$1",
+ "id": "def-server.SecuritySolutionPluginSetup.setProductFeaturesConfigurator.$1",
"type": "Object",
"tags": [],
"label": "configurator",
"description": [],
"signature": [
- "AppFeaturesConfigurator"
+ "ProductFeaturesConfigurator"
],
- "path": "x-pack/plugins/security_solution/server/lib/app_features_service/app_features_service.ts",
+ "path": "x-pack/plugins/security_solution/server/lib/product_features_service/product_features_service.ts",
"deprecated": false,
"trackAdoption": false
}
diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx
index 45eb1193e5493..cf182a2a1c387 100644
--- a/api_docs/security_solution.mdx
+++ b/api_docs/security_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution
title: "securitySolution"
image: https://source.unsplash.com/400x175/?github
description: API docs for the securitySolution plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution']
---
import securitySolutionObj from './security_solution.devdocs.json';
diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx
index fa82fa12e615a..d5e1859465759 100644
--- a/api_docs/security_solution_ess.mdx
+++ b/api_docs/security_solution_ess.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss
title: "securitySolutionEss"
image: https://source.unsplash.com/400x175/?github
description: API docs for the securitySolutionEss plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss']
---
import securitySolutionEssObj from './security_solution_ess.devdocs.json';
diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx
index 0d2cd80015096..836056c03802f 100644
--- a/api_docs/security_solution_serverless.mdx
+++ b/api_docs/security_solution_serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless
title: "securitySolutionServerless"
image: https://source.unsplash.com/400x175/?github
description: API docs for the securitySolutionServerless plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless']
---
import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json';
diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx
index e5e4ebe257777..02b8dba521f7c 100644
--- a/api_docs/serverless.mdx
+++ b/api_docs/serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless
title: "serverless"
image: https://source.unsplash.com/400x175/?github
description: API docs for the serverless plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless']
---
import serverlessObj from './serverless.devdocs.json';
diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx
index 671438f072468..a01926cf12215 100644
--- a/api_docs/serverless_observability.mdx
+++ b/api_docs/serverless_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability
title: "serverlessObservability"
image: https://source.unsplash.com/400x175/?github
description: API docs for the serverlessObservability plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability']
---
import serverlessObservabilityObj from './serverless_observability.devdocs.json';
diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx
index 6baabf6ff6081..aead3a708124e 100644
--- a/api_docs/serverless_search.mdx
+++ b/api_docs/serverless_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch
title: "serverlessSearch"
image: https://source.unsplash.com/400x175/?github
description: API docs for the serverlessSearch plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch']
---
import serverlessSearchObj from './serverless_search.devdocs.json';
diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx
index 2f728c2b84f51..d0ff6c8b99c25 100644
--- a/api_docs/session_view.mdx
+++ b/api_docs/session_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView
title: "sessionView"
image: https://source.unsplash.com/400x175/?github
description: API docs for the sessionView plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView']
---
import sessionViewObj from './session_view.devdocs.json';
diff --git a/api_docs/share.mdx b/api_docs/share.mdx
index c85f61714d044..ff9a994a4c320 100644
--- a/api_docs/share.mdx
+++ b/api_docs/share.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share
title: "share"
image: https://source.unsplash.com/400x175/?github
description: API docs for the share plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share']
---
import shareObj from './share.devdocs.json';
diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx
index a8ef8afe32592..cc5b1168dba51 100644
--- a/api_docs/snapshot_restore.mdx
+++ b/api_docs/snapshot_restore.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore
title: "snapshotRestore"
image: https://source.unsplash.com/400x175/?github
description: API docs for the snapshotRestore plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore']
---
import snapshotRestoreObj from './snapshot_restore.devdocs.json';
diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx
index 34ee0daeb2448..312e5926c8125 100644
--- a/api_docs/spaces.mdx
+++ b/api_docs/spaces.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces
title: "spaces"
image: https://source.unsplash.com/400x175/?github
description: API docs for the spaces plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces']
---
import spacesObj from './spaces.devdocs.json';
diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx
index 02c541c6b6715..9652e3e08b5f8 100644
--- a/api_docs/stack_alerts.mdx
+++ b/api_docs/stack_alerts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts
title: "stackAlerts"
image: https://source.unsplash.com/400x175/?github
description: API docs for the stackAlerts plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts']
---
import stackAlertsObj from './stack_alerts.devdocs.json';
diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx
index d947e8fc15529..ea034fdfbe21c 100644
--- a/api_docs/stack_connectors.mdx
+++ b/api_docs/stack_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors
title: "stackConnectors"
image: https://source.unsplash.com/400x175/?github
description: API docs for the stackConnectors plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors']
---
import stackConnectorsObj from './stack_connectors.devdocs.json';
diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx
index 1a16f0d3b777d..6306f7f98beef 100644
--- a/api_docs/task_manager.mdx
+++ b/api_docs/task_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager
title: "taskManager"
image: https://source.unsplash.com/400x175/?github
description: API docs for the taskManager plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager']
---
import taskManagerObj from './task_manager.devdocs.json';
diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx
index ed9b83d88490a..208d0bf47b0c8 100644
--- a/api_docs/telemetry.mdx
+++ b/api_docs/telemetry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry
title: "telemetry"
image: https://source.unsplash.com/400x175/?github
description: API docs for the telemetry plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry']
---
import telemetryObj from './telemetry.devdocs.json';
diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx
index 419547e887167..e87f564b7322d 100644
--- a/api_docs/telemetry_collection_manager.mdx
+++ b/api_docs/telemetry_collection_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager
title: "telemetryCollectionManager"
image: https://source.unsplash.com/400x175/?github
description: API docs for the telemetryCollectionManager plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager']
---
import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json';
diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx
index 3d2e9d46e93dd..034eb073393b8 100644
--- a/api_docs/telemetry_collection_xpack.mdx
+++ b/api_docs/telemetry_collection_xpack.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack
title: "telemetryCollectionXpack"
image: https://source.unsplash.com/400x175/?github
description: API docs for the telemetryCollectionXpack plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack']
---
import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json';
diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx
index 09926a1cea92b..af178a0892caf 100644
--- a/api_docs/telemetry_management_section.mdx
+++ b/api_docs/telemetry_management_section.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection
title: "telemetryManagementSection"
image: https://source.unsplash.com/400x175/?github
description: API docs for the telemetryManagementSection plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection']
---
import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json';
diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx
index 963288522e8c4..8e1d82ac01e11 100644
--- a/api_docs/text_based_languages.mdx
+++ b/api_docs/text_based_languages.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages
title: "textBasedLanguages"
image: https://source.unsplash.com/400x175/?github
description: API docs for the textBasedLanguages plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages']
---
import textBasedLanguagesObj from './text_based_languages.devdocs.json';
diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx
index f4df327bb4c83..5aa887179b909 100644
--- a/api_docs/threat_intelligence.mdx
+++ b/api_docs/threat_intelligence.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence
title: "threatIntelligence"
image: https://source.unsplash.com/400x175/?github
description: API docs for the threatIntelligence plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence']
---
import threatIntelligenceObj from './threat_intelligence.devdocs.json';
diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx
index fc7591510e2ac..9ab223dacce12 100644
--- a/api_docs/timelines.mdx
+++ b/api_docs/timelines.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines
title: "timelines"
image: https://source.unsplash.com/400x175/?github
description: API docs for the timelines plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines']
---
import timelinesObj from './timelines.devdocs.json';
diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx
index aea5dbff1b077..0b458e9e8cb25 100644
--- a/api_docs/transform.mdx
+++ b/api_docs/transform.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform
title: "transform"
image: https://source.unsplash.com/400x175/?github
description: API docs for the transform plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform']
---
import transformObj from './transform.devdocs.json';
diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx
index 3f07adfaa2452..b31bf88df4d7b 100644
--- a/api_docs/triggers_actions_ui.mdx
+++ b/api_docs/triggers_actions_ui.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi
title: "triggersActionsUi"
image: https://source.unsplash.com/400x175/?github
description: API docs for the triggersActionsUi plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi']
---
import triggersActionsUiObj from './triggers_actions_ui.devdocs.json';
diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx
index 3d62289590e43..bb2fa4aeeebdf 100644
--- a/api_docs/ui_actions.mdx
+++ b/api_docs/ui_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions
title: "uiActions"
image: https://source.unsplash.com/400x175/?github
description: API docs for the uiActions plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions']
---
import uiActionsObj from './ui_actions.devdocs.json';
diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx
index 0ac0e921fa073..12ccb6a9c4caa 100644
--- a/api_docs/ui_actions_enhanced.mdx
+++ b/api_docs/ui_actions_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced
title: "uiActionsEnhanced"
image: https://source.unsplash.com/400x175/?github
description: API docs for the uiActionsEnhanced plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced']
---
import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json';
diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx
index 20fe549ad5496..12af5c5fcf3ee 100644
--- a/api_docs/unified_doc_viewer.mdx
+++ b/api_docs/unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer
title: "unifiedDocViewer"
image: https://source.unsplash.com/400x175/?github
description: API docs for the unifiedDocViewer plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer']
---
import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json';
diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx
index 4c0f396da51cc..78e9997f03cde 100644
--- a/api_docs/unified_histogram.mdx
+++ b/api_docs/unified_histogram.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram
title: "unifiedHistogram"
image: https://source.unsplash.com/400x175/?github
description: API docs for the unifiedHistogram plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram']
---
import unifiedHistogramObj from './unified_histogram.devdocs.json';
diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx
index 49b5f0afcafa9..86eab4ffe6817 100644
--- a/api_docs/unified_search.mdx
+++ b/api_docs/unified_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch
title: "unifiedSearch"
image: https://source.unsplash.com/400x175/?github
description: API docs for the unifiedSearch plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch']
---
import unifiedSearchObj from './unified_search.devdocs.json';
diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx
index 9d0e2ebf93de0..4cb97292d7b4c 100644
--- a/api_docs/unified_search_autocomplete.mdx
+++ b/api_docs/unified_search_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete
title: "unifiedSearch.autocomplete"
image: https://source.unsplash.com/400x175/?github
description: API docs for the unifiedSearch.autocomplete plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete']
---
import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json';
diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx
index 63e1a2dab92bb..1b76a70fdc71f 100644
--- a/api_docs/uptime.mdx
+++ b/api_docs/uptime.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime
title: "uptime"
image: https://source.unsplash.com/400x175/?github
description: API docs for the uptime plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime']
---
import uptimeObj from './uptime.devdocs.json';
diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx
index 80430ff41cee7..ef0f4734e6183 100644
--- a/api_docs/url_forwarding.mdx
+++ b/api_docs/url_forwarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding
title: "urlForwarding"
image: https://source.unsplash.com/400x175/?github
description: API docs for the urlForwarding plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding']
---
import urlForwardingObj from './url_forwarding.devdocs.json';
diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx
index 03072cd20d4e5..8e477f9739156 100644
--- a/api_docs/usage_collection.mdx
+++ b/api_docs/usage_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection
title: "usageCollection"
image: https://source.unsplash.com/400x175/?github
description: API docs for the usageCollection plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection']
---
import usageCollectionObj from './usage_collection.devdocs.json';
diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx
index 54042aefff723..6fa01a17f98e3 100644
--- a/api_docs/ux.mdx
+++ b/api_docs/ux.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux
title: "ux"
image: https://source.unsplash.com/400x175/?github
description: API docs for the ux plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux']
---
import uxObj from './ux.devdocs.json';
diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx
index f819015ab8a46..ff4d543663283 100644
--- a/api_docs/vis_default_editor.mdx
+++ b/api_docs/vis_default_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor
title: "visDefaultEditor"
image: https://source.unsplash.com/400x175/?github
description: API docs for the visDefaultEditor plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor']
---
import visDefaultEditorObj from './vis_default_editor.devdocs.json';
diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx
index 9886eaaf06fd1..754de5cf967df 100644
--- a/api_docs/vis_type_gauge.mdx
+++ b/api_docs/vis_type_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge
title: "visTypeGauge"
image: https://source.unsplash.com/400x175/?github
description: API docs for the visTypeGauge plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge']
---
import visTypeGaugeObj from './vis_type_gauge.devdocs.json';
diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx
index c4eb5c2cbf62c..53d407342eb56 100644
--- a/api_docs/vis_type_heatmap.mdx
+++ b/api_docs/vis_type_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap
title: "visTypeHeatmap"
image: https://source.unsplash.com/400x175/?github
description: API docs for the visTypeHeatmap plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap']
---
import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json';
diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx
index 7135857e693d6..72fbef61b7522 100644
--- a/api_docs/vis_type_pie.mdx
+++ b/api_docs/vis_type_pie.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie
title: "visTypePie"
image: https://source.unsplash.com/400x175/?github
description: API docs for the visTypePie plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie']
---
import visTypePieObj from './vis_type_pie.devdocs.json';
diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx
index dc086678eef9c..404a2076b6f40 100644
--- a/api_docs/vis_type_table.mdx
+++ b/api_docs/vis_type_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable
title: "visTypeTable"
image: https://source.unsplash.com/400x175/?github
description: API docs for the visTypeTable plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable']
---
import visTypeTableObj from './vis_type_table.devdocs.json';
diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx
index 9dcc9f47616e2..f620984802132 100644
--- a/api_docs/vis_type_timelion.mdx
+++ b/api_docs/vis_type_timelion.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion
title: "visTypeTimelion"
image: https://source.unsplash.com/400x175/?github
description: API docs for the visTypeTimelion plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion']
---
import visTypeTimelionObj from './vis_type_timelion.devdocs.json';
diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx
index afa4dde1d2824..85913051c6019 100644
--- a/api_docs/vis_type_timeseries.mdx
+++ b/api_docs/vis_type_timeseries.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries
title: "visTypeTimeseries"
image: https://source.unsplash.com/400x175/?github
description: API docs for the visTypeTimeseries plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries']
---
import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json';
diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx
index 58be26bca248e..bcab1b9c78ffd 100644
--- a/api_docs/vis_type_vega.mdx
+++ b/api_docs/vis_type_vega.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega
title: "visTypeVega"
image: https://source.unsplash.com/400x175/?github
description: API docs for the visTypeVega plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega']
---
import visTypeVegaObj from './vis_type_vega.devdocs.json';
diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx
index eb72cc8cd3952..26eaf9345f824 100644
--- a/api_docs/vis_type_vislib.mdx
+++ b/api_docs/vis_type_vislib.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib
title: "visTypeVislib"
image: https://source.unsplash.com/400x175/?github
description: API docs for the visTypeVislib plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib']
---
import visTypeVislibObj from './vis_type_vislib.devdocs.json';
diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx
index 40520f407d583..cff8e0967e4a0 100644
--- a/api_docs/vis_type_xy.mdx
+++ b/api_docs/vis_type_xy.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy
title: "visTypeXy"
image: https://source.unsplash.com/400x175/?github
description: API docs for the visTypeXy plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy']
---
import visTypeXyObj from './vis_type_xy.devdocs.json';
diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx
index 3fccae4657987..9ec5ef18c26ac 100644
--- a/api_docs/visualizations.mdx
+++ b/api_docs/visualizations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations
title: "visualizations"
image: https://source.unsplash.com/400x175/?github
description: API docs for the visualizations plugin
-date: 2024-02-19
+date: 2024-02-20
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations']
---
import visualizationsObj from './visualizations.devdocs.json';
diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc
index 00f09fb4afb38..88a10b5f64d00 100644
--- a/docs/CHANGELOG.asciidoc
+++ b/docs/CHANGELOG.asciidoc
@@ -10,6 +10,7 @@
Review important information about the {kib} 8.x releases.
+* <>
* <>
* <>
* <>
@@ -59,6 +60,35 @@ Review important information about the {kib} 8.x releases.
* <>
--
+[[release-notes-8.12.2]]
+== {kib} 8.12.2
+
+The 8.12.2 release includes the following bug fixes.
+
+[float]
+[[fixes-v8.12.2]]
+=== Bug Fixes
+Alerting::
+* Fixes Discover results when an alert excludes matches from previous runs ({kibana-pull}176690[#176690]).
+* Fixes bug where using select all on the rules list bypassed filters ({kibana-pull}176962[#176962]).
+Elastic Security::
+For the Elastic Security 8.12.2 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_].
+Fleet::
+* Fixes a popover about inactive agents not being dismissible ({kibana-pull}176929[#176929]).
+* Fixes logstash output being link:https://www.rfc-editor.org/rfc/rfc952[RFC-952] compliant ({kibana-pull}176298[#176298]).
+* Fixes assets being unintentionally moved to the default space during Fleet setup ({kibana-pull}176173[#176173]).
+* Fixes categories labels in integration overview ({kibana-pull}176141[#176141]).
+* Fixes the ability to delete agent policies with inactive agents from UI, the inactive agents need to be unenrolled first ({kibana-pull}175815[#175815]).
+Machine Learning::
+* Fixes Single Metric Viewer's zoom range settings in URL not being restored if the URL specifies a `forecastId` ({kibana-pull}176969[#176969]).
+* Fixes incorrect document count values in Top Values statistics ({kibana-pull}176328[#176328]).
+* Fixes color of markers in Single Metric Viewer when there is sparse data for anomaly detection ({kibana-pull}176303[#176303]).
+Management::
+* Fixes package showing 'Needs authorization' warning even after transform assets were authorized successfully ({kibana-pull}176647[#176647]).
+Observability::
+* Fixes and simplifies write access default behavior ({kibana-pull}177088[#177088]).
+* Fixes recall speed when using CVS output ({kibana-pull}176428[#176428]).
+
[[release-notes-8.12.1]]
== {kib} 8.12.1
diff --git a/docs/developer/advanced/upgrading-nodejs.asciidoc b/docs/developer/advanced/upgrading-nodejs.asciidoc
index 1126a0631265e..9c4d3d0d98c18 100644
--- a/docs/developer/advanced/upgrading-nodejs.asciidoc
+++ b/docs/developer/advanced/upgrading-nodejs.asciidoc
@@ -13,10 +13,6 @@ Before making a PR to upgrade Node.js, we must first <> syntax that {kib} maintains.
+the <> syntax that {kib} maintains.
The *Histogram* formatter is used only for the {ref}/histogram.html[histogram field type]. When you use the *Histogram* formatter,
you can apply the *Bytes*, *Number*, or *Percentage* format to aggregated data.
diff --git a/fleet_packages.json b/fleet_packages.json
index 2e5e5cd6be8a4..9a38a60bfc566 100644
--- a/fleet_packages.json
+++ b/fleet_packages.json
@@ -24,7 +24,7 @@
[
{
"name": "apm",
- "version": "8.13.0-preview-1705349441",
+ "version": "8.13.1-preview-1708411360",
"forceAlignStackVersion": true,
"allowSyncToPrerelease": true
},
diff --git a/package.json b/package.json
index d392bbe42b074..5b974431584e4 100644
--- a/package.json
+++ b/package.json
@@ -106,7 +106,7 @@
"@elastic/ecs": "^8.11.1",
"@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.9.1-canary.1",
"@elastic/ems-client": "8.5.1",
- "@elastic/eui": "93.0.0",
+ "@elastic/eui": "93.1.1",
"@elastic/filesaver": "1.1.2",
"@elastic/node-crypto": "1.2.1",
"@elastic/numeral": "^2.5.1",
@@ -805,6 +805,7 @@
"@kbn/threat-intelligence-plugin": "link:x-pack/plugins/threat_intelligence",
"@kbn/timelines-plugin": "link:x-pack/plugins/timelines",
"@kbn/timelion-grammar": "link:packages/kbn-timelion-grammar",
+ "@kbn/timerange": "link:packages/kbn-timerange",
"@kbn/tinymath": "link:packages/kbn-tinymath",
"@kbn/transform-plugin": "link:x-pack/plugins/transform",
"@kbn/translations-plugin": "link:x-pack/plugins/translations",
diff --git a/packages/core/apps/core-apps-server-internal/assets/legacy_styles.css b/packages/core/apps/core-apps-server-internal/assets/legacy_styles.css
new file mode 100644
index 0000000000000..55ed0fbfdf8ba
--- /dev/null
+++ b/packages/core/apps/core-apps-server-internal/assets/legacy_styles.css
@@ -0,0 +1,116 @@
+*, *:before, *:after {
+ box-sizing: border-box;
+}
+
+html, body, div, span, svg {
+ margin: 0;
+ padding: 0;
+ border: none;
+ vertical-align: baseline;
+}
+
+body, html {
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ display: block;
+}
+
+.kbnWelcomeView {
+ line-height: 1.5;
+ height: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.kbnWelcomeTitle {
+ color: #000;
+ font-size: 20px;
+ font-family: sans-serif;
+ margin: 16px 0;
+ animation: fadeIn 1s ease-in-out;
+ animation-fill-mode: forwards;
+ opacity: 0;
+ animation-delay: 1.0s;
+}
+
+.kbnWelcomeText {
+ display: block;
+ font-size: 14px;
+ font-family: sans-serif;
+ line-height: 40px !important;
+ height: 40px !important;
+ color: #98A2B3;
+}
+
+.kbnLoaderWrap {
+ text-align: center;
+ line-height: 1;
+ font-family: sans-serif;
+ letter-spacing: -.005em;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ font-kerning: normal;
+ font-weight: 400;
+}
+
+.kbnLoaderWrap svg {
+ width: 64px;
+ height: 64px;
+ margin: auto;
+ line-height: 1;
+}
+
+.kbnLoader path {
+ stroke: #FFFFFF;
+}
+
+.kbnProgress {
+ display: inline-block;
+ position: relative;
+ width: 32px;
+ height: 4px;
+ overflow: hidden;
+ line-height: 1;
+}
+
+.kbnProgress:before {
+ position: absolute;
+ content: '';
+ height: 4px;
+ width: 100%;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ transform: scaleX(0) translateX(0%);
+ animation: kbnProgress 1s cubic-bezier(.694, .0482, .335, 1) infinite;
+}
+
+@keyframes kbnProgress {
+ 0% {
+ transform: scaleX(1) translateX(-100%);
+ }
+
+ 100% {
+ transform: scaleX(1) translateX(100%);
+ }
+}
diff --git a/packages/core/apps/core-apps-server-internal/assets/legacy_theme.js b/packages/core/apps/core-apps-server-internal/assets/legacy_theme.js
new file mode 100644
index 0000000000000..ff26788c007e3
--- /dev/null
+++ b/packages/core/apps/core-apps-server-internal/assets/legacy_theme.js
@@ -0,0 +1,47 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+/* eslint-disable no-var */
+
+function systemIsDark() {
+ try {
+ return window.matchMedia('(prefers-color-scheme: dark)').matches;
+ } catch (e) {
+ return false;
+ }
+}
+
+function createInlineStyles(content) {
+ var head = document.getElementsByTagName('head')[0];
+ var style = document.createElement('style');
+ style.textContent = content;
+ head.appendChild(style);
+}
+
+// must be kept in sync with
+// packages/core/rendering/core-rendering-server-internal/src/views/styles.tsx
+
+var lightStyles = [
+ 'html { background-color: #F8FAFD; }',
+ '.kbnWelcomeText { color: #69707D; }',
+ '.kbnProgress { background-color: #F5F7FA; }',
+ '.kbnProgress:before { background-color: #006DE4; }',
+].join('\n');
+
+var darkStyles = [
+ 'html { background-color: #141519; }',
+ '.kbnWelcomeText { color: #98A2B3; }',
+ '.kbnProgress { background-color: #25262E; }',
+ '.kbnProgress:before { background-color: #1BA9F5; }',
+].join('\n');
+
+if (systemIsDark()) {
+ createInlineStyles(darkStyles);
+} else {
+ createInlineStyles(lightStyles);
+}
diff --git a/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap b/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap
index 50b4b74b0f3e5..87f13bee8f7c9 100644
--- a/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap
+++ b/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap
@@ -383,7 +383,6 @@ exports[`#start() returns \`Context\` component 1`] = `
"euiTourStepIndicator.isActive": "active",
"euiTourStepIndicator.isComplete": "complete",
"euiTourStepIndicator.isIncomplete": "incomplete",
- "euiTreeView.ariaLabel": [Function],
"euiTreeView.listNavigationInstructions": "You can quickly navigate this list using arrow keys.",
},
}
diff --git a/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx b/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx
index a8c4db74ba406..58f057e2fedcc 100644
--- a/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx
+++ b/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx
@@ -1737,11 +1737,6 @@ export const getEuiContextMapping = (): EuiTokensObject => {
values: { status, number },
description: 'Screen reader text describing the state of a tour step',
}),
- 'euiTreeView.ariaLabel': ({ nodeLabel, ariaLabel }: EuiValues) =>
- i18n.translate('core.euiTreeView.ariaLabel', {
- defaultMessage: '{nodeLabel} child of {ariaLabel}',
- values: { nodeLabel, ariaLabel },
- }),
'euiTreeView.listNavigationInstructions': i18n.translate(
'core.euiTreeView.listNavigationInstructions',
{
diff --git a/packages/core/injected-metadata/core-injected-metadata-browser-internal/src/types.ts b/packages/core/injected-metadata/core-injected-metadata-browser-internal/src/types.ts
index 3b996e68e50b3..bf77a2531660a 100644
--- a/packages/core/injected-metadata/core-injected-metadata-browser-internal/src/types.ts
+++ b/packages/core/injected-metadata/core-injected-metadata-browser-internal/src/types.ts
@@ -6,12 +6,12 @@
* Side Public License, v 1.
*/
-import { ThemeVersion } from '@kbn/ui-shared-deps-npm';
import {
InjectedMetadata,
InjectedMetadataClusterInfo,
InjectedMetadataExternalUrlPolicy,
InjectedMetadataPlugin,
+ InjectedMetadataTheme,
} from '@kbn/core-injected-metadata-common-internal';
import type { CustomBranding } from '@kbn/core-custom-branding-common';
@@ -39,10 +39,7 @@ export interface InternalInjectedMetadataSetup {
getExternalUrlConfig: () => {
policy: InjectedMetadataExternalUrlPolicy[];
};
- getTheme: () => {
- darkMode: boolean;
- version: ThemeVersion;
- };
+ getTheme: () => InjectedMetadataTheme;
getElasticsearchInfo: () => InjectedMetadataClusterInfo;
/**
* An array of frontend plugins in topological order.
diff --git a/packages/core/injected-metadata/core-injected-metadata-browser-internal/tsconfig.json b/packages/core/injected-metadata/core-injected-metadata-browser-internal/tsconfig.json
index 622e507492b11..5b8cc7fff4bc2 100644
--- a/packages/core/injected-metadata/core-injected-metadata-browser-internal/tsconfig.json
+++ b/packages/core/injected-metadata/core-injected-metadata-browser-internal/tsconfig.json
@@ -13,7 +13,6 @@
],
"kbn_references": [
"@kbn/std",
- "@kbn/ui-shared-deps-npm",
"@kbn/core-base-common",
"@kbn/core-injected-metadata-common-internal",
"@kbn/core-custom-branding-common",
diff --git a/packages/core/injected-metadata/core-injected-metadata-browser-mocks/src/injected_metadata_service.mock.ts b/packages/core/injected-metadata/core-injected-metadata-browser-mocks/src/injected_metadata_service.mock.ts
index 3d76d48cbdb9b..69148ca90e31b 100644
--- a/packages/core/injected-metadata/core-injected-metadata-browser-mocks/src/injected_metadata_service.mock.ts
+++ b/packages/core/injected-metadata/core-injected-metadata-browser-mocks/src/injected_metadata_service.mock.ts
@@ -55,7 +55,14 @@ const createSetupContractMock = () => {
},
} as any);
setupContract.getPlugins.mockReturnValue([]);
- setupContract.getTheme.mockReturnValue({ darkMode: false, version: 'v8' });
+ setupContract.getTheme.mockReturnValue({
+ darkMode: false,
+ version: 'v8',
+ stylesheetPaths: {
+ default: ['light-1.css'],
+ dark: ['dark-1.css'],
+ },
+ });
return setupContract;
};
diff --git a/packages/core/injected-metadata/core-injected-metadata-common-internal/index.ts b/packages/core/injected-metadata/core-injected-metadata-common-internal/index.ts
index e6cb215e87499..ce66a5189ac9a 100644
--- a/packages/core/injected-metadata/core-injected-metadata-common-internal/index.ts
+++ b/packages/core/injected-metadata/core-injected-metadata-common-internal/index.ts
@@ -10,5 +10,6 @@ export type {
InjectedMetadata,
InjectedMetadataClusterInfo,
InjectedMetadataExternalUrlPolicy,
+ InjectedMetadataTheme,
InjectedMetadataPlugin,
} from './src/types';
diff --git a/packages/core/injected-metadata/core-injected-metadata-common-internal/src/types.ts b/packages/core/injected-metadata/core-injected-metadata-common-internal/src/types.ts
index ad1b889a07b22..6d4e3df08a5ef 100644
--- a/packages/core/injected-metadata/core-injected-metadata-common-internal/src/types.ts
+++ b/packages/core/injected-metadata/core-injected-metadata-common-internal/src/types.ts
@@ -10,6 +10,7 @@ import type { PluginName, DiscoveredPlugin } from '@kbn/core-base-common';
import type { ThemeVersion } from '@kbn/ui-shared-deps-npm';
import type { EnvironmentMode, PackageInfo } from '@kbn/config';
import type { CustomBranding } from '@kbn/core-custom-branding-common';
+import type { DarkModeValue } from '@kbn/core-ui-settings-common';
import type { BrowserLoggingConfig } from '@kbn/core-logging-common-internal';
/** @internal */
@@ -36,6 +37,16 @@ export interface InjectedMetadataExternalUrlPolicy {
protocol?: string;
}
+/** @internal */
+export interface InjectedMetadataTheme {
+ darkMode: DarkModeValue;
+ version: ThemeVersion;
+ stylesheetPaths: {
+ default: string[];
+ dark: string[];
+ };
+}
+
/** @internal */
export interface InjectedMetadata {
version: string;
@@ -55,10 +66,7 @@ export interface InjectedMetadata {
i18n: {
translationsUrl: string;
};
- theme: {
- darkMode: boolean;
- version: ThemeVersion;
- };
+ theme: InjectedMetadataTheme;
csp: {
warnLegacyBrowsers: boolean;
};
diff --git a/packages/core/injected-metadata/core-injected-metadata-common-internal/tsconfig.json b/packages/core/injected-metadata/core-injected-metadata-common-internal/tsconfig.json
index 991449b03d2f7..85b7e12e85625 100644
--- a/packages/core/injected-metadata/core-injected-metadata-common-internal/tsconfig.json
+++ b/packages/core/injected-metadata/core-injected-metadata-common-internal/tsconfig.json
@@ -16,7 +16,8 @@
"@kbn/ui-shared-deps-npm",
"@kbn/core-base-common",
"@kbn/core-custom-branding-common",
- "@kbn/core-logging-common-internal"
+ "@kbn/core-logging-common-internal",
+ "@kbn/core-ui-settings-common"
],
"exclude": [
"target/**/*",
diff --git a/packages/core/rendering/core-rendering-server-internal/src/__snapshots__/rendering_service.test.ts.snap b/packages/core/rendering/core-rendering-server-internal/src/__snapshots__/rendering_service.test.ts.snap
index 7dd7b1739075c..250073318a3ac 100644
--- a/packages/core/rendering/core-rendering-server-internal/src/__snapshots__/rendering_service.test.ts.snap
+++ b/packages/core/rendering/core-rendering-server-internal/src/__snapshots__/rendering_service.test.ts.snap
@@ -62,6 +62,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -128,6 +138,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -198,6 +218,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -264,6 +294,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -330,6 +370,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -400,6 +450,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -466,6 +526,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -532,6 +602,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -607,6 +687,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -673,6 +763,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -748,6 +848,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -819,6 +929,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -885,6 +1005,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -960,6 +1090,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -1031,6 +1171,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
@@ -1102,6 +1252,16 @@ Object {
"serverBasePath": "/mock-server-basepath",
"theme": Object {
"darkMode": "theme:darkMode",
+ "stylesheetPaths": Object {
+ "dark": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ "default": Array [
+ "/style-1.css",
+ "/style-2.css",
+ ],
+ },
"version": "v8",
},
"uiPlugins": Array [],
diff --git a/packages/core/rendering/core-rendering-server-internal/src/bootstrap/bootstrap_renderer.test.ts b/packages/core/rendering/core-rendering-server-internal/src/bootstrap/bootstrap_renderer.test.ts
index e959b3aff356d..2f87f6dd27a37 100644
--- a/packages/core/rendering/core-rendering-server-internal/src/bootstrap/bootstrap_renderer.test.ts
+++ b/packages/core/rendering/core-rendering-server-internal/src/bootstrap/bootstrap_renderer.test.ts
@@ -269,6 +269,23 @@ describe('bootstrapRenderer', () => {
darkMode: true,
});
});
+
+ it('calls getThemeTag with the correct parameters when darkMode is `system`', async () => {
+ uiSettingsClient.get.mockResolvedValue('system');
+
+ const request = httpServerMock.createKibanaRequest();
+
+ await renderer({
+ request,
+ uiSettingsClient,
+ });
+
+ expect(getThemeTagMock).toHaveBeenCalledTimes(1);
+ expect(getThemeTagMock).toHaveBeenCalledWith({
+ themeVersion: 'v8',
+ darkMode: false,
+ });
+ });
});
describe('when the auth status is `unauthenticated`', () => {
diff --git a/packages/core/rendering/core-rendering-server-internal/src/bootstrap/bootstrap_renderer.ts b/packages/core/rendering/core-rendering-server-internal/src/bootstrap/bootstrap_renderer.ts
index 57cd247b4f6f5..82df9a484efd4 100644
--- a/packages/core/rendering/core-rendering-server-internal/src/bootstrap/bootstrap_renderer.ts
+++ b/packages/core/rendering/core-rendering-server-internal/src/bootstrap/bootstrap_renderer.ts
@@ -10,6 +10,7 @@ import { createHash } from 'crypto';
import { PackageInfo } from '@kbn/config';
import { ThemeVersion } from '@kbn/ui-shared-deps-npm';
import type { KibanaRequest, HttpAuth } from '@kbn/core-http-server';
+import { type DarkModeValue, parseDarkModeValue } from '@kbn/core-ui-settings-common';
import type { IUiSettingsClient } from '@kbn/core-ui-settings-server';
import type { UiPlugins } from '@kbn/core-plugins-base-server-internal';
import { InternalUserSettingsServiceSetup } from '@kbn/core-user-settings-server-internal';
@@ -56,7 +57,7 @@ export const bootstrapRendererFactory: BootstrapRendererFactory = ({
};
return async function bootstrapRenderer({ uiSettingsClient, request, isAnonymousPage = false }) {
- let darkMode = false;
+ let darkMode: DarkModeValue = false;
const themeVersion: ThemeVersion = 'v8';
try {
@@ -68,13 +69,18 @@ export const bootstrapRendererFactory: BootstrapRendererFactory = ({
if (userSettingDarkMode !== undefined) {
darkMode = userSettingDarkMode;
} else {
- darkMode = await uiSettingsClient.get('theme:darkMode');
+ darkMode = parseDarkModeValue(await uiSettingsClient.get('theme:darkMode'));
}
}
} catch (e) {
// just use the default values in case of connectivity issues with ES
}
+ // keeping legacy themeTag support - note that the browser is now overriding it during setup.
+ if (darkMode === 'system') {
+ darkMode = false;
+ }
+
const themeTag = getThemeTag({
themeVersion,
darkMode,
diff --git a/packages/core/rendering/core-rendering-server-internal/src/render_utils.test.ts b/packages/core/rendering/core-rendering-server-internal/src/render_utils.test.ts
index e52e18e03776b..46b880dbb257a 100644
--- a/packages/core/rendering/core-rendering-server-internal/src/render_utils.test.ts
+++ b/packages/core/rendering/core-rendering-server-internal/src/render_utils.test.ts
@@ -6,23 +6,65 @@
* Side Public License, v 1.
*/
-import { getStylesheetPaths } from './render_utils';
+import { getThemeStylesheetPaths, getCommonStylesheetPaths, getScriptPaths } from './render_utils';
+
+describe('getScriptPaths', () => {
+ it('returns the correct list when darkMode is `system`', () => {
+ expect(
+ getScriptPaths({
+ baseHref: '/base-path',
+ darkMode: 'system',
+ })
+ ).toEqual(['/base-path/ui/legacy_theme.js']);
+ });
+
+ it('returns the correct list when darkMode is `true`', () => {
+ expect(
+ getScriptPaths({
+ baseHref: '/base-path',
+ darkMode: true,
+ })
+ ).toEqual([]);
+ });
+
+ it('returns the correct list when darkMode is `false`', () => {
+ expect(
+ getScriptPaths({
+ baseHref: '/base-path',
+ darkMode: false,
+ })
+ ).toEqual([]);
+ });
+});
+
+describe('getCommonStylesheetPaths', () => {
+ it('returns the correct list', () => {
+ expect(
+ getCommonStylesheetPaths({
+ baseHref: '/base-path',
+ })
+ ).toMatchInlineSnapshot(`
+ Array [
+ "/base-path/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css",
+ "/base-path/ui/legacy_styles.css",
+ ]
+ `);
+ });
+});
describe('getStylesheetPaths', () => {
describe('when darkMode is `true`', () => {
describe('when themeVersion is `v8`', () => {
it('returns the correct list', () => {
expect(
- getStylesheetPaths({
+ getThemeStylesheetPaths({
darkMode: true,
themeVersion: 'v8',
baseHref: '/base-path/buildShaShort',
- buildNum: 17,
})
).toMatchInlineSnapshot(`
Array [
"/base-path/buildShaShort/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.dark.css",
- "/base-path/buildShaShort/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css",
"/base-path/buildShaShort/ui/legacy_dark_theme.min.css",
]
`);
@@ -33,16 +75,14 @@ describe('getStylesheetPaths', () => {
describe('when themeVersion is `v8`', () => {
it('returns the correct list', () => {
expect(
- getStylesheetPaths({
+ getThemeStylesheetPaths({
darkMode: false,
themeVersion: 'v8',
baseHref: '/base-path/buildShaShort',
- buildNum: 69,
})
).toMatchInlineSnapshot(`
Array [
"/base-path/buildShaShort/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css",
- "/base-path/buildShaShort/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css",
"/base-path/buildShaShort/ui/legacy_light_theme.min.css",
]
`);
diff --git a/packages/core/rendering/core-rendering-server-internal/src/render_utils.ts b/packages/core/rendering/core-rendering-server-internal/src/render_utils.ts
index 6408b986a7c87..f4ce68885ddb6 100644
--- a/packages/core/rendering/core-rendering-server-internal/src/render_utils.ts
+++ b/packages/core/rendering/core-rendering-server-internal/src/render_utils.ts
@@ -16,6 +16,7 @@ import {
config as loggingConfigDef,
type LoggingConfigWithBrowserType,
} from '@kbn/core-logging-server-internal';
+import type { DarkModeValue } from '@kbn/core-ui-settings-common';
export const getSettingValue = (
settingName: string,
@@ -31,15 +32,35 @@ export const getSettingValue = (
export const getBundlesHref = (baseHref: string): string => `${baseHref}/bundles`;
-export const getStylesheetPaths = ({
- themeVersion,
+export const getScriptPaths = ({
+ baseHref,
+ darkMode,
+}: {
+ baseHref: string;
+ darkMode: DarkModeValue;
+}) => {
+ if (darkMode === 'system') {
+ return [`${baseHref}/ui/legacy_theme.js`];
+ } else {
+ return [];
+ }
+};
+
+export const getCommonStylesheetPaths = ({ baseHref }: { baseHref: string }) => {
+ const bundlesHref = getBundlesHref(baseHref);
+ return [
+ `${bundlesHref}/kbn-ui-shared-deps-src/${UiSharedDepsSrc.cssDistFilename}`,
+ `${baseHref}/ui/legacy_styles.css`,
+ ];
+};
+
+export const getThemeStylesheetPaths = ({
darkMode,
+ themeVersion,
baseHref,
- buildNum,
}: {
- themeVersion: UiSharedDepsNpm.ThemeVersion;
darkMode: boolean;
- buildNum: number;
+ themeVersion: UiSharedDepsNpm.ThemeVersion;
baseHref: string;
}) => {
const bundlesHref = getBundlesHref(baseHref);
@@ -49,14 +70,12 @@ export const getStylesheetPaths = ({
`${bundlesHref}/kbn-ui-shared-deps-npm/${UiSharedDepsNpm.darkCssDistFilename(
themeVersion
)}`,
- `${bundlesHref}/kbn-ui-shared-deps-src/${UiSharedDepsSrc.cssDistFilename}`,
`${baseHref}/ui/legacy_dark_theme.min.css`,
]
: [
`${bundlesHref}/kbn-ui-shared-deps-npm/${UiSharedDepsNpm.lightCssDistFilename(
themeVersion
)}`,
- `${bundlesHref}/kbn-ui-shared-deps-src/${UiSharedDepsSrc.cssDistFilename}`,
`${baseHref}/ui/legacy_light_theme.min.css`,
]),
];
diff --git a/packages/core/rendering/core-rendering-server-internal/src/rendering_service.test.mocks.ts b/packages/core/rendering/core-rendering-server-internal/src/rendering_service.test.mocks.ts
index e4abd8b3ff95b..e7d95312ed56a 100644
--- a/packages/core/rendering/core-rendering-server-internal/src/rendering_service.test.mocks.ts
+++ b/packages/core/rendering/core-rendering-server-internal/src/rendering_service.test.mocks.ts
@@ -16,11 +16,15 @@ jest.doMock('./bootstrap', () => ({
}));
export const getSettingValueMock = jest.fn();
-export const getStylesheetPathsMock = jest.fn();
+export const getCommonStylesheetPathsMock = jest.fn();
+export const getThemeStylesheetPathsMock = jest.fn();
+export const getScriptPathsMock = jest.fn();
export const getBrowserLoggingConfigMock = jest.fn();
jest.doMock('./render_utils', () => ({
getSettingValue: getSettingValueMock,
- getStylesheetPaths: getStylesheetPathsMock,
+ getCommonStylesheetPaths: getCommonStylesheetPathsMock,
+ getThemeStylesheetPaths: getThemeStylesheetPathsMock,
+ getScriptPaths: getScriptPathsMock,
getBrowserLoggingConfig: getBrowserLoggingConfigMock,
}));
diff --git a/packages/core/rendering/core-rendering-server-internal/src/rendering_service.test.ts b/packages/core/rendering/core-rendering-server-internal/src/rendering_service.test.ts
index 4cedc33b1b79d..7ebb97fb0779b 100644
--- a/packages/core/rendering/core-rendering-server-internal/src/rendering_service.test.ts
+++ b/packages/core/rendering/core-rendering-server-internal/src/rendering_service.test.ts
@@ -10,7 +10,9 @@ import {
registerBootstrapRouteMock,
bootstrapRendererMock,
getSettingValueMock,
- getStylesheetPathsMock,
+ getCommonStylesheetPathsMock,
+ getThemeStylesheetPathsMock,
+ getScriptPathsMock,
getBrowserLoggingConfigMock,
} from './rendering_service.test.mocks';
@@ -167,7 +169,7 @@ function renderTestCases(
expect(data.legacyMetadata.globalUiSettings.user).toEqual({}); // user settings are not injected
});
- it('calls `getStylesheetPaths` with the correct parameters', async () => {
+ it('calls `getCommonStylesheetPaths` with the correct parameters', async () => {
getSettingValueMock.mockImplementation((settingName: string) => {
if (settingName === 'theme:darkMode') {
return true;
@@ -178,12 +180,51 @@ function renderTestCases(
const [render] = await getRender();
await render(createKibanaRequest(), uiSettings);
- expect(getStylesheetPathsMock).toHaveBeenCalledTimes(1);
- expect(getStylesheetPathsMock).toHaveBeenCalledWith({
+ expect(getCommonStylesheetPathsMock).toHaveBeenCalledTimes(1);
+ expect(getCommonStylesheetPathsMock).toHaveBeenCalledWith({
+ baseHref: '/mock-server-basepath',
+ });
+ });
+
+ it('calls `getScriptPaths` with the correct parameters', async () => {
+ getSettingValueMock.mockImplementation((settingName: string) => {
+ if (settingName === 'theme:darkMode') {
+ return true;
+ }
+ return settingName;
+ });
+
+ const [render] = await getRender();
+ await render(createKibanaRequest(), uiSettings);
+
+ expect(getScriptPathsMock).toHaveBeenCalledTimes(1);
+ expect(getScriptPathsMock).toHaveBeenCalledWith({
+ darkMode: true,
+ baseHref: '/mock-server-basepath',
+ });
+ });
+
+ it('calls `getThemeStylesheetPaths` with the correct parameters', async () => {
+ getSettingValueMock.mockImplementation((settingName: string) => {
+ if (settingName === 'theme:darkMode') {
+ return true;
+ }
+ return settingName;
+ });
+
+ const [render] = await getRender();
+ await render(createKibanaRequest(), uiSettings);
+
+ expect(getThemeStylesheetPathsMock).toHaveBeenCalledTimes(2);
+ expect(getThemeStylesheetPathsMock).toHaveBeenCalledWith({
darkMode: true,
themeVersion: 'v8',
baseHref: '/mock-server-basepath',
- buildNum: expect.any(Number),
+ });
+ expect(getThemeStylesheetPathsMock).toHaveBeenCalledWith({
+ darkMode: false,
+ themeVersion: 'v8',
+ baseHref: '/mock-server-basepath',
});
});
@@ -263,11 +304,10 @@ function renderDarkModeTestCases(
const [render] = await getRender();
await render(createKibanaRequest(), uiSettings);
- expect(getStylesheetPathsMock).toHaveBeenCalledWith({
+ expect(getThemeStylesheetPathsMock).toHaveBeenCalledWith({
darkMode: true,
themeVersion: 'v8',
baseHref: '/mock-server-basepath',
- buildNum: expect.any(Number),
});
});
@@ -289,11 +329,10 @@ function renderDarkModeTestCases(
const [render] = await getRender();
await render(createKibanaRequest(), uiSettings);
- expect(getStylesheetPathsMock).toHaveBeenCalledWith({
+ expect(getThemeStylesheetPathsMock).toHaveBeenCalledWith({
darkMode: false,
themeVersion: 'v8',
baseHref: '/mock-server-basepath',
- buildNum: expect.any(Number),
});
});
@@ -313,11 +352,10 @@ function renderDarkModeTestCases(
const [render] = await getRender();
await render(createKibanaRequest(), uiSettings);
- expect(getStylesheetPathsMock).toHaveBeenCalledWith({
+ expect(getThemeStylesheetPathsMock).toHaveBeenCalledWith({
darkMode: false,
themeVersion: 'v8',
baseHref: '/mock-server-basepath',
- buildNum: expect.any(Number),
});
});
@@ -337,11 +375,10 @@ function renderDarkModeTestCases(
const [render] = await getRender();
await render(createKibanaRequest(), uiSettings);
- expect(getStylesheetPathsMock).toHaveBeenCalledWith({
+ expect(getThemeStylesheetPathsMock).toHaveBeenCalledWith({
darkMode: true,
themeVersion: 'v8',
baseHref: '/mock-server-basepath',
- buildNum: expect.any(Number),
});
});
@@ -361,11 +398,10 @@ function renderDarkModeTestCases(
const [render] = await getRender();
await render(createKibanaRequest(), uiSettings);
- expect(getStylesheetPathsMock).toHaveBeenCalledWith({
+ expect(getThemeStylesheetPathsMock).toHaveBeenCalledWith({
darkMode: false,
themeVersion: 'v8',
baseHref: '/mock-server-basepath',
- buildNum: expect.any(Number),
});
});
@@ -385,11 +421,10 @@ function renderDarkModeTestCases(
const [render] = await getRender();
await render(createKibanaRequest(), uiSettings);
- expect(getStylesheetPathsMock).toHaveBeenCalledWith({
+ expect(getThemeStylesheetPathsMock).toHaveBeenCalledWith({
darkMode: false,
themeVersion: 'v8',
baseHref: '/mock-server-basepath',
- buildNum: expect.any(Number),
});
});
@@ -409,11 +444,10 @@ function renderDarkModeTestCases(
const [render] = await getRender();
await render(createKibanaRequest(), uiSettings);
- expect(getStylesheetPathsMock).toHaveBeenCalledWith({
+ expect(getThemeStylesheetPathsMock).toHaveBeenCalledWith({
darkMode: true,
themeVersion: 'v8',
baseHref: '/mock-server-basepath',
- buildNum: expect.any(Number),
});
});
});
@@ -436,8 +470,10 @@ describe('RenderingService', () => {
jest.clearAllMocks();
service = new RenderingService(mockRenderingServiceParams);
- getSettingValueMock.mockReset().mockImplementation((settingName: string) => settingName);
- getStylesheetPathsMock.mockReset().mockReturnValue(['/style-1.css', '/style-2.css']);
+ getSettingValueMock.mockImplementation((settingName: string) => settingName);
+ getCommonStylesheetPathsMock.mockReturnValue(['/common-1.css']);
+ getThemeStylesheetPathsMock.mockReturnValue(['/style-1.css', '/style-2.css']);
+ getScriptPathsMock.mockReturnValue(['/script-1.js']);
getBrowserLoggingConfigMock.mockReset().mockReturnValue({});
});
diff --git a/packages/core/rendering/core-rendering-server-internal/src/rendering_service.tsx b/packages/core/rendering/core-rendering-server-internal/src/rendering_service.tsx
index 3dde32bc72972..dcf7162b481f8 100644
--- a/packages/core/rendering/core-rendering-server-internal/src/rendering_service.tsx
+++ b/packages/core/rendering/core-rendering-server-internal/src/rendering_service.tsx
@@ -17,8 +17,12 @@ import type { CoreContext } from '@kbn/core-base-server-internal';
import type { KibanaRequest, HttpAuth } from '@kbn/core-http-server';
import type { IUiSettingsClient } from '@kbn/core-ui-settings-server';
import type { UiPlugins } from '@kbn/core-plugins-base-server-internal';
-import { CustomBranding } from '@kbn/core-custom-branding-common';
-import { UserProvidedValues } from '@kbn/core-ui-settings-common';
+import type { CustomBranding } from '@kbn/core-custom-branding-common';
+import {
+ type UserProvidedValues,
+ type DarkModeValue,
+ parseDarkModeValue,
+} from '@kbn/core-ui-settings-common';
import { Template } from './views';
import {
IRenderOptions,
@@ -29,7 +33,13 @@ import {
RenderingMetadata,
} from './types';
import { registerBootstrapRoute, bootstrapRendererFactory } from './bootstrap';
-import { getSettingValue, getStylesheetPaths, getBrowserLoggingConfig } from './render_utils';
+import {
+ getSettingValue,
+ getCommonStylesheetPaths,
+ getThemeStylesheetPaths,
+ getScriptPaths,
+ getBrowserLoggingConfig,
+} from './render_utils';
import { filterUiPlugins } from './filter_ui_plugins';
import type { InternalRenderingRequestHandlerContext } from './internal_types';
@@ -42,6 +52,8 @@ type RenderOptions =
userSettings?: never;
});
+const themeVersion: ThemeVersion = 'v8';
+
/** @internal */
export class RenderingService {
constructor(private readonly coreContext: CoreContext) {}
@@ -113,7 +125,6 @@ export class RenderingService {
mode: this.coreContext.env.mode,
packageInfo: this.coreContext.env.packageInfo,
};
- const buildNum = env.packageInfo.buildNum;
const staticAssetsHrefBase = http.staticAssets.getHrefBase();
const basePath = http.basePath.get(request);
const { serverBasePath, publicBaseUrl } = http.basePath;
@@ -160,29 +171,32 @@ export class RenderingService {
// swallow error
}
- let userSettingDarkMode: boolean | undefined;
-
- if (!isAnonymousPage) {
- userSettingDarkMode = await userSettings?.getUserSettingDarkMode(request);
- }
-
- let darkMode: boolean;
+ // dark mode
+ const userSettingDarkMode = isAnonymousPage
+ ? undefined
+ : await userSettings?.getUserSettingDarkMode(request);
const isThemeOverridden = settings.user['theme:darkMode']?.isOverridden ?? false;
+ let darkMode: DarkModeValue;
if (userSettingDarkMode !== undefined && !isThemeOverridden) {
darkMode = userSettingDarkMode;
} else {
- darkMode = getSettingValue('theme:darkMode', settings, Boolean);
+ darkMode = getSettingValue('theme:darkMode', settings, parseDarkModeValue);
}
- const themeVersion: ThemeVersion = 'v8';
-
- const stylesheetPaths = getStylesheetPaths({
+ const themeStylesheetPaths = (mode: boolean) =>
+ getThemeStylesheetPaths({
+ darkMode: mode,
+ themeVersion,
+ baseHref: staticAssetsHrefBase,
+ });
+ const commonStylesheetPaths = getCommonStylesheetPaths({
+ baseHref: staticAssetsHrefBase,
+ });
+ const scriptPaths = getScriptPaths({
darkMode,
- themeVersion,
baseHref: staticAssetsHrefBase,
- buildNum,
});
const loggingConfig = await getBrowserLoggingConfig(this.coreContext.configService);
@@ -195,9 +209,10 @@ export class RenderingService {
bootstrapScriptUrl: `${basePath}/${bootstrapScript}`,
i18n: i18n.translate,
locale: i18n.getLocale(),
- darkMode,
themeVersion,
- stylesheetPaths,
+ darkMode,
+ stylesheetPaths: commonStylesheetPaths,
+ scriptPaths,
customBranding: {
faviconSVG: branding?.faviconSVG,
faviconPNG: branding?.faviconPNG,
@@ -223,6 +238,10 @@ export class RenderingService {
theme: {
darkMode,
version: themeVersion,
+ stylesheetPaths: {
+ default: themeStylesheetPaths(false),
+ dark: themeStylesheetPaths(true),
+ },
},
customBranding: {
logo: branding?.logo,
diff --git a/packages/core/rendering/core-rendering-server-internal/src/types.ts b/packages/core/rendering/core-rendering-server-internal/src/types.ts
index 60dab17a20142..e96353816e199 100644
--- a/packages/core/rendering/core-rendering-server-internal/src/types.ts
+++ b/packages/core/rendering/core-rendering-server-internal/src/types.ts
@@ -16,6 +16,7 @@ import type {
} from '@kbn/core-http-server-internal';
import type { InternalElasticsearchServiceSetup } from '@kbn/core-elasticsearch-server-internal';
import type { InternalStatusServiceSetup } from '@kbn/core-status-server-internal';
+import type { DarkModeValue } from '@kbn/core-ui-settings-common';
import type { IUiSettingsClient } from '@kbn/core-ui-settings-server';
import type { UiPlugins } from '@kbn/core-plugins-base-server-internal';
import type { InternalCustomBrandingSetup } from '@kbn/core-custom-branding-server-internal';
@@ -29,9 +30,10 @@ export interface RenderingMetadata {
bootstrapScriptUrl: string;
i18n: typeof i18n.translate;
locale: string;
- darkMode: boolean;
themeVersion: ThemeVersion;
+ darkMode: DarkModeValue;
stylesheetPaths: string[];
+ scriptPaths: string[];
injectedMetadata: InjectedMetadata;
customBranding: CustomBranding;
}
diff --git a/packages/core/rendering/core-rendering-server-internal/src/views/styles.tsx b/packages/core/rendering/core-rendering-server-internal/src/views/styles.tsx
index 64c2941a280f8..0d268496e8688 100644
--- a/packages/core/rendering/core-rendering-server-internal/src/views/styles.tsx
+++ b/packages/core/rendering/core-rendering-server-internal/src/views/styles.tsx
@@ -7,16 +7,17 @@
*/
import React, { FC } from 'react';
+import type { DarkModeValue } from '@kbn/core-ui-settings-common';
interface Props {
- darkMode: boolean;
+ darkMode: DarkModeValue;
stylesheetPaths: string[];
}
export const Styles: FC = ({ darkMode, stylesheetPaths }) => {
return (
<>
-
+ {darkMode !== 'system' && }
{stylesheetPaths.map((path) => (
))}
@@ -25,136 +26,30 @@ export const Styles: FC = ({ darkMode, stylesheetPaths }) => {
};
const InlineStyles: FC<{ darkMode: boolean }> = ({ darkMode }) => {
+ // must be kept in sync with
+ // packages/core/apps/core-apps-server-internal/assets/legacy_theme.js
/* eslint-disable react/no-danger */
return (
diff --git a/packages/core/rendering/core-rendering-server-internal/src/views/template.tsx b/packages/core/rendering/core-rendering-server-internal/src/views/template.tsx
index 569c8968a6c3a..c1db2fd69d7a8 100644
--- a/packages/core/rendering/core-rendering-server-internal/src/views/template.tsx
+++ b/packages/core/rendering/core-rendering-server-internal/src/views/template.tsx
@@ -7,12 +7,11 @@
*/
import React, { FunctionComponent, createElement } from 'react';
-
import { EUI_STYLES_GLOBAL, EUI_STYLES_UTILS } from '@kbn/core-base-common';
import { RenderingMetadata } from '../types';
import { Fonts } from './fonts';
-import { Styles } from './styles';
import { Logo } from './logo';
+import { Styles } from './styles';
interface Props {
metadata: RenderingMetadata;
@@ -24,6 +23,7 @@ export const Template: FunctionComponent = ({
locale,
darkMode,
stylesheetPaths,
+ scriptPaths,
injectedMetadata,
i18n,
bootstrapScriptUrl,
@@ -56,6 +56,9 @@ export const Template: FunctionComponent = ({
+ {scriptPaths.map((path) => (
+
+ ))}
{/* Inject stylesheets into the before scripts so that KP plugins with bundled styles will override them */}
diff --git a/packages/core/theme/core-theme-browser-internal/src/system_theme.ts b/packages/core/theme/core-theme-browser-internal/src/system_theme.ts
new file mode 100644
index 0000000000000..b4ffee953c141
--- /dev/null
+++ b/packages/core/theme/core-theme-browser-internal/src/system_theme.ts
@@ -0,0 +1,26 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+export const systemThemeIsDark = (): boolean => {
+ return window.matchMedia('(prefers-color-scheme: dark)').matches;
+};
+
+export const onSystemThemeChange = (handler: (darkMode: boolean) => void) => {
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {
+ handler(e.matches);
+ });
+};
+
+export const browsersSupportsSystemTheme = (): boolean => {
+ try {
+ const matchMedia = window.matchMedia('(prefers-color-scheme: dark)');
+ return matchMedia.matches !== undefined && matchMedia.addEventListener !== undefined;
+ } catch (e) {
+ return false;
+ }
+};
diff --git a/packages/core/theme/core-theme-browser-internal/src/theme_service.test.mocks.ts b/packages/core/theme/core-theme-browser-internal/src/theme_service.test.mocks.ts
new file mode 100644
index 0000000000000..736c68186f631
--- /dev/null
+++ b/packages/core/theme/core-theme-browser-internal/src/theme_service.test.mocks.ts
@@ -0,0 +1,41 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+export const systemThemeIsDarkMock = jest.fn();
+export const onSystemThemeChangeMock = jest.fn();
+export const browsersSupportsSystemThemeMock = jest.fn();
+
+jest.doMock('./system_theme', () => {
+ const actual = jest.requireActual('./utils');
+ return {
+ ...actual,
+ systemThemeIsDark: systemThemeIsDarkMock,
+ onSystemThemeChange: onSystemThemeChangeMock,
+ browsersSupportsSystemTheme: browsersSupportsSystemThemeMock,
+ };
+});
+
+export const createStyleSheetMock = jest.fn();
+
+jest.doMock('./utils', () => {
+ const actual = jest.requireActual('./utils');
+ return {
+ ...actual,
+ createStyleSheet: createStyleSheetMock,
+ };
+});
+
+export const setDarkModeMock = jest.fn();
+
+jest.doMock('@kbn/ui-theme', () => {
+ const actual = jest.requireActual('@kbn/ui-theme');
+ return {
+ ...actual,
+ _setDarkMode: setDarkModeMock,
+ };
+});
diff --git a/packages/core/theme/core-theme-browser-internal/src/theme_service.test.ts b/packages/core/theme/core-theme-browser-internal/src/theme_service.test.ts
index e9b58ca12ceea..3db9a965b5042 100644
--- a/packages/core/theme/core-theme-browser-internal/src/theme_service.test.ts
+++ b/packages/core/theme/core-theme-browser-internal/src/theme_service.test.ts
@@ -6,10 +6,24 @@
* Side Public License, v 1.
*/
+import {
+ browsersSupportsSystemThemeMock,
+ onSystemThemeChangeMock,
+ systemThemeIsDarkMock,
+ createStyleSheetMock,
+ setDarkModeMock,
+} from './theme_service.test.mocks';
+
import { firstValueFrom } from 'rxjs';
import { injectedMetadataServiceMock } from '@kbn/core-injected-metadata-browser-mocks';
import { ThemeService } from './theme_service';
+declare global {
+ interface Window {
+ __kbnThemeTag__: string;
+ }
+}
+
describe('ThemeService', () => {
let themeService: ThemeService;
let injectedMetadata: ReturnType;
@@ -17,24 +31,204 @@ describe('ThemeService', () => {
beforeEach(() => {
themeService = new ThemeService();
injectedMetadata = injectedMetadataServiceMock.createSetupContract();
+
+ browsersSupportsSystemThemeMock.mockReset().mockReturnValue(true);
+ systemThemeIsDarkMock.mockReset().mockReturnValue(false);
+ onSystemThemeChangeMock.mockReset();
+ createStyleSheetMock.mockReset().mockReturnValue({ remove: jest.fn() });
+ setDarkModeMock.mockReset();
});
describe('#setup', () => {
- it('exposes a `theme$` observable with the values provided by the injected metadata', async () => {
- injectedMetadata.getTheme.mockReturnValue({ version: 'v8', darkMode: true });
- const { theme$ } = themeService.setup({ injectedMetadata });
- const theme = await firstValueFrom(theme$);
- expect(theme).toEqual({
- darkMode: true,
+ describe('darkMode is `false`', () => {
+ beforeEach(() => {
+ injectedMetadata.getTheme.mockReturnValue({
+ version: 'v8',
+ darkMode: false,
+ stylesheetPaths: {
+ dark: ['dark-1.css'],
+ default: ['light-1.css'],
+ },
+ });
+ });
+
+ it('exposed the correct `$theme` value from the observable', async () => {
+ const { theme$ } = themeService.setup({ injectedMetadata });
+ const theme = await firstValueFrom(theme$);
+ expect(theme).toEqual({
+ darkMode: false,
+ });
+ });
+
+ it('sets __kbnThemeTag__ to the correct value', async () => {
+ themeService.setup({ injectedMetadata });
+ expect(window.__kbnThemeTag__).toEqual('v8light');
+ });
+
+ it('calls createStyleSheet with the correct parameters', async () => {
+ themeService.setup({ injectedMetadata });
+ expect(createStyleSheetMock).toHaveBeenCalledTimes(1);
+ expect(createStyleSheetMock).toHaveBeenCalledWith({ href: 'light-1.css' });
+ });
+
+ it('calls _setDarkMode with the correct parameters', async () => {
+ themeService.setup({ injectedMetadata });
+ expect(setDarkModeMock).toHaveBeenCalledTimes(1);
+ expect(setDarkModeMock).toHaveBeenCalledWith(false);
+ });
+
+ it('does not call onSystemThemeChange', async () => {
+ themeService.setup({ injectedMetadata });
+ expect(onSystemThemeChangeMock).not.toHaveBeenCalled();
});
});
- it('#getTheme() returns the current theme', async () => {
- injectedMetadata.getTheme.mockReturnValue({ version: 'v8', darkMode: true });
- const setup = themeService.setup({ injectedMetadata });
- const theme = setup.getTheme();
- expect(theme).toEqual({
- darkMode: true,
+ describe('darkMode is `true`', () => {
+ beforeEach(() => {
+ injectedMetadata.getTheme.mockReturnValue({
+ version: 'v8',
+ darkMode: true,
+ stylesheetPaths: {
+ dark: ['dark-1.css'],
+ default: ['light-1.css'],
+ },
+ });
+ });
+
+ it('exposed the correct `$theme` value from the observable', async () => {
+ const { theme$ } = themeService.setup({ injectedMetadata });
+ const theme = await firstValueFrom(theme$);
+ expect(theme).toEqual({
+ darkMode: true,
+ });
+ });
+
+ it('sets __kbnThemeTag__ to the correct value', async () => {
+ themeService.setup({ injectedMetadata });
+ expect(window.__kbnThemeTag__).toEqual('v8dark');
+ });
+
+ it('calls createStyleSheet with the correct parameters', async () => {
+ themeService.setup({ injectedMetadata });
+ expect(createStyleSheetMock).toHaveBeenCalledTimes(1);
+ expect(createStyleSheetMock).toHaveBeenCalledWith({ href: 'dark-1.css' });
+ });
+
+ it('calls _setDarkMode with the correct parameters', async () => {
+ themeService.setup({ injectedMetadata });
+ expect(setDarkModeMock).toHaveBeenCalledTimes(1);
+ expect(setDarkModeMock).toHaveBeenCalledWith(true);
+ });
+
+ it('does not call onSystemThemeChange', async () => {
+ themeService.setup({ injectedMetadata });
+ expect(onSystemThemeChangeMock).not.toHaveBeenCalled();
+ });
+ });
+
+ describe('darkMode is `system`', () => {
+ beforeEach(() => {
+ injectedMetadata.getTheme.mockReturnValue({
+ version: 'v8',
+ darkMode: 'system',
+ stylesheetPaths: {
+ dark: ['dark-1.css'],
+ default: ['light-1.css'],
+ },
+ });
+ });
+
+ describe('when browser does not support system theme', () => {
+ beforeEach(() => {
+ browsersSupportsSystemThemeMock.mockReturnValue(false);
+ });
+
+ it('fallbacks to default light theme', async () => {
+ const { theme$ } = themeService.setup({ injectedMetadata });
+ const theme = await firstValueFrom(theme$);
+
+ expect(theme).toEqual({
+ darkMode: false,
+ });
+
+ expect(window.__kbnThemeTag__).toEqual('v8light');
+
+ expect(setDarkModeMock).toHaveBeenCalledTimes(1);
+ expect(setDarkModeMock).toHaveBeenCalledWith(false);
+
+ expect(createStyleSheetMock).toHaveBeenCalledTimes(1);
+ expect(createStyleSheetMock).toHaveBeenCalledWith({ href: 'light-1.css' });
+
+ expect(onSystemThemeChangeMock).not.toHaveBeenCalled();
+ });
+ });
+
+ describe('when browser supports system theme', () => {
+ beforeEach(() => {
+ browsersSupportsSystemThemeMock.mockReturnValue(true);
+ });
+
+ it('uses the system theme when light', async () => {
+ systemThemeIsDarkMock.mockReturnValue(false);
+
+ const { theme$ } = themeService.setup({ injectedMetadata });
+ const theme = await firstValueFrom(theme$);
+
+ expect(theme).toEqual({
+ darkMode: false,
+ });
+
+ expect(window.__kbnThemeTag__).toEqual('v8light');
+
+ expect(setDarkModeMock).toHaveBeenCalledTimes(1);
+ expect(setDarkModeMock).toHaveBeenCalledWith(false);
+
+ expect(createStyleSheetMock).toHaveBeenCalledTimes(1);
+ expect(createStyleSheetMock).toHaveBeenCalledWith({ href: 'light-1.css' });
+ });
+
+ it('uses the system theme when dark', async () => {
+ systemThemeIsDarkMock.mockReturnValue(true);
+
+ const { theme$ } = themeService.setup({ injectedMetadata });
+ const theme = await firstValueFrom(theme$);
+
+ expect(theme).toEqual({
+ darkMode: true,
+ });
+
+ expect(window.__kbnThemeTag__).toEqual('v8dark');
+
+ expect(setDarkModeMock).toHaveBeenCalledTimes(1);
+ expect(setDarkModeMock).toHaveBeenCalledWith(true);
+
+ expect(createStyleSheetMock).toHaveBeenCalledTimes(1);
+ expect(createStyleSheetMock).toHaveBeenCalledWith({ href: 'dark-1.css' });
+ });
+
+ // unsupported and disabled for now
+ it.skip('reacts to system theme change', async () => {
+ systemThemeIsDarkMock.mockReturnValue(false);
+
+ let handler: (mode: boolean) => void;
+ onSystemThemeChangeMock.mockImplementation((_handler: (mode: boolean) => void) => {
+ handler = _handler;
+ });
+
+ const { theme$ } = themeService.setup({ injectedMetadata });
+
+ expect(await firstValueFrom(theme$)).toEqual({
+ darkMode: false,
+ });
+ expect(window.__kbnThemeTag__).toEqual('v8light');
+
+ handler!(true);
+
+ expect(await firstValueFrom(theme$)).toEqual({
+ darkMode: true,
+ });
+ expect(window.__kbnThemeTag__).toEqual('v8dark');
+ });
});
});
});
@@ -47,20 +241,17 @@ describe('ThemeService', () => {
});
it('exposes a `theme$` observable with the values provided by the injected metadata', async () => {
- injectedMetadata.getTheme.mockReturnValue({ version: 'v8', darkMode: true });
- themeService.setup({ injectedMetadata });
- const { theme$ } = themeService.start();
- const theme = await firstValueFrom(theme$);
- expect(theme).toEqual({
+ injectedMetadata.getTheme.mockReturnValue({
+ version: 'v8',
darkMode: true,
+ stylesheetPaths: {
+ dark: [],
+ default: [],
+ },
});
- });
-
- it('#getTheme() returns the current theme', async () => {
- injectedMetadata.getTheme.mockReturnValue({ version: 'v8', darkMode: true });
themeService.setup({ injectedMetadata });
- const start = themeService.start();
- const theme = start.getTheme();
+ const { theme$ } = themeService.start();
+ const theme = await firstValueFrom(theme$);
expect(theme).toEqual({
darkMode: true,
});
diff --git a/packages/core/theme/core-theme-browser-internal/src/theme_service.ts b/packages/core/theme/core-theme-browser-internal/src/theme_service.ts
index b4768ec05e550..c02074be77c3b 100644
--- a/packages/core/theme/core-theme-browser-internal/src/theme_service.ts
+++ b/packages/core/theme/core-theme-browser-internal/src/theme_service.ts
@@ -6,9 +6,13 @@
* Side Public License, v 1.
*/
-import { Subject, of } from 'rxjs';
+import { of } from 'rxjs';
+import { _setDarkMode } from '@kbn/ui-theme';
+import type { InjectedMetadataTheme } from '@kbn/core-injected-metadata-common-internal';
import type { InternalInjectedMetadataSetup } from '@kbn/core-injected-metadata-browser-internal';
import type { CoreTheme, ThemeServiceSetup, ThemeServiceStart } from '@kbn/core-theme-browser';
+import { systemThemeIsDark, browsersSupportsSystemTheme } from './system_theme';
+import { createStyleSheet } from './utils';
/** @internal */
export interface ThemeServiceSetupDeps {
@@ -18,15 +22,26 @@ export interface ThemeServiceSetupDeps {
/** @internal */
export class ThemeService {
private contract?: ThemeServiceSetup;
- private stop$ = new Subject();
+ private themeMetadata?: InjectedMetadataTheme;
+ private stylesheets: HTMLLinkElement[] = [];
public setup({ injectedMetadata }: ThemeServiceSetupDeps): ThemeServiceSetup {
- const themeMeta = injectedMetadata.getTheme();
- const theme: CoreTheme = { darkMode: themeMeta.darkMode };
+ const themeMetadata = injectedMetadata.getTheme();
+ this.themeMetadata = themeMetadata;
+
+ let theme: CoreTheme;
+ if (themeMetadata.darkMode === 'system' && browsersSupportsSystemTheme()) {
+ theme = { darkMode: systemThemeIsDark() };
+ } else {
+ const darkMode = themeMetadata.darkMode === 'system' ? false : themeMetadata.darkMode;
+ theme = { darkMode };
+ }
+
+ this.applyTheme(theme);
this.contract = {
- theme$: of(theme),
getTheme: () => theme,
+ theme$: of(theme),
};
return this.contract;
@@ -40,7 +55,28 @@ export class ThemeService {
return this.contract;
}
- public stop() {
- this.stop$.next();
+ public stop() {}
+
+ private applyTheme(theme: CoreTheme) {
+ const { darkMode } = theme;
+ this.stylesheets.forEach((stylesheet) => {
+ stylesheet.remove();
+ });
+ this.stylesheets = [];
+ const newStylesheets = darkMode
+ ? this.themeMetadata!.stylesheetPaths.dark
+ : this.themeMetadata!.stylesheetPaths.default;
+
+ newStylesheets.forEach((stylesheet) => {
+ this.stylesheets.push(createStyleSheet({ href: stylesheet }));
+ });
+
+ _setDarkMode(darkMode);
+ updateKbnThemeTag(darkMode);
}
}
+
+const updateKbnThemeTag = (darkMode: boolean) => {
+ const globals: any = typeof window === 'undefined' ? {} : window;
+ globals.__kbnThemeTag__ = darkMode ? 'v8dark' : 'v8light';
+};
diff --git a/packages/core/theme/core-theme-browser-internal/src/utils.ts b/packages/core/theme/core-theme-browser-internal/src/utils.ts
new file mode 100644
index 0000000000000..4b9612d3c3185
--- /dev/null
+++ b/packages/core/theme/core-theme-browser-internal/src/utils.ts
@@ -0,0 +1,18 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+export const createStyleSheet = ({ href }: { href: string }) => {
+ const head = document.getElementsByTagName('head')[0];
+ const link = document.createElement('link');
+ link.rel = 'stylesheet';
+ link.type = 'text/css';
+ link.href = href;
+ link.media = 'all';
+ head.appendChild(link);
+ return link;
+};
diff --git a/packages/core/theme/core-theme-browser-internal/tsconfig.json b/packages/core/theme/core-theme-browser-internal/tsconfig.json
index d17b04c510ad3..8bd8824eb872b 100644
--- a/packages/core/theme/core-theme-browser-internal/tsconfig.json
+++ b/packages/core/theme/core-theme-browser-internal/tsconfig.json
@@ -18,6 +18,8 @@
"@kbn/core-injected-metadata-browser-mocks",
"@kbn/test-jest-helpers",
"@kbn/react-kibana-context-theme",
+ "@kbn/core-injected-metadata-common-internal",
+ "@kbn/ui-theme",
],
"exclude": [
"target/**/*",
diff --git a/packages/core/ui-settings/core-ui-settings-common/index.ts b/packages/core/ui-settings/core-ui-settings-common/index.ts
index 02604e122a2ae..e0dd04dec853a 100644
--- a/packages/core/ui-settings/core-ui-settings-common/index.ts
+++ b/packages/core/ui-settings/core-ui-settings-common/index.ts
@@ -14,5 +14,6 @@ export type {
UserProvidedValues,
UiSettingsScope,
} from './src/ui_settings';
+export { type DarkModeValue, parseDarkModeValue } from './src/dark_mode';
export { TIMEZONE_OPTIONS } from './src/timezones';
diff --git a/packages/core/ui-settings/core-ui-settings-common/src/dark_mode.test.ts b/packages/core/ui-settings/core-ui-settings-common/src/dark_mode.test.ts
new file mode 100644
index 0000000000000..5aba0648152ba
--- /dev/null
+++ b/packages/core/ui-settings/core-ui-settings-common/src/dark_mode.test.ts
@@ -0,0 +1,32 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import { parseDarkModeValue } from './dark_mode';
+
+describe('parseDarkModeValue', () => {
+ it('should return true when rawValue is true or "true" or "enabled"', () => {
+ expect(parseDarkModeValue(true)).toBe(true);
+ expect(parseDarkModeValue('true')).toBe(true);
+ expect(parseDarkModeValue('enabled')).toBe(true);
+ });
+
+ it('should return false when rawValue is false or "false" or "disabled"', () => {
+ expect(parseDarkModeValue(false)).toBe(false);
+ expect(parseDarkModeValue('false')).toBe(false);
+ expect(parseDarkModeValue('disabled')).toBe(false);
+ });
+
+ it('should return "system" when rawValue is "system"', () => {
+ expect(parseDarkModeValue('system')).toBe('system');
+ });
+
+ it('should return Boolean(rawValue) when rawValue is not one of the predefined values', () => {
+ expect(parseDarkModeValue('randomText')).toBe(true);
+ expect(parseDarkModeValue('')).toBe(false);
+ });
+});
diff --git a/packages/core/ui-settings/core-ui-settings-common/src/dark_mode.ts b/packages/core/ui-settings/core-ui-settings-common/src/dark_mode.ts
new file mode 100644
index 0000000000000..f2114c698e38b
--- /dev/null
+++ b/packages/core/ui-settings/core-ui-settings-common/src/dark_mode.ts
@@ -0,0 +1,28 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+/**
+ * The list of possible values for the dark mode UI setting.
+ * - false: dark mode is disabled
+ * - true: dark mode is enabled
+ * - "system": dark mode will follow the user system preference.
+ */
+export type DarkModeValue = true | false | 'system';
+
+export const parseDarkModeValue = (rawValue: unknown): DarkModeValue => {
+ if (rawValue === true || rawValue === 'true' || rawValue === 'enabled') {
+ return true;
+ }
+ if (rawValue === false || rawValue === 'false' || rawValue === 'disabled') {
+ return false;
+ }
+ if (rawValue === 'system') {
+ return 'system';
+ }
+ return Boolean(rawValue);
+};
diff --git a/packages/core/ui-settings/core-ui-settings-server-internal/src/settings/theme.test.ts b/packages/core/ui-settings/core-ui-settings-server-internal/src/settings/theme.test.ts
index 78770b3ae62c7..08e1c0ed94948 100644
--- a/packages/core/ui-settings/core-ui-settings-server-internal/src/settings/theme.test.ts
+++ b/packages/core/ui-settings/core-ui-settings-server-internal/src/settings/theme.test.ts
@@ -18,15 +18,16 @@ describe('theme settings', () => {
describe('theme:darkMode', () => {
const validate = getValidationFn(themeSettings['theme:darkMode']);
- it('should only accept boolean values', () => {
+ it('should only accept expected values', () => {
expect(() => validate(true)).not.toThrow();
expect(() => validate(false)).not.toThrow();
- expect(() => validate('foo')).toThrowErrorMatchingInlineSnapshot(
- `"expected value of type [boolean] but got [string]"`
- );
- expect(() => validate(12)).toThrowErrorMatchingInlineSnapshot(
- `"expected value of type [boolean] but got [number]"`
- );
+
+ expect(() => validate('enabled')).not.toThrow();
+ expect(() => validate('disabled')).not.toThrow();
+ expect(() => validate('system')).not.toThrow();
+
+ expect(() => validate('foo')).toThrowError();
+ expect(() => validate(12)).toThrowError();
});
});
});
@@ -35,22 +36,22 @@ describe('process.env.KBN_OPTIMIZER_THEMES handling', () => {
it('defaults to properties of first tag', () => {
process.env.KBN_OPTIMIZER_THEMES = 'v8dark,v8light';
let settings = getThemeSettings({ isDist: false });
- expect(settings['theme:darkMode'].value).toBe(true);
+ expect(settings['theme:darkMode'].value).toBe('enabled');
process.env.KBN_OPTIMIZER_THEMES = 'v8light,v8dark';
settings = getThemeSettings({ isDist: false });
- expect(settings['theme:darkMode'].value).toBe(false);
+ expect(settings['theme:darkMode'].value).toBe('disabled');
});
it('ignores the value when isDist is undefined', () => {
process.env.KBN_OPTIMIZER_THEMES = 'v8dark';
const settings = getThemeSettings({ isDist: undefined });
- expect(settings['theme:darkMode'].value).toBe(false);
+ expect(settings['theme:darkMode'].value).toBe('disabled');
});
it('ignores the value when isDist is true', () => {
process.env.KBN_OPTIMIZER_THEMES = 'v8dark';
const settings = getThemeSettings({ isDist: true });
- expect(settings['theme:darkMode'].value).toBe(false);
+ expect(settings['theme:darkMode'].value).toBe('disabled');
});
});
diff --git a/packages/core/ui-settings/core-ui-settings-server-internal/src/settings/theme.ts b/packages/core/ui-settings/core-ui-settings-server-internal/src/settings/theme.ts
index 1cece7db0bfed..5b7263817762f 100644
--- a/packages/core/ui-settings/core-ui-settings-server-internal/src/settings/theme.ts
+++ b/packages/core/ui-settings/core-ui-settings-server-internal/src/settings/theme.ts
@@ -46,12 +46,35 @@ export const getThemeSettings = (
name: i18n.translate('core.ui_settings.params.darkModeTitle', {
defaultMessage: 'Dark mode',
}),
- value: defaultDarkMode,
+ value: defaultDarkMode ? 'enabled' : 'disabled',
description: i18n.translate('core.ui_settings.params.darkModeText', {
- defaultMessage: `Enable a dark mode for the Kibana UI. A page refresh is required for the setting to be applied.`,
+ defaultMessage:
+ `The UI theme that the Kibana UI should use. ` +
+ `Set to 'enabled' or 'disabled' to enable or disable the dark theme. ` +
+ `Set to 'system' to have the Kibana UI theme follow the system theme. ` +
+ `A page refresh is required for the setting to be applied.`,
}),
+ type: 'select',
+ options: ['enabled', 'disabled', 'system'],
+ optionLabels: {
+ enabled: i18n.translate('core.ui_settings.params.darkMode.options.enabled', {
+ defaultMessage: `Enabled`,
+ }),
+ disabled: i18n.translate('core.ui_settings.params.darkMode.options.disabled', {
+ defaultMessage: `Disabled`,
+ }),
+ system: i18n.translate('core.ui_settings.params.darkMode.options.system', {
+ defaultMessage: `Sync with system`,
+ }),
+ },
requiresPageReload: true,
- schema: schema.boolean(),
+ schema: schema.oneOf([
+ schema.literal('enabled'),
+ schema.literal('disabled'),
+ schema.literal('system'),
+ // for backward-compatibility
+ schema.boolean(),
+ ]),
},
/**
* Theme is sticking around as there are still a number of places reading it and
diff --git a/packages/core/user-settings/core-user-settings-server-internal/tsconfig.json b/packages/core/user-settings/core-user-settings-server-internal/tsconfig.json
index 089523eaaecc1..a35a40a0d3c49 100644
--- a/packages/core/user-settings/core-user-settings-server-internal/tsconfig.json
+++ b/packages/core/user-settings/core-user-settings-server-internal/tsconfig.json
@@ -14,6 +14,7 @@
"@kbn/logging",
"@kbn/core-http-server-mocks",
"@kbn/core-user-settings-server",
+ "@kbn/core-ui-settings-common",
],
"include": [
"**/*.ts",
diff --git a/packages/core/user-settings/core-user-settings-server-internal/user_settings_service.ts b/packages/core/user-settings/core-user-settings-server-internal/user_settings_service.ts
index 1ffcdf20a50c3..309f0defd22e2 100644
--- a/packages/core/user-settings/core-user-settings-server-internal/user_settings_service.ts
+++ b/packages/core/user-settings/core-user-settings-server-internal/user_settings_service.ts
@@ -9,6 +9,7 @@
import { CoreContext } from '@kbn/core-base-server-internal';
import { Logger } from '@kbn/logging';
import { KibanaRequest } from '@kbn/core-http-server';
+import { DarkModeValue } from '@kbn/core-ui-settings-common';
import { UserProfileSettingsClientContract } from '@kbn/core-user-settings-server';
/**
@@ -16,7 +17,7 @@ import { UserProfileSettingsClientContract } from '@kbn/core-user-settings-serve
*/
export interface InternalUserSettingsServiceSetup {
setUserProfileSettings: (client: UserProfileSettingsClientContract) => void;
- getUserSettingDarkMode: (request: KibanaRequest) => Promise;
+ getUserSettingDarkMode: (request: KibanaRequest) => Promise;
}
export class UserSettingsService {
@@ -52,7 +53,7 @@ export class UserSettingsService {
private async getUserSettingDarkMode(
userSettings: Record
- ): Promise {
+ ): Promise {
let result;
if (userSettings?.darkMode) {
diff --git a/packages/deeplinks/observability/locators/observability_logs_explorer.ts b/packages/deeplinks/observability/locators/observability_logs_explorer.ts
index 85efc95e36312..09157ca860fe0 100644
--- a/packages/deeplinks/observability/locators/observability_logs_explorer.ts
+++ b/packages/deeplinks/observability/locators/observability_logs_explorer.ts
@@ -38,3 +38,13 @@ export interface SingleDatasetLocatorParams extends DatasetLocatorParams {
*/
dataset: string;
}
+
+// Data view locator
+export const OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR_ID = 'OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR';
+
+export interface ObsLogsExplorerDataViewLocatorParams extends DatasetLocatorParams {
+ /**
+ * Data view id to select
+ */
+ id: string;
+}
diff --git a/packages/kbn-check-mappings-update-cli/current_fields.json b/packages/kbn-check-mappings-update-cli/current_fields.json
index 01a7de459affb..e43f7cab87278 100644
--- a/packages/kbn-check-mappings-update-cli/current_fields.json
+++ b/packages/kbn-check-mappings-update-cli/current_fields.json
@@ -549,6 +549,7 @@
"shipper",
"ssl",
"timeout",
+ "topic",
"topics",
"topics.topic",
"topics.when",
diff --git a/packages/kbn-check-mappings-update-cli/current_mappings.json b/packages/kbn-check-mappings-update-cli/current_mappings.json
index aaf612ed8ed56..24012cccb9fcc 100644
--- a/packages/kbn-check-mappings-update-cli/current_mappings.json
+++ b/packages/kbn-check-mappings-update-cli/current_mappings.json
@@ -1851,6 +1851,10 @@
"timeout": {
"type": "integer"
},
+ "topic": {
+ "index": false,
+ "type": "text"
+ },
"topics": {
"dynamic": false,
"properties": {
diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.g4 b/packages/kbn-monaco/src/esql/antlr/esql_parser.g4
index 819a85e8ffa52..ede884d6311d7 100644
--- a/packages/kbn-monaco/src/esql/antlr/esql_parser.g4
+++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.g4
@@ -237,7 +237,7 @@ string
;
comparisonOperator
- : EQ | CIEQ | NEQ | LT | LTE | GT | GTE
+ : EQ | NEQ | LT | LTE | GT | GTE
;
explainCommand
diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.interp b/packages/kbn-monaco/src/esql/antlr/esql_parser.interp
index 4f87655f0d7ff..fe9f47f619f88 100644
--- a/packages/kbn-monaco/src/esql/antlr/esql_parser.interp
+++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.interp
@@ -269,4 +269,4 @@ enrichWithClause
atn:
-[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 107, 513, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 114, 10, 3, 12, 3, 14, 3, 117, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 123, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 138, 10, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 150, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 157, 10, 7, 12, 7, 14, 7, 160, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 167, 10, 7, 3, 7, 3, 7, 5, 7, 171, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 179, 10, 7, 12, 7, 14, 7, 182, 11, 7, 3, 8, 3, 8, 5, 8, 186, 10, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 193, 10, 8, 3, 8, 3, 8, 3, 8, 5, 8, 198, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 205, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 211, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 219, 10, 10, 12, 10, 14, 10, 222, 11, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 231, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 239, 10, 12, 12, 12, 14, 12, 242, 11, 12, 5, 12, 244, 10, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 7, 14, 254, 10, 14, 12, 14, 14, 14, 257, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 264, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 7, 16, 270, 10, 16, 12, 16, 14, 16, 273, 11, 16, 3, 16, 5, 16, 276, 10, 16, 3, 17, 3, 17, 5, 17, 280, 10, 17, 3, 18, 3, 18, 3, 18, 3, 18, 7, 18, 286, 10, 18, 12, 18, 14, 18, 289, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 5, 21, 300, 10, 21, 3, 21, 3, 21, 5, 21, 304, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 310, 10, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 7, 24, 317, 10, 24, 12, 24, 14, 24, 320, 11, 24, 3, 25, 3, 25, 3, 25, 7, 25, 325, 10, 25, 12, 25, 14, 25, 328, 11, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 349, 10, 29, 12, 29, 14, 29, 352, 11, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 360, 10, 29, 12, 29, 14, 29, 363, 11, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 371, 10, 29, 12, 29, 14, 29, 374, 11, 29, 3, 29, 3, 29, 5, 29, 378, 10, 29, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 7, 31, 387, 10, 31, 12, 31, 14, 31, 390, 11, 31, 3, 32, 3, 32, 5, 32, 394, 10, 32, 3, 32, 3, 32, 5, 32, 398, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 7, 33, 404, 10, 33, 12, 33, 14, 33, 407, 11, 33, 3, 34, 3, 34, 3, 34, 3, 34, 7, 34, 413, 10, 34, 12, 34, 14, 34, 416, 11, 34, 3, 35, 3, 35, 3, 35, 3, 35, 7, 35, 422, 10, 35, 12, 35, 14, 35, 425, 11, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 435, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 7, 40, 447, 10, 40, 12, 40, 14, 40, 450, 11, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 5, 43, 460, 10, 43, 3, 44, 5, 44, 463, 10, 44, 3, 44, 3, 44, 3, 45, 5, 45, 468, 10, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 487, 10, 50, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 493, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 7, 51, 499, 10, 51, 12, 51, 14, 51, 502, 11, 51, 5, 51, 504, 10, 51, 3, 52, 3, 52, 3, 52, 5, 52, 509, 10, 52, 3, 52, 3, 52, 3, 52, 2, 2, 5, 4, 12, 18, 53, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 80, 2, 82, 2, 84, 2, 86, 2, 88, 2, 90, 2, 92, 2, 94, 2, 96, 2, 98, 2, 100, 2, 102, 2, 2, 11, 3, 2, 60, 61, 3, 2, 62, 64, 4, 2, 68, 68, 73, 73, 3, 2, 67, 68, 4, 2, 68, 68, 107, 107, 4, 2, 33, 33, 36, 36, 3, 2, 39, 40, 4, 2, 38, 38, 52, 52, 3, 2, 53, 59, 2, 538, 2, 104, 3, 2, 2, 2, 4, 107, 3, 2, 2, 2, 6, 122, 3, 2, 2, 2, 8, 137, 3, 2, 2, 2, 10, 139, 3, 2, 2, 2, 12, 170, 3, 2, 2, 2, 14, 197, 3, 2, 2, 2, 16, 204, 3, 2, 2, 2, 18, 210, 3, 2, 2, 2, 20, 230, 3, 2, 2, 2, 22, 232, 3, 2, 2, 2, 24, 247, 3, 2, 2, 2, 26, 250, 3, 2, 2, 2, 28, 263, 3, 2, 2, 2, 30, 265, 3, 2, 2, 2, 32, 279, 3, 2, 2, 2, 34, 281, 3, 2, 2, 2, 36, 290, 3, 2, 2, 2, 38, 294, 3, 2, 2, 2, 40, 297, 3, 2, 2, 2, 42, 305, 3, 2, 2, 2, 44, 311, 3, 2, 2, 2, 46, 313, 3, 2, 2, 2, 48, 321, 3, 2, 2, 2, 50, 329, 3, 2, 2, 2, 52, 331, 3, 2, 2, 2, 54, 333, 3, 2, 2, 2, 56, 377, 3, 2, 2, 2, 58, 379, 3, 2, 2, 2, 60, 382, 3, 2, 2, 2, 62, 391, 3, 2, 2, 2, 64, 399, 3, 2, 2, 2, 66, 408, 3, 2, 2, 2, 68, 417, 3, 2, 2, 2, 70, 426, 3, 2, 2, 2, 72, 430, 3, 2, 2, 2, 74, 436, 3, 2, 2, 2, 76, 440, 3, 2, 2, 2, 78, 443, 3, 2, 2, 2, 80, 451, 3, 2, 2, 2, 82, 455, 3, 2, 2, 2, 84, 459, 3, 2, 2, 2, 86, 462, 3, 2, 2, 2, 88, 467, 3, 2, 2, 2, 90, 471, 3, 2, 2, 2, 92, 473, 3, 2, 2, 2, 94, 475, 3, 2, 2, 2, 96, 478, 3, 2, 2, 2, 98, 486, 3, 2, 2, 2, 100, 488, 3, 2, 2, 2, 102, 508, 3, 2, 2, 2, 104, 105, 5, 4, 3, 2, 105, 106, 7, 2, 2, 3, 106, 3, 3, 2, 2, 2, 107, 108, 8, 3, 1, 2, 108, 109, 5, 6, 4, 2, 109, 115, 3, 2, 2, 2, 110, 111, 12, 3, 2, 2, 111, 112, 7, 27, 2, 2, 112, 114, 5, 8, 5, 2, 113, 110, 3, 2, 2, 2, 114, 117, 3, 2, 2, 2, 115, 113, 3, 2, 2, 2, 115, 116, 3, 2, 2, 2, 116, 5, 3, 2, 2, 2, 117, 115, 3, 2, 2, 2, 118, 123, 5, 94, 48, 2, 119, 123, 5, 30, 16, 2, 120, 123, 5, 24, 13, 2, 121, 123, 5, 98, 50, 2, 122, 118, 3, 2, 2, 2, 122, 119, 3, 2, 2, 2, 122, 120, 3, 2, 2, 2, 122, 121, 3, 2, 2, 2, 123, 7, 3, 2, 2, 2, 124, 138, 5, 38, 20, 2, 125, 138, 5, 42, 22, 2, 126, 138, 5, 58, 30, 2, 127, 138, 5, 64, 33, 2, 128, 138, 5, 60, 31, 2, 129, 138, 5, 40, 21, 2, 130, 138, 5, 10, 6, 2, 131, 138, 5, 66, 34, 2, 132, 138, 5, 68, 35, 2, 133, 138, 5, 72, 37, 2, 134, 138, 5, 74, 38, 2, 135, 138, 5, 100, 51, 2, 136, 138, 5, 76, 39, 2, 137, 124, 3, 2, 2, 2, 137, 125, 3, 2, 2, 2, 137, 126, 3, 2, 2, 2, 137, 127, 3, 2, 2, 2, 137, 128, 3, 2, 2, 2, 137, 129, 3, 2, 2, 2, 137, 130, 3, 2, 2, 2, 137, 131, 3, 2, 2, 2, 137, 132, 3, 2, 2, 2, 137, 133, 3, 2, 2, 2, 137, 134, 3, 2, 2, 2, 137, 135, 3, 2, 2, 2, 137, 136, 3, 2, 2, 2, 138, 9, 3, 2, 2, 2, 139, 140, 7, 19, 2, 2, 140, 141, 5, 12, 7, 2, 141, 11, 3, 2, 2, 2, 142, 143, 8, 7, 1, 2, 143, 144, 7, 45, 2, 2, 144, 171, 5, 12, 7, 9, 145, 171, 5, 16, 9, 2, 146, 171, 5, 14, 8, 2, 147, 149, 5, 16, 9, 2, 148, 150, 7, 45, 2, 2, 149, 148, 3, 2, 2, 2, 149, 150, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 152, 7, 42, 2, 2, 152, 153, 7, 41, 2, 2, 153, 158, 5, 16, 9, 2, 154, 155, 7, 35, 2, 2, 155, 157, 5, 16, 9, 2, 156, 154, 3, 2, 2, 2, 157, 160, 3, 2, 2, 2, 158, 156, 3, 2, 2, 2, 158, 159, 3, 2, 2, 2, 159, 161, 3, 2, 2, 2, 160, 158, 3, 2, 2, 2, 161, 162, 7, 51, 2, 2, 162, 171, 3, 2, 2, 2, 163, 164, 5, 16, 9, 2, 164, 166, 7, 43, 2, 2, 165, 167, 7, 45, 2, 2, 166, 165, 3, 2, 2, 2, 166, 167, 3, 2, 2, 2, 167, 168, 3, 2, 2, 2, 168, 169, 7, 46, 2, 2, 169, 171, 3, 2, 2, 2, 170, 142, 3, 2, 2, 2, 170, 145, 3, 2, 2, 2, 170, 146, 3, 2, 2, 2, 170, 147, 3, 2, 2, 2, 170, 163, 3, 2, 2, 2, 171, 180, 3, 2, 2, 2, 172, 173, 12, 6, 2, 2, 173, 174, 7, 32, 2, 2, 174, 179, 5, 12, 7, 7, 175, 176, 12, 5, 2, 2, 176, 177, 7, 48, 2, 2, 177, 179, 5, 12, 7, 6, 178, 172, 3, 2, 2, 2, 178, 175, 3, 2, 2, 2, 179, 182, 3, 2, 2, 2, 180, 178, 3, 2, 2, 2, 180, 181, 3, 2, 2, 2, 181, 13, 3, 2, 2, 2, 182, 180, 3, 2, 2, 2, 183, 185, 5, 16, 9, 2, 184, 186, 7, 45, 2, 2, 185, 184, 3, 2, 2, 2, 185, 186, 3, 2, 2, 2, 186, 187, 3, 2, 2, 2, 187, 188, 7, 44, 2, 2, 188, 189, 5, 90, 46, 2, 189, 198, 3, 2, 2, 2, 190, 192, 5, 16, 9, 2, 191, 193, 7, 45, 2, 2, 192, 191, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 194, 3, 2, 2, 2, 194, 195, 7, 50, 2, 2, 195, 196, 5, 90, 46, 2, 196, 198, 3, 2, 2, 2, 197, 183, 3, 2, 2, 2, 197, 190, 3, 2, 2, 2, 198, 15, 3, 2, 2, 2, 199, 205, 5, 18, 10, 2, 200, 201, 5, 18, 10, 2, 201, 202, 5, 92, 47, 2, 202, 203, 5, 18, 10, 2, 203, 205, 3, 2, 2, 2, 204, 199, 3, 2, 2, 2, 204, 200, 3, 2, 2, 2, 205, 17, 3, 2, 2, 2, 206, 207, 8, 10, 1, 2, 207, 211, 5, 20, 11, 2, 208, 209, 9, 2, 2, 2, 209, 211, 5, 18, 10, 5, 210, 206, 3, 2, 2, 2, 210, 208, 3, 2, 2, 2, 211, 220, 3, 2, 2, 2, 212, 213, 12, 4, 2, 2, 213, 214, 9, 3, 2, 2, 214, 219, 5, 18, 10, 5, 215, 216, 12, 3, 2, 2, 216, 217, 9, 2, 2, 2, 217, 219, 5, 18, 10, 4, 218, 212, 3, 2, 2, 2, 218, 215, 3, 2, 2, 2, 219, 222, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 220, 221, 3, 2, 2, 2, 221, 19, 3, 2, 2, 2, 222, 220, 3, 2, 2, 2, 223, 231, 5, 56, 29, 2, 224, 231, 5, 46, 24, 2, 225, 231, 5, 22, 12, 2, 226, 227, 7, 41, 2, 2, 227, 228, 5, 12, 7, 2, 228, 229, 7, 51, 2, 2, 229, 231, 3, 2, 2, 2, 230, 223, 3, 2, 2, 2, 230, 224, 3, 2, 2, 2, 230, 225, 3, 2, 2, 2, 230, 226, 3, 2, 2, 2, 231, 21, 3, 2, 2, 2, 232, 233, 5, 50, 26, 2, 233, 243, 7, 41, 2, 2, 234, 244, 7, 62, 2, 2, 235, 240, 5, 12, 7, 2, 236, 237, 7, 35, 2, 2, 237, 239, 5, 12, 7, 2, 238, 236, 3, 2, 2, 2, 239, 242, 3, 2, 2, 2, 240, 238, 3, 2, 2, 2, 240, 241, 3, 2, 2, 2, 241, 244, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 243, 234, 3, 2, 2, 2, 243, 235, 3, 2, 2, 2, 243, 244, 3, 2, 2, 2, 244, 245, 3, 2, 2, 2, 245, 246, 7, 51, 2, 2, 246, 23, 3, 2, 2, 2, 247, 248, 7, 15, 2, 2, 248, 249, 5, 26, 14, 2, 249, 25, 3, 2, 2, 2, 250, 255, 5, 28, 15, 2, 251, 252, 7, 35, 2, 2, 252, 254, 5, 28, 15, 2, 253, 251, 3, 2, 2, 2, 254, 257, 3, 2, 2, 2, 255, 253, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 27, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 258, 264, 5, 12, 7, 2, 259, 260, 5, 46, 24, 2, 260, 261, 7, 34, 2, 2, 261, 262, 5, 12, 7, 2, 262, 264, 3, 2, 2, 2, 263, 258, 3, 2, 2, 2, 263, 259, 3, 2, 2, 2, 264, 29, 3, 2, 2, 2, 265, 266, 7, 8, 2, 2, 266, 271, 5, 44, 23, 2, 267, 268, 7, 35, 2, 2, 268, 270, 5, 44, 23, 2, 269, 267, 3, 2, 2, 2, 270, 273, 3, 2, 2, 2, 271, 269, 3, 2, 2, 2, 271, 272, 3, 2, 2, 2, 272, 275, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 274, 276, 5, 32, 17, 2, 275, 274, 3, 2, 2, 2, 275, 276, 3, 2, 2, 2, 276, 31, 3, 2, 2, 2, 277, 280, 5, 34, 18, 2, 278, 280, 5, 36, 19, 2, 279, 277, 3, 2, 2, 2, 279, 278, 3, 2, 2, 2, 280, 33, 3, 2, 2, 2, 281, 282, 7, 72, 2, 2, 282, 287, 5, 44, 23, 2, 283, 284, 7, 35, 2, 2, 284, 286, 5, 44, 23, 2, 285, 283, 3, 2, 2, 2, 286, 289, 3, 2, 2, 2, 287, 285, 3, 2, 2, 2, 287, 288, 3, 2, 2, 2, 288, 35, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 290, 291, 7, 65, 2, 2, 291, 292, 5, 34, 18, 2, 292, 293, 7, 66, 2, 2, 293, 37, 3, 2, 2, 2, 294, 295, 7, 6, 2, 2, 295, 296, 5, 26, 14, 2, 296, 39, 3, 2, 2, 2, 297, 299, 7, 18, 2, 2, 298, 300, 5, 26, 14, 2, 299, 298, 3, 2, 2, 2, 299, 300, 3, 2, 2, 2, 300, 303, 3, 2, 2, 2, 301, 302, 7, 31, 2, 2, 302, 304, 5, 26, 14, 2, 303, 301, 3, 2, 2, 2, 303, 304, 3, 2, 2, 2, 304, 41, 3, 2, 2, 2, 305, 306, 7, 10, 2, 2, 306, 309, 5, 26, 14, 2, 307, 308, 7, 31, 2, 2, 308, 310, 5, 26, 14, 2, 309, 307, 3, 2, 2, 2, 309, 310, 3, 2, 2, 2, 310, 43, 3, 2, 2, 2, 311, 312, 9, 4, 2, 2, 312, 45, 3, 2, 2, 2, 313, 318, 5, 50, 26, 2, 314, 315, 7, 37, 2, 2, 315, 317, 5, 50, 26, 2, 316, 314, 3, 2, 2, 2, 317, 320, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 47, 3, 2, 2, 2, 320, 318, 3, 2, 2, 2, 321, 326, 5, 52, 27, 2, 322, 323, 7, 37, 2, 2, 323, 325, 5, 52, 27, 2, 324, 322, 3, 2, 2, 2, 325, 328, 3, 2, 2, 2, 326, 324, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 49, 3, 2, 2, 2, 328, 326, 3, 2, 2, 2, 329, 330, 9, 5, 2, 2, 330, 51, 3, 2, 2, 2, 331, 332, 7, 77, 2, 2, 332, 53, 3, 2, 2, 2, 333, 334, 9, 6, 2, 2, 334, 55, 3, 2, 2, 2, 335, 378, 7, 46, 2, 2, 336, 337, 5, 88, 45, 2, 337, 338, 7, 67, 2, 2, 338, 378, 3, 2, 2, 2, 339, 378, 5, 86, 44, 2, 340, 378, 5, 88, 45, 2, 341, 378, 5, 82, 42, 2, 342, 378, 7, 49, 2, 2, 343, 378, 5, 90, 46, 2, 344, 345, 7, 65, 2, 2, 345, 350, 5, 84, 43, 2, 346, 347, 7, 35, 2, 2, 347, 349, 5, 84, 43, 2, 348, 346, 3, 2, 2, 2, 349, 352, 3, 2, 2, 2, 350, 348, 3, 2, 2, 2, 350, 351, 3, 2, 2, 2, 351, 353, 3, 2, 2, 2, 352, 350, 3, 2, 2, 2, 353, 354, 7, 66, 2, 2, 354, 378, 3, 2, 2, 2, 355, 356, 7, 65, 2, 2, 356, 361, 5, 82, 42, 2, 357, 358, 7, 35, 2, 2, 358, 360, 5, 82, 42, 2, 359, 357, 3, 2, 2, 2, 360, 363, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 361, 362, 3, 2, 2, 2, 362, 364, 3, 2, 2, 2, 363, 361, 3, 2, 2, 2, 364, 365, 7, 66, 2, 2, 365, 378, 3, 2, 2, 2, 366, 367, 7, 65, 2, 2, 367, 372, 5, 90, 46, 2, 368, 369, 7, 35, 2, 2, 369, 371, 5, 90, 46, 2, 370, 368, 3, 2, 2, 2, 371, 374, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, 372, 373, 3, 2, 2, 2, 373, 375, 3, 2, 2, 2, 374, 372, 3, 2, 2, 2, 375, 376, 7, 66, 2, 2, 376, 378, 3, 2, 2, 2, 377, 335, 3, 2, 2, 2, 377, 336, 3, 2, 2, 2, 377, 339, 3, 2, 2, 2, 377, 340, 3, 2, 2, 2, 377, 341, 3, 2, 2, 2, 377, 342, 3, 2, 2, 2, 377, 343, 3, 2, 2, 2, 377, 344, 3, 2, 2, 2, 377, 355, 3, 2, 2, 2, 377, 366, 3, 2, 2, 2, 378, 57, 3, 2, 2, 2, 379, 380, 7, 12, 2, 2, 380, 381, 7, 29, 2, 2, 381, 59, 3, 2, 2, 2, 382, 383, 7, 17, 2, 2, 383, 388, 5, 62, 32, 2, 384, 385, 7, 35, 2, 2, 385, 387, 5, 62, 32, 2, 386, 384, 3, 2, 2, 2, 387, 390, 3, 2, 2, 2, 388, 386, 3, 2, 2, 2, 388, 389, 3, 2, 2, 2, 389, 61, 3, 2, 2, 2, 390, 388, 3, 2, 2, 2, 391, 393, 5, 12, 7, 2, 392, 394, 9, 7, 2, 2, 393, 392, 3, 2, 2, 2, 393, 394, 3, 2, 2, 2, 394, 397, 3, 2, 2, 2, 395, 396, 7, 47, 2, 2, 396, 398, 9, 8, 2, 2, 397, 395, 3, 2, 2, 2, 397, 398, 3, 2, 2, 2, 398, 63, 3, 2, 2, 2, 399, 400, 7, 11, 2, 2, 400, 405, 5, 48, 25, 2, 401, 402, 7, 35, 2, 2, 402, 404, 5, 48, 25, 2, 403, 401, 3, 2, 2, 2, 404, 407, 3, 2, 2, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 65, 3, 2, 2, 2, 407, 405, 3, 2, 2, 2, 408, 409, 7, 4, 2, 2, 409, 414, 5, 48, 25, 2, 410, 411, 7, 35, 2, 2, 411, 413, 5, 48, 25, 2, 412, 410, 3, 2, 2, 2, 413, 416, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 414, 415, 3, 2, 2, 2, 415, 67, 3, 2, 2, 2, 416, 414, 3, 2, 2, 2, 417, 418, 7, 14, 2, 2, 418, 423, 5, 70, 36, 2, 419, 420, 7, 35, 2, 2, 420, 422, 5, 70, 36, 2, 421, 419, 3, 2, 2, 2, 422, 425, 3, 2, 2, 2, 423, 421, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 69, 3, 2, 2, 2, 425, 423, 3, 2, 2, 2, 426, 427, 5, 48, 25, 2, 427, 428, 7, 81, 2, 2, 428, 429, 5, 48, 25, 2, 429, 71, 3, 2, 2, 2, 430, 431, 7, 3, 2, 2, 431, 432, 5, 20, 11, 2, 432, 434, 5, 90, 46, 2, 433, 435, 5, 78, 40, 2, 434, 433, 3, 2, 2, 2, 434, 435, 3, 2, 2, 2, 435, 73, 3, 2, 2, 2, 436, 437, 7, 9, 2, 2, 437, 438, 5, 20, 11, 2, 438, 439, 5, 90, 46, 2, 439, 75, 3, 2, 2, 2, 440, 441, 7, 13, 2, 2, 441, 442, 5, 46, 24, 2, 442, 77, 3, 2, 2, 2, 443, 448, 5, 80, 41, 2, 444, 445, 7, 35, 2, 2, 445, 447, 5, 80, 41, 2, 446, 444, 3, 2, 2, 2, 447, 450, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 448, 449, 3, 2, 2, 2, 449, 79, 3, 2, 2, 2, 450, 448, 3, 2, 2, 2, 451, 452, 5, 50, 26, 2, 452, 453, 7, 34, 2, 2, 453, 454, 5, 56, 29, 2, 454, 81, 3, 2, 2, 2, 455, 456, 9, 9, 2, 2, 456, 83, 3, 2, 2, 2, 457, 460, 5, 86, 44, 2, 458, 460, 5, 88, 45, 2, 459, 457, 3, 2, 2, 2, 459, 458, 3, 2, 2, 2, 460, 85, 3, 2, 2, 2, 461, 463, 9, 2, 2, 2, 462, 461, 3, 2, 2, 2, 462, 463, 3, 2, 2, 2, 463, 464, 3, 2, 2, 2, 464, 465, 7, 30, 2, 2, 465, 87, 3, 2, 2, 2, 466, 468, 9, 2, 2, 2, 467, 466, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 470, 7, 29, 2, 2, 470, 89, 3, 2, 2, 2, 471, 472, 7, 28, 2, 2, 472, 91, 3, 2, 2, 2, 473, 474, 9, 10, 2, 2, 474, 93, 3, 2, 2, 2, 475, 476, 7, 7, 2, 2, 476, 477, 5, 96, 49, 2, 477, 95, 3, 2, 2, 2, 478, 479, 7, 65, 2, 2, 479, 480, 5, 4, 3, 2, 480, 481, 7, 66, 2, 2, 481, 97, 3, 2, 2, 2, 482, 483, 7, 16, 2, 2, 483, 487, 7, 97, 2, 2, 484, 485, 7, 16, 2, 2, 485, 487, 7, 98, 2, 2, 486, 482, 3, 2, 2, 2, 486, 484, 3, 2, 2, 2, 487, 99, 3, 2, 2, 2, 488, 489, 7, 5, 2, 2, 489, 492, 7, 87, 2, 2, 490, 491, 7, 85, 2, 2, 491, 493, 5, 48, 25, 2, 492, 490, 3, 2, 2, 2, 492, 493, 3, 2, 2, 2, 493, 503, 3, 2, 2, 2, 494, 495, 7, 86, 2, 2, 495, 500, 5, 102, 52, 2, 496, 497, 7, 35, 2, 2, 497, 499, 5, 102, 52, 2, 498, 496, 3, 2, 2, 2, 499, 502, 3, 2, 2, 2, 500, 498, 3, 2, 2, 2, 500, 501, 3, 2, 2, 2, 501, 504, 3, 2, 2, 2, 502, 500, 3, 2, 2, 2, 503, 494, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 101, 3, 2, 2, 2, 505, 506, 5, 48, 25, 2, 506, 507, 7, 34, 2, 2, 507, 509, 3, 2, 2, 2, 508, 505, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 510, 3, 2, 2, 2, 510, 511, 5, 48, 25, 2, 511, 103, 3, 2, 2, 2, 52, 115, 122, 137, 149, 158, 166, 170, 178, 180, 185, 192, 197, 204, 210, 218, 220, 230, 240, 243, 255, 263, 271, 275, 279, 287, 299, 303, 309, 318, 326, 350, 361, 372, 377, 388, 393, 397, 405, 414, 423, 434, 448, 459, 462, 467, 486, 492, 500, 503, 508]
\ No newline at end of file
+[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 107, 513, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 114, 10, 3, 12, 3, 14, 3, 117, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 123, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 138, 10, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 150, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 157, 10, 7, 12, 7, 14, 7, 160, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 167, 10, 7, 3, 7, 3, 7, 5, 7, 171, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 179, 10, 7, 12, 7, 14, 7, 182, 11, 7, 3, 8, 3, 8, 5, 8, 186, 10, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 193, 10, 8, 3, 8, 3, 8, 3, 8, 5, 8, 198, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 205, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 211, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 219, 10, 10, 12, 10, 14, 10, 222, 11, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 231, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 239, 10, 12, 12, 12, 14, 12, 242, 11, 12, 5, 12, 244, 10, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 7, 14, 254, 10, 14, 12, 14, 14, 14, 257, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 264, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 7, 16, 270, 10, 16, 12, 16, 14, 16, 273, 11, 16, 3, 16, 5, 16, 276, 10, 16, 3, 17, 3, 17, 5, 17, 280, 10, 17, 3, 18, 3, 18, 3, 18, 3, 18, 7, 18, 286, 10, 18, 12, 18, 14, 18, 289, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 5, 21, 300, 10, 21, 3, 21, 3, 21, 5, 21, 304, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 310, 10, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 7, 24, 317, 10, 24, 12, 24, 14, 24, 320, 11, 24, 3, 25, 3, 25, 3, 25, 7, 25, 325, 10, 25, 12, 25, 14, 25, 328, 11, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 349, 10, 29, 12, 29, 14, 29, 352, 11, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 360, 10, 29, 12, 29, 14, 29, 363, 11, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 371, 10, 29, 12, 29, 14, 29, 374, 11, 29, 3, 29, 3, 29, 5, 29, 378, 10, 29, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 7, 31, 387, 10, 31, 12, 31, 14, 31, 390, 11, 31, 3, 32, 3, 32, 5, 32, 394, 10, 32, 3, 32, 3, 32, 5, 32, 398, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 7, 33, 404, 10, 33, 12, 33, 14, 33, 407, 11, 33, 3, 34, 3, 34, 3, 34, 3, 34, 7, 34, 413, 10, 34, 12, 34, 14, 34, 416, 11, 34, 3, 35, 3, 35, 3, 35, 3, 35, 7, 35, 422, 10, 35, 12, 35, 14, 35, 425, 11, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 435, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 7, 40, 447, 10, 40, 12, 40, 14, 40, 450, 11, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 5, 43, 460, 10, 43, 3, 44, 5, 44, 463, 10, 44, 3, 44, 3, 44, 3, 45, 5, 45, 468, 10, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 487, 10, 50, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 493, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 7, 51, 499, 10, 51, 12, 51, 14, 51, 502, 11, 51, 5, 51, 504, 10, 51, 3, 52, 3, 52, 3, 52, 5, 52, 509, 10, 52, 3, 52, 3, 52, 3, 52, 2, 2, 5, 4, 12, 18, 53, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 80, 2, 82, 2, 84, 2, 86, 2, 88, 2, 90, 2, 92, 2, 94, 2, 96, 2, 98, 2, 100, 2, 102, 2, 2, 11, 3, 2, 60, 61, 3, 2, 62, 64, 4, 2, 68, 68, 73, 73, 3, 2, 67, 68, 4, 2, 68, 68, 107, 107, 4, 2, 33, 33, 36, 36, 3, 2, 39, 40, 4, 2, 38, 38, 52, 52, 4, 2, 53, 53, 55, 59, 2, 538, 2, 104, 3, 2, 2, 2, 4, 107, 3, 2, 2, 2, 6, 122, 3, 2, 2, 2, 8, 137, 3, 2, 2, 2, 10, 139, 3, 2, 2, 2, 12, 170, 3, 2, 2, 2, 14, 197, 3, 2, 2, 2, 16, 204, 3, 2, 2, 2, 18, 210, 3, 2, 2, 2, 20, 230, 3, 2, 2, 2, 22, 232, 3, 2, 2, 2, 24, 247, 3, 2, 2, 2, 26, 250, 3, 2, 2, 2, 28, 263, 3, 2, 2, 2, 30, 265, 3, 2, 2, 2, 32, 279, 3, 2, 2, 2, 34, 281, 3, 2, 2, 2, 36, 290, 3, 2, 2, 2, 38, 294, 3, 2, 2, 2, 40, 297, 3, 2, 2, 2, 42, 305, 3, 2, 2, 2, 44, 311, 3, 2, 2, 2, 46, 313, 3, 2, 2, 2, 48, 321, 3, 2, 2, 2, 50, 329, 3, 2, 2, 2, 52, 331, 3, 2, 2, 2, 54, 333, 3, 2, 2, 2, 56, 377, 3, 2, 2, 2, 58, 379, 3, 2, 2, 2, 60, 382, 3, 2, 2, 2, 62, 391, 3, 2, 2, 2, 64, 399, 3, 2, 2, 2, 66, 408, 3, 2, 2, 2, 68, 417, 3, 2, 2, 2, 70, 426, 3, 2, 2, 2, 72, 430, 3, 2, 2, 2, 74, 436, 3, 2, 2, 2, 76, 440, 3, 2, 2, 2, 78, 443, 3, 2, 2, 2, 80, 451, 3, 2, 2, 2, 82, 455, 3, 2, 2, 2, 84, 459, 3, 2, 2, 2, 86, 462, 3, 2, 2, 2, 88, 467, 3, 2, 2, 2, 90, 471, 3, 2, 2, 2, 92, 473, 3, 2, 2, 2, 94, 475, 3, 2, 2, 2, 96, 478, 3, 2, 2, 2, 98, 486, 3, 2, 2, 2, 100, 488, 3, 2, 2, 2, 102, 508, 3, 2, 2, 2, 104, 105, 5, 4, 3, 2, 105, 106, 7, 2, 2, 3, 106, 3, 3, 2, 2, 2, 107, 108, 8, 3, 1, 2, 108, 109, 5, 6, 4, 2, 109, 115, 3, 2, 2, 2, 110, 111, 12, 3, 2, 2, 111, 112, 7, 27, 2, 2, 112, 114, 5, 8, 5, 2, 113, 110, 3, 2, 2, 2, 114, 117, 3, 2, 2, 2, 115, 113, 3, 2, 2, 2, 115, 116, 3, 2, 2, 2, 116, 5, 3, 2, 2, 2, 117, 115, 3, 2, 2, 2, 118, 123, 5, 94, 48, 2, 119, 123, 5, 30, 16, 2, 120, 123, 5, 24, 13, 2, 121, 123, 5, 98, 50, 2, 122, 118, 3, 2, 2, 2, 122, 119, 3, 2, 2, 2, 122, 120, 3, 2, 2, 2, 122, 121, 3, 2, 2, 2, 123, 7, 3, 2, 2, 2, 124, 138, 5, 38, 20, 2, 125, 138, 5, 42, 22, 2, 126, 138, 5, 58, 30, 2, 127, 138, 5, 64, 33, 2, 128, 138, 5, 60, 31, 2, 129, 138, 5, 40, 21, 2, 130, 138, 5, 10, 6, 2, 131, 138, 5, 66, 34, 2, 132, 138, 5, 68, 35, 2, 133, 138, 5, 72, 37, 2, 134, 138, 5, 74, 38, 2, 135, 138, 5, 100, 51, 2, 136, 138, 5, 76, 39, 2, 137, 124, 3, 2, 2, 2, 137, 125, 3, 2, 2, 2, 137, 126, 3, 2, 2, 2, 137, 127, 3, 2, 2, 2, 137, 128, 3, 2, 2, 2, 137, 129, 3, 2, 2, 2, 137, 130, 3, 2, 2, 2, 137, 131, 3, 2, 2, 2, 137, 132, 3, 2, 2, 2, 137, 133, 3, 2, 2, 2, 137, 134, 3, 2, 2, 2, 137, 135, 3, 2, 2, 2, 137, 136, 3, 2, 2, 2, 138, 9, 3, 2, 2, 2, 139, 140, 7, 19, 2, 2, 140, 141, 5, 12, 7, 2, 141, 11, 3, 2, 2, 2, 142, 143, 8, 7, 1, 2, 143, 144, 7, 45, 2, 2, 144, 171, 5, 12, 7, 9, 145, 171, 5, 16, 9, 2, 146, 171, 5, 14, 8, 2, 147, 149, 5, 16, 9, 2, 148, 150, 7, 45, 2, 2, 149, 148, 3, 2, 2, 2, 149, 150, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 152, 7, 42, 2, 2, 152, 153, 7, 41, 2, 2, 153, 158, 5, 16, 9, 2, 154, 155, 7, 35, 2, 2, 155, 157, 5, 16, 9, 2, 156, 154, 3, 2, 2, 2, 157, 160, 3, 2, 2, 2, 158, 156, 3, 2, 2, 2, 158, 159, 3, 2, 2, 2, 159, 161, 3, 2, 2, 2, 160, 158, 3, 2, 2, 2, 161, 162, 7, 51, 2, 2, 162, 171, 3, 2, 2, 2, 163, 164, 5, 16, 9, 2, 164, 166, 7, 43, 2, 2, 165, 167, 7, 45, 2, 2, 166, 165, 3, 2, 2, 2, 166, 167, 3, 2, 2, 2, 167, 168, 3, 2, 2, 2, 168, 169, 7, 46, 2, 2, 169, 171, 3, 2, 2, 2, 170, 142, 3, 2, 2, 2, 170, 145, 3, 2, 2, 2, 170, 146, 3, 2, 2, 2, 170, 147, 3, 2, 2, 2, 170, 163, 3, 2, 2, 2, 171, 180, 3, 2, 2, 2, 172, 173, 12, 6, 2, 2, 173, 174, 7, 32, 2, 2, 174, 179, 5, 12, 7, 7, 175, 176, 12, 5, 2, 2, 176, 177, 7, 48, 2, 2, 177, 179, 5, 12, 7, 6, 178, 172, 3, 2, 2, 2, 178, 175, 3, 2, 2, 2, 179, 182, 3, 2, 2, 2, 180, 178, 3, 2, 2, 2, 180, 181, 3, 2, 2, 2, 181, 13, 3, 2, 2, 2, 182, 180, 3, 2, 2, 2, 183, 185, 5, 16, 9, 2, 184, 186, 7, 45, 2, 2, 185, 184, 3, 2, 2, 2, 185, 186, 3, 2, 2, 2, 186, 187, 3, 2, 2, 2, 187, 188, 7, 44, 2, 2, 188, 189, 5, 90, 46, 2, 189, 198, 3, 2, 2, 2, 190, 192, 5, 16, 9, 2, 191, 193, 7, 45, 2, 2, 192, 191, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 194, 3, 2, 2, 2, 194, 195, 7, 50, 2, 2, 195, 196, 5, 90, 46, 2, 196, 198, 3, 2, 2, 2, 197, 183, 3, 2, 2, 2, 197, 190, 3, 2, 2, 2, 198, 15, 3, 2, 2, 2, 199, 205, 5, 18, 10, 2, 200, 201, 5, 18, 10, 2, 201, 202, 5, 92, 47, 2, 202, 203, 5, 18, 10, 2, 203, 205, 3, 2, 2, 2, 204, 199, 3, 2, 2, 2, 204, 200, 3, 2, 2, 2, 205, 17, 3, 2, 2, 2, 206, 207, 8, 10, 1, 2, 207, 211, 5, 20, 11, 2, 208, 209, 9, 2, 2, 2, 209, 211, 5, 18, 10, 5, 210, 206, 3, 2, 2, 2, 210, 208, 3, 2, 2, 2, 211, 220, 3, 2, 2, 2, 212, 213, 12, 4, 2, 2, 213, 214, 9, 3, 2, 2, 214, 219, 5, 18, 10, 5, 215, 216, 12, 3, 2, 2, 216, 217, 9, 2, 2, 2, 217, 219, 5, 18, 10, 4, 218, 212, 3, 2, 2, 2, 218, 215, 3, 2, 2, 2, 219, 222, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 220, 221, 3, 2, 2, 2, 221, 19, 3, 2, 2, 2, 222, 220, 3, 2, 2, 2, 223, 231, 5, 56, 29, 2, 224, 231, 5, 46, 24, 2, 225, 231, 5, 22, 12, 2, 226, 227, 7, 41, 2, 2, 227, 228, 5, 12, 7, 2, 228, 229, 7, 51, 2, 2, 229, 231, 3, 2, 2, 2, 230, 223, 3, 2, 2, 2, 230, 224, 3, 2, 2, 2, 230, 225, 3, 2, 2, 2, 230, 226, 3, 2, 2, 2, 231, 21, 3, 2, 2, 2, 232, 233, 5, 50, 26, 2, 233, 243, 7, 41, 2, 2, 234, 244, 7, 62, 2, 2, 235, 240, 5, 12, 7, 2, 236, 237, 7, 35, 2, 2, 237, 239, 5, 12, 7, 2, 238, 236, 3, 2, 2, 2, 239, 242, 3, 2, 2, 2, 240, 238, 3, 2, 2, 2, 240, 241, 3, 2, 2, 2, 241, 244, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 243, 234, 3, 2, 2, 2, 243, 235, 3, 2, 2, 2, 243, 244, 3, 2, 2, 2, 244, 245, 3, 2, 2, 2, 245, 246, 7, 51, 2, 2, 246, 23, 3, 2, 2, 2, 247, 248, 7, 15, 2, 2, 248, 249, 5, 26, 14, 2, 249, 25, 3, 2, 2, 2, 250, 255, 5, 28, 15, 2, 251, 252, 7, 35, 2, 2, 252, 254, 5, 28, 15, 2, 253, 251, 3, 2, 2, 2, 254, 257, 3, 2, 2, 2, 255, 253, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 27, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 258, 264, 5, 12, 7, 2, 259, 260, 5, 46, 24, 2, 260, 261, 7, 34, 2, 2, 261, 262, 5, 12, 7, 2, 262, 264, 3, 2, 2, 2, 263, 258, 3, 2, 2, 2, 263, 259, 3, 2, 2, 2, 264, 29, 3, 2, 2, 2, 265, 266, 7, 8, 2, 2, 266, 271, 5, 44, 23, 2, 267, 268, 7, 35, 2, 2, 268, 270, 5, 44, 23, 2, 269, 267, 3, 2, 2, 2, 270, 273, 3, 2, 2, 2, 271, 269, 3, 2, 2, 2, 271, 272, 3, 2, 2, 2, 272, 275, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 274, 276, 5, 32, 17, 2, 275, 274, 3, 2, 2, 2, 275, 276, 3, 2, 2, 2, 276, 31, 3, 2, 2, 2, 277, 280, 5, 34, 18, 2, 278, 280, 5, 36, 19, 2, 279, 277, 3, 2, 2, 2, 279, 278, 3, 2, 2, 2, 280, 33, 3, 2, 2, 2, 281, 282, 7, 72, 2, 2, 282, 287, 5, 44, 23, 2, 283, 284, 7, 35, 2, 2, 284, 286, 5, 44, 23, 2, 285, 283, 3, 2, 2, 2, 286, 289, 3, 2, 2, 2, 287, 285, 3, 2, 2, 2, 287, 288, 3, 2, 2, 2, 288, 35, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 290, 291, 7, 65, 2, 2, 291, 292, 5, 34, 18, 2, 292, 293, 7, 66, 2, 2, 293, 37, 3, 2, 2, 2, 294, 295, 7, 6, 2, 2, 295, 296, 5, 26, 14, 2, 296, 39, 3, 2, 2, 2, 297, 299, 7, 18, 2, 2, 298, 300, 5, 26, 14, 2, 299, 298, 3, 2, 2, 2, 299, 300, 3, 2, 2, 2, 300, 303, 3, 2, 2, 2, 301, 302, 7, 31, 2, 2, 302, 304, 5, 26, 14, 2, 303, 301, 3, 2, 2, 2, 303, 304, 3, 2, 2, 2, 304, 41, 3, 2, 2, 2, 305, 306, 7, 10, 2, 2, 306, 309, 5, 26, 14, 2, 307, 308, 7, 31, 2, 2, 308, 310, 5, 26, 14, 2, 309, 307, 3, 2, 2, 2, 309, 310, 3, 2, 2, 2, 310, 43, 3, 2, 2, 2, 311, 312, 9, 4, 2, 2, 312, 45, 3, 2, 2, 2, 313, 318, 5, 50, 26, 2, 314, 315, 7, 37, 2, 2, 315, 317, 5, 50, 26, 2, 316, 314, 3, 2, 2, 2, 317, 320, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 47, 3, 2, 2, 2, 320, 318, 3, 2, 2, 2, 321, 326, 5, 52, 27, 2, 322, 323, 7, 37, 2, 2, 323, 325, 5, 52, 27, 2, 324, 322, 3, 2, 2, 2, 325, 328, 3, 2, 2, 2, 326, 324, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 49, 3, 2, 2, 2, 328, 326, 3, 2, 2, 2, 329, 330, 9, 5, 2, 2, 330, 51, 3, 2, 2, 2, 331, 332, 7, 77, 2, 2, 332, 53, 3, 2, 2, 2, 333, 334, 9, 6, 2, 2, 334, 55, 3, 2, 2, 2, 335, 378, 7, 46, 2, 2, 336, 337, 5, 88, 45, 2, 337, 338, 7, 67, 2, 2, 338, 378, 3, 2, 2, 2, 339, 378, 5, 86, 44, 2, 340, 378, 5, 88, 45, 2, 341, 378, 5, 82, 42, 2, 342, 378, 7, 49, 2, 2, 343, 378, 5, 90, 46, 2, 344, 345, 7, 65, 2, 2, 345, 350, 5, 84, 43, 2, 346, 347, 7, 35, 2, 2, 347, 349, 5, 84, 43, 2, 348, 346, 3, 2, 2, 2, 349, 352, 3, 2, 2, 2, 350, 348, 3, 2, 2, 2, 350, 351, 3, 2, 2, 2, 351, 353, 3, 2, 2, 2, 352, 350, 3, 2, 2, 2, 353, 354, 7, 66, 2, 2, 354, 378, 3, 2, 2, 2, 355, 356, 7, 65, 2, 2, 356, 361, 5, 82, 42, 2, 357, 358, 7, 35, 2, 2, 358, 360, 5, 82, 42, 2, 359, 357, 3, 2, 2, 2, 360, 363, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 361, 362, 3, 2, 2, 2, 362, 364, 3, 2, 2, 2, 363, 361, 3, 2, 2, 2, 364, 365, 7, 66, 2, 2, 365, 378, 3, 2, 2, 2, 366, 367, 7, 65, 2, 2, 367, 372, 5, 90, 46, 2, 368, 369, 7, 35, 2, 2, 369, 371, 5, 90, 46, 2, 370, 368, 3, 2, 2, 2, 371, 374, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, 372, 373, 3, 2, 2, 2, 373, 375, 3, 2, 2, 2, 374, 372, 3, 2, 2, 2, 375, 376, 7, 66, 2, 2, 376, 378, 3, 2, 2, 2, 377, 335, 3, 2, 2, 2, 377, 336, 3, 2, 2, 2, 377, 339, 3, 2, 2, 2, 377, 340, 3, 2, 2, 2, 377, 341, 3, 2, 2, 2, 377, 342, 3, 2, 2, 2, 377, 343, 3, 2, 2, 2, 377, 344, 3, 2, 2, 2, 377, 355, 3, 2, 2, 2, 377, 366, 3, 2, 2, 2, 378, 57, 3, 2, 2, 2, 379, 380, 7, 12, 2, 2, 380, 381, 7, 29, 2, 2, 381, 59, 3, 2, 2, 2, 382, 383, 7, 17, 2, 2, 383, 388, 5, 62, 32, 2, 384, 385, 7, 35, 2, 2, 385, 387, 5, 62, 32, 2, 386, 384, 3, 2, 2, 2, 387, 390, 3, 2, 2, 2, 388, 386, 3, 2, 2, 2, 388, 389, 3, 2, 2, 2, 389, 61, 3, 2, 2, 2, 390, 388, 3, 2, 2, 2, 391, 393, 5, 12, 7, 2, 392, 394, 9, 7, 2, 2, 393, 392, 3, 2, 2, 2, 393, 394, 3, 2, 2, 2, 394, 397, 3, 2, 2, 2, 395, 396, 7, 47, 2, 2, 396, 398, 9, 8, 2, 2, 397, 395, 3, 2, 2, 2, 397, 398, 3, 2, 2, 2, 398, 63, 3, 2, 2, 2, 399, 400, 7, 11, 2, 2, 400, 405, 5, 48, 25, 2, 401, 402, 7, 35, 2, 2, 402, 404, 5, 48, 25, 2, 403, 401, 3, 2, 2, 2, 404, 407, 3, 2, 2, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 65, 3, 2, 2, 2, 407, 405, 3, 2, 2, 2, 408, 409, 7, 4, 2, 2, 409, 414, 5, 48, 25, 2, 410, 411, 7, 35, 2, 2, 411, 413, 5, 48, 25, 2, 412, 410, 3, 2, 2, 2, 413, 416, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 414, 415, 3, 2, 2, 2, 415, 67, 3, 2, 2, 2, 416, 414, 3, 2, 2, 2, 417, 418, 7, 14, 2, 2, 418, 423, 5, 70, 36, 2, 419, 420, 7, 35, 2, 2, 420, 422, 5, 70, 36, 2, 421, 419, 3, 2, 2, 2, 422, 425, 3, 2, 2, 2, 423, 421, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 69, 3, 2, 2, 2, 425, 423, 3, 2, 2, 2, 426, 427, 5, 48, 25, 2, 427, 428, 7, 81, 2, 2, 428, 429, 5, 48, 25, 2, 429, 71, 3, 2, 2, 2, 430, 431, 7, 3, 2, 2, 431, 432, 5, 20, 11, 2, 432, 434, 5, 90, 46, 2, 433, 435, 5, 78, 40, 2, 434, 433, 3, 2, 2, 2, 434, 435, 3, 2, 2, 2, 435, 73, 3, 2, 2, 2, 436, 437, 7, 9, 2, 2, 437, 438, 5, 20, 11, 2, 438, 439, 5, 90, 46, 2, 439, 75, 3, 2, 2, 2, 440, 441, 7, 13, 2, 2, 441, 442, 5, 46, 24, 2, 442, 77, 3, 2, 2, 2, 443, 448, 5, 80, 41, 2, 444, 445, 7, 35, 2, 2, 445, 447, 5, 80, 41, 2, 446, 444, 3, 2, 2, 2, 447, 450, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 448, 449, 3, 2, 2, 2, 449, 79, 3, 2, 2, 2, 450, 448, 3, 2, 2, 2, 451, 452, 5, 50, 26, 2, 452, 453, 7, 34, 2, 2, 453, 454, 5, 56, 29, 2, 454, 81, 3, 2, 2, 2, 455, 456, 9, 9, 2, 2, 456, 83, 3, 2, 2, 2, 457, 460, 5, 86, 44, 2, 458, 460, 5, 88, 45, 2, 459, 457, 3, 2, 2, 2, 459, 458, 3, 2, 2, 2, 460, 85, 3, 2, 2, 2, 461, 463, 9, 2, 2, 2, 462, 461, 3, 2, 2, 2, 462, 463, 3, 2, 2, 2, 463, 464, 3, 2, 2, 2, 464, 465, 7, 30, 2, 2, 465, 87, 3, 2, 2, 2, 466, 468, 9, 2, 2, 2, 467, 466, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 470, 7, 29, 2, 2, 470, 89, 3, 2, 2, 2, 471, 472, 7, 28, 2, 2, 472, 91, 3, 2, 2, 2, 473, 474, 9, 10, 2, 2, 474, 93, 3, 2, 2, 2, 475, 476, 7, 7, 2, 2, 476, 477, 5, 96, 49, 2, 477, 95, 3, 2, 2, 2, 478, 479, 7, 65, 2, 2, 479, 480, 5, 4, 3, 2, 480, 481, 7, 66, 2, 2, 481, 97, 3, 2, 2, 2, 482, 483, 7, 16, 2, 2, 483, 487, 7, 97, 2, 2, 484, 485, 7, 16, 2, 2, 485, 487, 7, 98, 2, 2, 486, 482, 3, 2, 2, 2, 486, 484, 3, 2, 2, 2, 487, 99, 3, 2, 2, 2, 488, 489, 7, 5, 2, 2, 489, 492, 7, 87, 2, 2, 490, 491, 7, 85, 2, 2, 491, 493, 5, 48, 25, 2, 492, 490, 3, 2, 2, 2, 492, 493, 3, 2, 2, 2, 493, 503, 3, 2, 2, 2, 494, 495, 7, 86, 2, 2, 495, 500, 5, 102, 52, 2, 496, 497, 7, 35, 2, 2, 497, 499, 5, 102, 52, 2, 498, 496, 3, 2, 2, 2, 499, 502, 3, 2, 2, 2, 500, 498, 3, 2, 2, 2, 500, 501, 3, 2, 2, 2, 501, 504, 3, 2, 2, 2, 502, 500, 3, 2, 2, 2, 503, 494, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 101, 3, 2, 2, 2, 505, 506, 5, 48, 25, 2, 506, 507, 7, 34, 2, 2, 507, 509, 3, 2, 2, 2, 508, 505, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 510, 3, 2, 2, 2, 510, 511, 5, 48, 25, 2, 511, 103, 3, 2, 2, 2, 52, 115, 122, 137, 149, 158, 166, 170, 178, 180, 185, 192, 197, 204, 210, 218, 220, 230, 240, 243, 255, 263, 271, 275, 279, 287, 299, 303, 309, 318, 326, 350, 361, 372, 377, 388, 393, 397, 405, 414, 423, 434, 448, 459, 462, 467, 486, 492, 500, 503, 508]
\ No newline at end of file
diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts b/packages/kbn-monaco/src/esql/antlr/esql_parser.ts
index 18a7dd5d31337..194a489a4ce8d 100644
--- a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts
+++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.ts
@@ -2626,7 +2626,7 @@ export class esql_parser extends Parser {
{
this.state = 471;
_la = this._input.LA(1);
- if (!(((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & ((1 << (esql_parser.EQ - 51)) | (1 << (esql_parser.CIEQ - 51)) | (1 << (esql_parser.NEQ - 51)) | (1 << (esql_parser.LT - 51)) | (1 << (esql_parser.LTE - 51)) | (1 << (esql_parser.GT - 51)) | (1 << (esql_parser.GTE - 51)))) !== 0))) {
+ if (!(((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & ((1 << (esql_parser.EQ - 51)) | (1 << (esql_parser.NEQ - 51)) | (1 << (esql_parser.LT - 51)) | (1 << (esql_parser.LTE - 51)) | (1 << (esql_parser.GT - 51)) | (1 << (esql_parser.GTE - 51)))) !== 0))) {
this._errHandler.recoverInline(this);
} else {
if (this._input.LA(1) === Token.EOF) {
@@ -2959,30 +2959,30 @@ export class esql_parser extends Parser {
"$\x02&\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02" +
"@\x02B\x02D\x02F\x02H\x02J\x02L\x02N\x02P\x02R\x02T\x02V\x02X\x02Z\x02" +
"\\\x02^\x02`\x02b\x02d\x02f\x02\x02\v\x03\x02<=\x03\x02>@\x04\x02DDII" +
- "\x03\x02CD\x04\x02DDkk\x04\x02!!$$\x03\x02\'(\x04\x02&&44\x03\x025;\x02" +
- "\u021A\x02h\x03\x02\x02\x02\x04k\x03\x02\x02\x02\x06z\x03\x02\x02\x02" +
- "\b\x89\x03\x02\x02\x02\n\x8B\x03\x02\x02\x02\f\xAA\x03\x02\x02\x02\x0E" +
- "\xC5\x03\x02\x02\x02\x10\xCC\x03\x02\x02\x02\x12\xD2\x03\x02\x02\x02\x14" +
- "\xE6\x03\x02\x02\x02\x16\xE8\x03\x02\x02\x02\x18\xF7\x03\x02\x02\x02\x1A" +
- "\xFA\x03\x02\x02\x02\x1C\u0107\x03\x02\x02\x02\x1E\u0109\x03\x02\x02\x02" +
- " \u0117\x03\x02\x02\x02\"\u0119\x03\x02\x02\x02$\u0122\x03\x02\x02\x02" +
- "&\u0126\x03\x02\x02\x02(\u0129\x03\x02\x02\x02*\u0131\x03\x02\x02\x02" +
- ",\u0137\x03\x02\x02\x02.\u0139\x03\x02\x02\x020\u0141\x03\x02\x02\x02" +
- "2\u0149\x03\x02\x02\x024\u014B\x03\x02\x02\x026\u014D\x03\x02\x02\x02" +
- "8\u0179\x03\x02\x02\x02:\u017B\x03\x02\x02\x02<\u017E\x03\x02\x02\x02" +
- ">\u0187\x03\x02\x02\x02@\u018F\x03\x02\x02\x02B\u0198\x03\x02\x02\x02" +
- "D\u01A1\x03\x02\x02\x02F\u01AA\x03\x02\x02\x02H\u01AE\x03\x02\x02\x02" +
- "J\u01B4\x03\x02\x02\x02L\u01B8\x03\x02\x02\x02N\u01BB\x03\x02\x02\x02" +
- "P\u01C3\x03\x02\x02\x02R\u01C7\x03\x02\x02\x02T\u01CB\x03\x02\x02\x02" +
- "V\u01CE\x03\x02\x02\x02X\u01D3\x03\x02\x02\x02Z\u01D7\x03\x02\x02\x02" +
- "\\\u01D9\x03\x02\x02\x02^\u01DB\x03\x02\x02\x02`\u01DE\x03\x02\x02\x02" +
- "b\u01E6\x03\x02\x02\x02d\u01E8\x03\x02\x02\x02f\u01FC\x03\x02\x02\x02" +
- "hi\x05\x04\x03\x02ij\x07\x02\x02\x03j\x03\x03\x02\x02\x02kl\b\x03\x01" +
- "\x02lm\x05\x06\x04\x02ms\x03\x02\x02\x02no\f\x03\x02\x02op\x07\x1B\x02" +
- "\x02pr\x05\b\x05\x02qn\x03\x02\x02\x02ru\x03\x02\x02\x02sq\x03\x02\x02" +
- "\x02st\x03\x02\x02\x02t\x05\x03\x02\x02\x02us\x03\x02\x02\x02v{\x05^0" +
- "\x02w{\x05\x1E\x10\x02x{\x05\x18\r\x02y{\x05b2\x02zv\x03\x02\x02\x02z" +
- "w\x03\x02\x02\x02zx\x03\x02\x02\x02zy\x03\x02\x02\x02{\x07\x03\x02\x02" +
+ "\x03\x02CD\x04\x02DDkk\x04\x02!!$$\x03\x02\'(\x04\x02&&44\x04\x02557;" +
+ "\x02\u021A\x02h\x03\x02\x02\x02\x04k\x03\x02\x02\x02\x06z\x03\x02\x02" +
+ "\x02\b\x89\x03\x02\x02\x02\n\x8B\x03\x02\x02\x02\f\xAA\x03\x02\x02\x02" +
+ "\x0E\xC5\x03\x02\x02\x02\x10\xCC\x03\x02\x02\x02\x12\xD2\x03\x02\x02\x02" +
+ "\x14\xE6\x03\x02\x02\x02\x16\xE8\x03\x02\x02\x02\x18\xF7\x03\x02\x02\x02" +
+ "\x1A\xFA\x03\x02\x02\x02\x1C\u0107\x03\x02\x02\x02\x1E\u0109\x03\x02\x02" +
+ "\x02 \u0117\x03\x02\x02\x02\"\u0119\x03\x02\x02\x02$\u0122\x03\x02\x02" +
+ "\x02&\u0126\x03\x02\x02\x02(\u0129\x03\x02\x02\x02*\u0131\x03\x02\x02" +
+ "\x02,\u0137\x03\x02\x02\x02.\u0139\x03\x02\x02\x020\u0141\x03\x02\x02" +
+ "\x022\u0149\x03\x02\x02\x024\u014B\x03\x02\x02\x026\u014D\x03\x02\x02" +
+ "\x028\u0179\x03\x02\x02\x02:\u017B\x03\x02\x02\x02<\u017E\x03\x02\x02" +
+ "\x02>\u0187\x03\x02\x02\x02@\u018F\x03\x02\x02\x02B\u0198\x03\x02\x02" +
+ "\x02D\u01A1\x03\x02\x02\x02F\u01AA\x03\x02\x02\x02H\u01AE\x03\x02\x02" +
+ "\x02J\u01B4\x03\x02\x02\x02L\u01B8\x03\x02\x02\x02N\u01BB\x03\x02\x02" +
+ "\x02P\u01C3\x03\x02\x02\x02R\u01C7\x03\x02\x02\x02T\u01CB\x03\x02\x02" +
+ "\x02V\u01CE\x03\x02\x02\x02X\u01D3\x03\x02\x02\x02Z\u01D7\x03\x02\x02" +
+ "\x02\\\u01D9\x03\x02\x02\x02^\u01DB\x03\x02\x02\x02`\u01DE\x03\x02\x02" +
+ "\x02b\u01E6\x03\x02\x02\x02d\u01E8\x03\x02\x02\x02f\u01FC\x03\x02\x02" +
+ "\x02hi\x05\x04\x03\x02ij\x07\x02\x02\x03j\x03\x03\x02\x02\x02kl\b\x03" +
+ "\x01\x02lm\x05\x06\x04\x02ms\x03\x02\x02\x02no\f\x03\x02\x02op\x07\x1B" +
+ "\x02\x02pr\x05\b\x05\x02qn\x03\x02\x02\x02ru\x03\x02\x02\x02sq\x03\x02" +
+ "\x02\x02st\x03\x02\x02\x02t\x05\x03\x02\x02\x02us\x03\x02\x02\x02v{\x05" +
+ "^0\x02w{\x05\x1E\x10\x02x{\x05\x18\r\x02y{\x05b2\x02zv\x03\x02\x02\x02" +
+ "zw\x03\x02\x02\x02zx\x03\x02\x02\x02zy\x03\x02\x02\x02{\x07\x03\x02\x02" +
"\x02|\x8A\x05&\x14\x02}\x8A\x05*\x16\x02~\x8A\x05:\x1E\x02\x7F\x8A\x05" +
"@!\x02\x80\x8A\x05<\x1F\x02\x81\x8A\x05(\x15\x02\x82\x8A\x05\n\x06\x02" +
"\x83\x8A\x05B\"\x02\x84\x8A\x05D#\x02\x85\x8A\x05H%\x02\x86\x8A\x05J&" +
@@ -5144,7 +5144,6 @@ export class StringContext extends ParserRuleContext {
export class ComparisonOperatorContext extends ParserRuleContext {
public EQ(): TerminalNode | undefined { return this.tryGetToken(esql_parser.EQ, 0); }
- public CIEQ(): TerminalNode | undefined { return this.tryGetToken(esql_parser.CIEQ, 0); }
public NEQ(): TerminalNode | undefined { return this.tryGetToken(esql_parser.NEQ, 0); }
public LT(): TerminalNode | undefined { return this.tryGetToken(esql_parser.LT, 0); }
public LTE(): TerminalNode | undefined { return this.tryGetToken(esql_parser.LTE, 0); }
diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts
index e834fd320c66b..0b05cd6452873 100644
--- a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts
+++ b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts
@@ -235,7 +235,6 @@ function getMathOperation(ctx: ArithmeticBinaryContext) {
function getComparisonName(ctx: ComparisonOperatorContext) {
return (
ctx.EQ()?.text ||
- ctx.CIEQ()?.text ||
ctx.NEQ()?.text ||
ctx.LT()?.text ||
ctx.LTE()?.text ||
diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts
index 533cc6eb5ccac..498d89aa11ada 100644
--- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts
+++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts
@@ -379,7 +379,8 @@ describe('autocomplete', () => {
...getFieldNamesByType('string'),
...getFunctionSignaturesByReturnType('where', 'string', { evalMath: true }),
]);
- testSuggestions('from a | where stringField =~ ', [
+ // Skip these tests until the insensitive case equality gets restored back
+ testSuggestions.skip('from a | where stringField =~ ', [
...getFieldNamesByType('string'),
...getFunctionSignaturesByReturnType('where', 'string', { evalMath: true }),
]);
@@ -394,7 +395,7 @@ describe('autocomplete', () => {
['boolean']
),
]);
- testSuggestions('from a | where stringField =~ stringField ', [
+ testSuggestions.skip('from a | where stringField =~ stringField ', [
'|',
...getFunctionSignaturesByReturnType(
'where',
@@ -829,7 +830,8 @@ describe('autocomplete', () => {
'a',
...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }),
]);
- testSuggestions('from a | eval a=stringField =~ ', [
+ // Skip this test until the insensitive case equality gets restored back
+ testSuggestions.skip('from a | eval a=stringField =~ ', [
...getFieldNamesByType('string'),
...getFunctionSignaturesByReturnType('eval', 'string', { evalMath: true }),
]);
diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts
index ead7b89a693f2..d0dfabbf17223 100644
--- a/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts
+++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts
@@ -207,13 +207,14 @@ export const builtinFunctions: FunctionDefinition[] = [
},
].map((op): FunctionDefinition => createComparisonDefinition(op)),
...[
+ // Skip the insensitive case equality until it gets restored back
// new special comparison operator for strings only
- {
- name: '=~',
- description: i18n.translate('monaco.esql.definition.equalToCaseInsensitiveDoc', {
- defaultMessage: 'Case insensitive equality',
- }),
- },
+ // {
+ // name: '=~',
+ // description: i18n.translate('monaco.esql.definition.equalToCaseInsensitiveDoc', {
+ // defaultMessage: 'Case insensitive equality',
+ // }),
+ // },
{
name: 'like',
description: i18n.translate('monaco.esql.definition.likeDoc', {
diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts
index e1c67272b0640..77540a16a49dd 100644
--- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts
+++ b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts
@@ -979,27 +979,28 @@ describe('validation logic', () => {
]);
}
- testErrorsAndWarnings(`from a_index | where numberField =~ 0`, [
+ // Skip these tests until the insensitive case equality gets restored back
+ testErrorsAndWarnings.skip(`from a_index | where numberField =~ 0`, [
'Argument of [=~] must be [string], found value [numberField] type [number]',
'Argument of [=~] must be [string], found value [0] type [number]',
]);
- testErrorsAndWarnings(`from a_index | where NOT numberField =~ 0`, [
+ testErrorsAndWarnings.skip(`from a_index | where NOT numberField =~ 0`, [
'Argument of [=~] must be [string], found value [numberField] type [number]',
'Argument of [=~] must be [string], found value [0] type [number]',
]);
- testErrorsAndWarnings(`from a_index | where (numberField =~ 0)`, [
+ testErrorsAndWarnings.skip(`from a_index | where (numberField =~ 0)`, [
'Argument of [=~] must be [string], found value [numberField] type [number]',
'Argument of [=~] must be [string], found value [0] type [number]',
]);
- testErrorsAndWarnings(`from a_index | where (NOT (numberField =~ 0))`, [
+ testErrorsAndWarnings.skip(`from a_index | where (NOT (numberField =~ 0))`, [
'Argument of [=~] must be [string], found value [numberField] type [number]',
'Argument of [=~] must be [string], found value [0] type [number]',
]);
- testErrorsAndWarnings(`from a_index | where 1 =~ 0`, [
+ testErrorsAndWarnings.skip(`from a_index | where 1 =~ 0`, [
'Argument of [=~] must be [string], found value [1] type [number]',
'Argument of [=~] must be [string], found value [0] type [number]',
]);
- testErrorsAndWarnings(`from a_index | eval stringField =~ 0`, [
+ testErrorsAndWarnings.skip(`from a_index | eval stringField =~ 0`, [
`Argument of [=~] must be [string], found value [0] type [number]`,
]);
diff --git a/packages/kbn-search-connectors/lib/delete_connector_secret.ts b/packages/kbn-search-connectors/lib/delete_connector_secret.ts
index d3ecbe8da73f5..c0888e1f8b0a0 100644
--- a/packages/kbn-search-connectors/lib/delete_connector_secret.ts
+++ b/packages/kbn-search-connectors/lib/delete_connector_secret.ts
@@ -7,10 +7,10 @@
*/
import { ElasticsearchClient } from '@kbn/core-elasticsearch-server';
-import { ConnectorsAPIUpdateResponse } from '../types/connectors_api';
+import { Result } from '@elastic/elasticsearch/lib/api/types';
export const deleteConnectorSecret = async (client: ElasticsearchClient, id: string) => {
- return await client.transport.request({
+ return await client.transport.request({
method: 'DELETE',
path: `/_connector/_secret/${id}`,
});
diff --git a/packages/kbn-search-connectors/lib/update_connector_name_and_description.test.ts b/packages/kbn-search-connectors/lib/update_connector_name_and_description.test.ts
new file mode 100644
index 0000000000000..77ba55027501d
--- /dev/null
+++ b/packages/kbn-search-connectors/lib/update_connector_name_and_description.test.ts
@@ -0,0 +1,82 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import { ElasticsearchClient } from '@kbn/core/server';
+
+import { errors } from '@elastic/elasticsearch';
+
+import { updateConnectorNameAndDescription } from './update_connector_name_and_description';
+
+describe('updateConnectorNameAndDescription lib function', () => {
+ const mockClient = {
+ transport: {
+ request: jest.fn(),
+ },
+ };
+
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it('should update connector name and description', async () => {
+ mockClient.transport.request.mockImplementation(() => ({ result: 'updated' }));
+
+ await expect(
+ updateConnectorNameAndDescription(
+ mockClient as unknown as ElasticsearchClient,
+ 'connectorId',
+ {
+ name: 'connector-name',
+ description: 'connector-description',
+ }
+ )
+ ).resolves.toEqual({ result: 'updated' });
+ expect(mockClient.transport.request).toHaveBeenCalledWith({
+ body: {
+ name: 'connector-name',
+ description: 'connector-description',
+ },
+ method: 'PUT',
+ path: '/_connector/connectorId/_name',
+ });
+ });
+
+ it('should not index document if there is no connector', async () => {
+ mockClient.transport.request.mockImplementationOnce(() => {
+ return Promise.reject(
+ new errors.ResponseError({
+ statusCode: 404,
+ body: {
+ error: {
+ type: `document_missing_exception`,
+ },
+ },
+ } as any)
+ );
+ });
+ await expect(
+ updateConnectorNameAndDescription(
+ mockClient as unknown as ElasticsearchClient,
+ 'connectorId',
+ {
+ name: 'connector-name',
+ description: 'connector-description',
+ }
+ )
+ ).rejects.toEqual(
+ new errors.ResponseError({
+ statusCode: 404,
+ body: {
+ error: {
+ type: `document_missing_exception`,
+ },
+ },
+ } as any)
+ );
+ });
+});
diff --git a/packages/kbn-search-connectors/lib/update_connector_name_and_description.ts b/packages/kbn-search-connectors/lib/update_connector_name_and_description.ts
index 985ae8dd029a3..1929018bed37f 100644
--- a/packages/kbn-search-connectors/lib/update_connector_name_and_description.ts
+++ b/packages/kbn-search-connectors/lib/update_connector_name_and_description.ts
@@ -6,37 +6,24 @@
* Side Public License, v 1.
*/
-import { WriteResponseBase } from '@elastic/elasticsearch/lib/api/types';
+import { Result } from '@elastic/elasticsearch/lib/api/types';
import { ElasticsearchClient } from '@kbn/core/server';
-import { i18n } from '@kbn/i18n';
-import { CONNECTORS_INDEX } from '..';
-
-import { Connector, ConnectorDocument } from '../types/connectors';
+import { Connector } from '../types/connectors';
export const updateConnectorNameAndDescription = async (
client: ElasticsearchClient,
connectorId: string,
connectorUpdates: Partial>
-): Promise => {
- const connectorResult = await client.get({
- id: connectorId,
- index: CONNECTORS_INDEX,
+): Promise => {
+ const { name, description } = connectorUpdates;
+ const result = await client.transport.request({
+ method: 'PUT',
+ path: `/_connector/${connectorId}/_name`,
+ body: {
+ name,
+ description,
+ },
});
- const connector = connectorResult._source;
- if (connector) {
- const result = await client.index({
- document: { ...connector, ...connectorUpdates },
- id: connectorId,
- index: CONNECTORS_INDEX,
- });
- await client.indices.refresh({ index: CONNECTORS_INDEX });
- return result;
- } else {
- throw new Error(
- i18n.translate('searchConnectors.server.connectors.serviceType.error', {
- defaultMessage: 'Could not find document',
- })
- );
- }
+ return result;
};
diff --git a/packages/kbn-search-connectors/lib/update_connector_scheduling.test.ts b/packages/kbn-search-connectors/lib/update_connector_scheduling.test.ts
index 56357a3fb166a..b386338a8cf6c 100644
--- a/packages/kbn-search-connectors/lib/update_connector_scheduling.test.ts
+++ b/packages/kbn-search-connectors/lib/update_connector_scheduling.test.ts
@@ -12,7 +12,7 @@ import { errors } from '@elastic/elasticsearch';
import { updateConnectorScheduling } from './update_connector_scheduling';
-describe('addConnector lib function', () => {
+describe('updateConnectorScheduling lib function', () => {
const mockClient = {
transport: {
request: jest.fn(),
diff --git a/packages/kbn-search-connectors/lib/update_connector_scheduling.ts b/packages/kbn-search-connectors/lib/update_connector_scheduling.ts
index 1adfce462631f..04ec6e33515e3 100644
--- a/packages/kbn-search-connectors/lib/update_connector_scheduling.ts
+++ b/packages/kbn-search-connectors/lib/update_connector_scheduling.ts
@@ -6,12 +6,12 @@
* Side Public License, v 1.
*/
+import { Result } from '@elastic/elasticsearch/lib/api/types';
import { ElasticsearchClient } from '@kbn/core/server';
import { i18n } from '@kbn/i18n';
import { isNotFoundException } from '../utils/identify_exceptions';
import { SchedulingConfiguraton } from '../types/connectors';
-import { ConnectorsAPIUpdateResponse } from '../types/connectors_api';
export const updateConnectorScheduling = async (
client: ElasticsearchClient,
@@ -19,7 +19,7 @@ export const updateConnectorScheduling = async (
scheduling: SchedulingConfiguraton
) => {
try {
- const result = await client.transport.request({
+ const result = await client.transport.request({
method: 'PUT',
path: `/_connector/${connectorId}/_scheduling`,
body: {
diff --git a/packages/kbn-search-connectors/lib/update_connector_secret.ts b/packages/kbn-search-connectors/lib/update_connector_secret.ts
index 516818b7e9b8d..a59ad128d4f89 100644
--- a/packages/kbn-search-connectors/lib/update_connector_secret.ts
+++ b/packages/kbn-search-connectors/lib/update_connector_secret.ts
@@ -7,14 +7,14 @@
*/
import { ElasticsearchClient } from '@kbn/core-elasticsearch-server';
-import { ConnectorsAPIUpdateResponse } from '../types/connectors_api';
+import { Result } from '@elastic/elasticsearch/lib/api/types';
export const updateConnectorSecret = async (
client: ElasticsearchClient,
value: string,
secretId: string
) => {
- return await client.transport.request({
+ return await client.transport.request({
method: 'PUT',
path: `/_connector/_secret/${secretId}`,
body: {
diff --git a/packages/kbn-search-connectors/types/connectors_api.ts b/packages/kbn-search-connectors/types/connectors_api.ts
index 3b96eeb09b0d8..265aee65cc68c 100644
--- a/packages/kbn-search-connectors/types/connectors_api.ts
+++ b/packages/kbn-search-connectors/types/connectors_api.ts
@@ -10,23 +10,10 @@
import { ConnectorSyncJob, Connector } from './connectors';
-enum Result {
- created = 'created',
- updated = 'updated',
- deleted = 'deleted',
- not_found = 'not_found',
- no_op = 'noop',
-}
-
export interface ConnectorAPIListConnectorsResponse {
count: number;
results: Connector[];
}
-
-export interface ConnectorsAPIUpdateResponse {
- result: Result;
-}
-
export interface ConnectorsAPISyncJobResponse {
count: number;
results: ConnectorSyncJob[];
diff --git a/packages/kbn-search-connectors/types/native_connectors.ts b/packages/kbn-search-connectors/types/native_connectors.ts
index f2b61ecd7e523..f036b119da28b 100644
--- a/packages/kbn-search-connectors/types/native_connectors.ts
+++ b/packages/kbn-search-connectors/types/native_connectors.ts
@@ -3467,7 +3467,7 @@ export const NATIVE_CONNECTOR_DEFINITIONS: Record/packages/kbn-timerange'],
+};
diff --git a/packages/kbn-timerange/kibana.jsonc b/packages/kbn-timerange/kibana.jsonc
new file mode 100644
index 0000000000000..e3f2e74f771a6
--- /dev/null
+++ b/packages/kbn-timerange/kibana.jsonc
@@ -0,0 +1,5 @@
+{
+ "type": "shared-common",
+ "id": "@kbn/timerange",
+ "owner": "@elastic/obs-ux-logs-team"
+}
diff --git a/packages/kbn-timerange/package.json b/packages/kbn-timerange/package.json
new file mode 100644
index 0000000000000..63c6824411291
--- /dev/null
+++ b/packages/kbn-timerange/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@kbn/timerange",
+ "private": true,
+ "version": "1.0.0",
+ "license": "SSPL-1.0 OR Elastic License 2.0"
+}
\ No newline at end of file
diff --git a/packages/kbn-timerange/src/index.ts b/packages/kbn-timerange/src/index.ts
new file mode 100644
index 0000000000000..3bfc0b72b5c15
--- /dev/null
+++ b/packages/kbn-timerange/src/index.ts
@@ -0,0 +1,53 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import datemath from '@kbn/datemath';
+
+function getParsedDate(rawDate?: string, options = {}) {
+ if (rawDate) {
+ const parsed = datemath.parse(rawDate, options);
+ if (parsed && parsed.isValid()) {
+ return parsed.toDate();
+ }
+ }
+}
+
+function getRanges({ from, to }: { from: string; to: string }) {
+ const start = getParsedDate(from);
+ const end = getParsedDate(to, { roundUp: true });
+
+ if (!start || !end || start > end) {
+ throw new Error(`Invalid Dates: from: ${from}, to: ${to}`);
+ }
+
+ const startDate = start.toISOString();
+ const endDate = end.toISOString();
+
+ return {
+ startDate,
+ endDate,
+ };
+}
+
+export function getDateRange({ from, to }: { from: string; to: string }) {
+ const { startDate, endDate } = getRanges({ from, to });
+
+ return {
+ startDate: new Date(startDate).getTime(),
+ endDate: new Date(endDate).getTime(),
+ };
+}
+
+export function getDateISORange({ from, to }: { from: string; to: string }) {
+ const { startDate, endDate } = getRanges({ from, to });
+
+ return {
+ startDate,
+ endDate,
+ };
+}
diff --git a/packages/kbn-timerange/tsconfig.json b/packages/kbn-timerange/tsconfig.json
new file mode 100644
index 0000000000000..9690a889a4891
--- /dev/null
+++ b/packages/kbn-timerange/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "target/types",
+ "types": [
+ "jest",
+ "node",
+ "react"
+ ]
+ },
+ "include": [
+ "**/*.ts",
+ "**/*.tsx",
+ ],
+ "exclude": [
+ "target/**/*"
+ ],
+ "kbn_references": [
+ "@kbn/datemath",
+ ]
+}
diff --git a/packages/kbn-ui-theme/index.ts b/packages/kbn-ui-theme/index.ts
index 8f178a79e64ad..1fda72ed8b3f5 100644
--- a/packages/kbn-ui-theme/index.ts
+++ b/packages/kbn-ui-theme/index.ts
@@ -8,4 +8,12 @@
export type { Theme } from './src/theme';
-export { darkMode, euiDarkVars, euiLightVars, euiThemeVars, tag, version } from './src/theme';
+export {
+ darkMode,
+ tag,
+ version,
+ euiDarkVars,
+ euiLightVars,
+ euiThemeVars,
+ _setDarkMode,
+} from './src/theme';
diff --git a/packages/kbn-ui-theme/src/theme.ts b/packages/kbn-ui-theme/src/theme.ts
index 8fde5c63a292a..5edf6e559351f 100644
--- a/packages/kbn-ui-theme/src/theme.ts
+++ b/packages/kbn-ui-theme/src/theme.ts
@@ -17,19 +17,26 @@ export type Theme = typeof v8Light;
// in the Kibana app we can rely on this global being defined, but in
// some cases (like jest) the global is undefined
+/** @deprecated theme can be dynamic now, access is discouraged */
export const tag: string = globals.__kbnThemeTag__ || 'v8light';
+/** @deprecated theme can be dynamic now, access is discouraged */
export const version = 8;
+/** @deprecated theme can be dynamic now, access is discouraged */
export const darkMode = tag.endsWith('dark');
export const euiLightVars: Theme = v8Light;
export const euiDarkVars: Theme = v8Dark;
+let isDarkMode = darkMode;
+export const _setDarkMode = (mode: boolean) => {
+ isDarkMode = mode;
+};
+
/**
* EUI Theme vars that automatically adjust to light/dark theme
*/
-export let euiThemeVars: Theme;
-if (darkMode) {
- euiThemeVars = euiDarkVars;
-} else {
- euiThemeVars = euiLightVars;
-}
+export const euiThemeVars: Theme = new Proxy(isDarkMode ? euiDarkVars : euiLightVars, {
+ get(accessedTarget, accessedKey, ...rest) {
+ return Reflect.get(isDarkMode ? euiDarkVars : euiLightVars, accessedKey, ...rest);
+ },
+});
diff --git a/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts b/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts
index 536bb87f77573..3dcfe8302ea28 100644
--- a/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts
+++ b/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts
@@ -107,7 +107,7 @@ describe('checking migration metadata changes on all registered SO types', () =>
"infrastructure-ui-source": "113182d6895764378dfe7fa9fa027244f3a457c4",
"ingest-agent-policies": "7633e578f60c074f8267bc50ec4763845e431437",
"ingest-download-sources": "279a68147e62e4d8858c09ad1cf03bd5551ce58d",
- "ingest-outputs": "ba8ef97414bc983efdf1c4285afa622df8b4344a",
+ "ingest-outputs": "daafff49255ab700e07491376fe89f04fc998b91",
"ingest-package-policies": "f4c2767e852b700a8b82678925b86bac08958b43",
"ingest_manager_settings": "91445219e7115ff0c45d1dabd5d614a80b421797",
"inventory-view": "b8683c8e352a286b4aca1ab21003115a4800af83",
diff --git a/src/dev/license_checker/config.ts b/src/dev/license_checker/config.ts
index 6b1be5c45934a..319d66567336b 100644
--- a/src/dev/license_checker/config.ts
+++ b/src/dev/license_checker/config.ts
@@ -85,7 +85,7 @@ export const LICENSE_OVERRIDES = {
'jsts@1.6.2': ['Eclipse Distribution License - v 1.0'], // cf. https://github.com/bjornharrtell/jsts
'@mapbox/jsonlint-lines-primitives@2.0.2': ['MIT'], // license in readme https://github.com/tmcw/jsonlint
'@elastic/ems-client@8.5.1': ['Elastic License 2.0'],
- '@elastic/eui@93.0.0': ['SSPL-1.0 OR Elastic License 2.0'],
+ '@elastic/eui@93.1.1': ['SSPL-1.0 OR Elastic License 2.0'],
'language-subtag-registry@0.3.21': ['CC-BY-4.0'], // retired ODC‑By license https://github.com/mattcg/language-subtag-registry
'buffers@0.1.1': ['MIT'], // license in importing module https://www.npmjs.com/package/binary
'@bufbuild/protobuf@1.2.1': ['Apache-2.0'], // license (Apache-2.0 AND BSD-3-Clause)
diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js
index fb6006fda0a78..785bd58f500b2 100644
--- a/src/dev/precommit_hook/casing_check_config.js
+++ b/src/dev/precommit_hook/casing_check_config.js
@@ -40,7 +40,6 @@ export const IGNORE_FILE_GLOBS = [
'packages/kbn-utility-types/test-d/**/*',
'Dockerfile*',
'vars/*',
- '.ci/pipeline-library/**/*',
'packages/kbn-test/jest-preset.js',
'packages/kbn-test/*/jest-preset.js',
'test/package/Vagrantfile',
diff --git a/src/plugins/chart_expressions/expression_xy/public/components/annotations.scss b/src/plugins/chart_expressions/expression_xy/public/components/annotations.scss
index f2211dfdf8e21..59250200bba6b 100644
--- a/src/plugins/chart_expressions/expression_xy/public/components/annotations.scss
+++ b/src/plugins/chart_expressions/expression_xy/public/components/annotations.scss
@@ -58,4 +58,8 @@
position: relative;
text-align: right;
font-weight: $euiFontWeightRegular;
+}
+
+.echAnnotation {
+ max-width: 500px;
}
\ No newline at end of file
diff --git a/src/plugins/chart_expressions/expression_xy/public/components/annotations.tsx b/src/plugins/chart_expressions/expression_xy/public/components/annotations.tsx
index 04147dacfba6f..4fd900e720b65 100644
--- a/src/plugins/chart_expressions/expression_xy/public/components/annotations.tsx
+++ b/src/plugins/chart_expressions/expression_xy/public/components/annotations.tsx
@@ -23,9 +23,9 @@ import {
EuiFlexGroup,
EuiFlexItem,
EuiHorizontalRule,
+ EuiIcon,
EuiPanel,
EuiSpacer,
- EuiText,
EuiTitle,
} from '@elastic/eui';
import type {
@@ -45,7 +45,7 @@ import { mapVerticalToHorizontalPlacement, LINES_MARKER_SIZE } from '../helpers'
export interface AnnotationsProps {
groupedLineAnnotations: MergedAnnotation[];
rangeAnnotations: ManualRangeEventAnnotationRow[];
- formatter?: FieldFormat;
+ timeFormat?: string;
isHorizontal: boolean;
paddingMap: Partial>;
simpleView?: boolean;
@@ -270,7 +270,7 @@ RectAnnotation.displayName = 'RectAnnotation';
export const Annotations = ({
groupedLineAnnotations,
rangeAnnotations,
- formatter,
+ timeFormat,
isHorizontal,
paddingMap,
simpleView,
@@ -355,18 +355,30 @@ export const Annotations = ({
id={id}
key={id}
customTooltip={() => (
-
-
-
-
- {formatter
- ? `${formatter.convert(time)} — ${formatter?.convert(endTime)}`
- : `${moment(time).toISOString()} — ${moment(endTime).toISOString()}`}
-
-
+
+
+
+
+
+
+
+
+ {label}
+
+ {`${moment(time).format(timeFormat)} — ${moment(endTime).format(
+ timeFormat
+ )}`}
+
+
- {label}
-
+
)}
dataValues={[
{
diff --git a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx
index 7e4c5a5c6b974..3b68f558040ad 100644
--- a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx
+++ b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx
@@ -212,10 +212,8 @@ export function XYChart({
syncTooltips,
syncCursor,
shouldUseVeil,
-
useLegacyTimeAxis,
renderComplete,
-
uiState,
timeFormat,
overrides,
@@ -1021,7 +1019,7 @@ export function XYChart({
0}
diff --git a/src/plugins/data_view_editor/public/components/form_fields/timestamp_field.tsx b/src/plugins/data_view_editor/public/components/form_fields/timestamp_field.tsx
index 0fcb948d83c63..0e5e58c8d9d31 100644
--- a/src/plugins/data_view_editor/public/components/form_fields/timestamp_field.tsx
+++ b/src/plugins/data_view_editor/public/components/form_fields/timestamp_field.tsx
@@ -150,6 +150,7 @@ export const TimestampField = ({ options$, isLoadingOptions$, matchedIndices$ }:
}
)}
isLoading={isLoadingOptions}
+ data-is-loading={isLoadingOptions ? '1' : '0'}
fullWidth
/>
diff --git a/src/plugins/discover/public/application/context/context_app_content.tsx b/src/plugins/discover/public/application/context/context_app_content.tsx
index fadb561aada0b..f0dc48a1905e7 100644
--- a/src/plugins/discover/public/application/context/context_app_content.tsx
+++ b/src/plugins/discover/public/application/context/context_app_content.tsx
@@ -14,6 +14,7 @@ import type { DataView } from '@kbn/data-views-plugin/public';
import { SortDirection } from '@kbn/data-plugin/public';
import type { SortOrder } from '@kbn/saved-search-plugin/public';
import { CellActionsProvider } from '@kbn/cell-actions';
+import type { DiscoverGridSettings } from '@kbn/saved-search-plugin/common';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import {
type SearchResponseWarning,
@@ -38,6 +39,7 @@ import { MAX_CONTEXT_SIZE, MIN_CONTEXT_SIZE } from './services/constants';
import { DocTableContext } from '../../components/doc_table/doc_table_context';
import { useDiscoverServices } from '../../hooks/use_discover_services';
import { DiscoverGridFlyout } from '../../components/discover_grid_flyout';
+import { onResizeGridColumn } from '../../utils/on_resize_grid_column';
export interface ContextAppContentProps {
columns: string[];
@@ -92,6 +94,7 @@ export function ContextAppContent({
}: ContextAppContentProps) {
const { uiSettings: config, uiActions } = useDiscoverServices();
const services = useDiscoverServices();
+ const [gridSettings, setGridSettings] = useState();
const [expandedDoc, setExpandedDoc] = useState();
const isAnchorLoading =
@@ -148,6 +151,15 @@ export function ContextAppContent({
[addFilter, dataView, onAddColumn, onRemoveColumn]
);
+ const onResize = useCallback(
+ (colSettings) => {
+ setGridSettings((currentGridSettings) =>
+ onResizeGridColumn(colSettings, currentGridSettings)
+ );
+ },
+ [setGridSettings]
+ );
+
return (
@@ -209,6 +221,8 @@ export function ContextAppContent({
renderDocumentView={renderDocumentView}
services={services}
configHeaderRowHeight={3}
+ settings={gridSettings}
+ onResize={onResize}
/>
diff --git a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx
index c0147009f6f8e..1d77cd50afd6c 100644
--- a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx
+++ b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx
@@ -66,6 +66,7 @@ import { useSavedSearchInitial } from '../../services/discover_state_provider';
import { useFetchMoreRecords } from './use_fetch_more_records';
import { SelectedVSAvailableCallout } from './selected_vs_available_callout';
import { useDiscoverCustomization } from '../../../../customizations';
+import { onResizeGridColumn } from '../../../../utils/on_resize_grid_column';
const containerStyles = css`
position: relative;
@@ -86,12 +87,7 @@ export const onResize = (
stateContainer: DiscoverStateContainer
) => {
const state = stateContainer.appState.getState();
- const grid = { ...(state.grid || {}) };
- const newColumns = { ...(grid.columns || {}) };
- newColumns[colSettings.columnId] = {
- width: Math.round(colSettings.width),
- };
- const newGrid = { ...grid, columns: newColumns };
+ const newGrid = onResizeGridColumn(colSettings, state.grid);
stateContainer.appState.update({ grid: newGrid });
};
diff --git a/src/plugins/discover/public/application/main/services/discover_state.ts b/src/plugins/discover/public/application/main/services/discover_state.ts
index 79577a8f8e616..1e9be0600c3af 100644
--- a/src/plugins/discover/public/application/main/services/discover_state.ts
+++ b/src/plugins/discover/public/application/main/services/discover_state.ts
@@ -183,7 +183,7 @@ export interface DiscoverStateContainer {
* Triggered when the user selects a different data view in the data view picker
* @param id - id of the data view
*/
- onChangeDataView: (id: string) => Promise;
+ onChangeDataView: (id: string | DataView) => Promise;
/**
* Set the currently selected data view
* @param dataView
diff --git a/src/plugins/discover/public/utils/on_resize_grid_column.test.tsx b/src/plugins/discover/public/utils/on_resize_grid_column.test.tsx
new file mode 100644
index 0000000000000..a334e62986484
--- /dev/null
+++ b/src/plugins/discover/public/utils/on_resize_grid_column.test.tsx
@@ -0,0 +1,56 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import { onResizeGridColumn } from './on_resize_grid_column';
+
+describe('Discover onResizeGridColumn', () => {
+ test('should handle empty initial value', () => {
+ const newGrid = onResizeGridColumn(
+ {
+ columnId: 'test',
+ width: 50,
+ },
+ undefined
+ );
+
+ expect(newGrid).toMatchInlineSnapshot(`
+ Object {
+ "columns": Object {
+ "test": Object {
+ "width": 50,
+ },
+ },
+ }
+ `);
+ });
+
+ test('should set rounded width to state on resize column', () => {
+ const grid = { columns: { timestamp: { width: 173 }, someField: { width: 197 } } };
+
+ const newGrid = onResizeGridColumn(
+ {
+ columnId: 'someField',
+ width: 205.5435345534,
+ },
+ grid
+ );
+
+ expect(newGrid).toMatchInlineSnapshot(`
+ Object {
+ "columns": Object {
+ "someField": Object {
+ "width": 206,
+ },
+ "timestamp": Object {
+ "width": 173,
+ },
+ },
+ }
+ `);
+ });
+});
diff --git a/src/plugins/discover/public/utils/on_resize_grid_column.ts b/src/plugins/discover/public/utils/on_resize_grid_column.ts
new file mode 100644
index 0000000000000..cacbc2085b22f
--- /dev/null
+++ b/src/plugins/discover/public/utils/on_resize_grid_column.ts
@@ -0,0 +1,21 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import type { DiscoverGridSettings } from '@kbn/saved-search-plugin/common';
+
+export const onResizeGridColumn = (
+ colSettings: { columnId: string; width: number },
+ gridState: DiscoverGridSettings | undefined
+): DiscoverGridSettings => {
+ const grid = { ...(gridState || {}) };
+ const newColumns = { ...(grid.columns || {}) };
+ newColumns[colSettings.columnId] = {
+ width: Math.round(colSettings.width),
+ };
+ return { ...grid, columns: newColumns };
+};
diff --git a/src/plugins/files/server/routes/common.test.ts b/src/plugins/files/server/routes/common.test.ts
index 3b10adb5226f9..21b24a7c018d1 100644
--- a/src/plugins/files/server/routes/common.test.ts
+++ b/src/plugins/files/server/routes/common.test.ts
@@ -10,48 +10,40 @@ import type { File } from '../file';
import { getDownloadHeadersForFile } from './common';
describe('getDownloadHeadersForFile', () => {
- function expectHeaders({
- contentDisposition,
- contentType,
- }: {
- contentDisposition: string;
- contentType: string;
- }) {
+ function expectHeaders({ contentType }: { contentType: string }) {
return {
'content-type': contentType,
- 'content-disposition': `attachment; filename="${contentDisposition}"`,
'cache-control': 'max-age=31536000, immutable',
- 'x-content-type-options': 'nosniff',
};
}
const file = { data: { name: 'test', mimeType: undefined } } as unknown as File;
test('no mime type and name from file object', () => {
expect(getDownloadHeadersForFile({ file, fileName: undefined })).toEqual(
- expectHeaders({ contentType: 'application/octet-stream', contentDisposition: 'test' })
+ expectHeaders({ contentType: 'application/octet-stream' })
);
});
test('no mime type and name (without ext)', () => {
expect(getDownloadHeadersForFile({ file, fileName: 'myfile' })).toEqual(
- expectHeaders({ contentType: 'application/octet-stream', contentDisposition: 'myfile' })
+ expectHeaders({ contentType: 'application/octet-stream' })
);
});
test('no mime type and name (with ext)', () => {
expect(getDownloadHeadersForFile({ file, fileName: 'myfile.png' })).toEqual(
- expectHeaders({ contentType: 'image/png', contentDisposition: 'myfile.png' })
+ expectHeaders({ contentType: 'image/png' })
);
});
test('mime type and no name', () => {
const fileWithMime = { data: { ...file.data, mimeType: 'application/pdf' } } as File;
expect(getDownloadHeadersForFile({ file: fileWithMime, fileName: undefined })).toEqual(
- expectHeaders({ contentType: 'application/pdf', contentDisposition: 'test' })
+ expectHeaders({ contentType: 'application/pdf' })
);
});
test('mime type and name', () => {
const fileWithMime = { data: { ...file.data, mimeType: 'application/pdf' } } as File;
expect(getDownloadHeadersForFile({ file: fileWithMime, fileName: 'a cool file.pdf' })).toEqual(
- expectHeaders({ contentType: 'application/pdf', contentDisposition: 'a cool file.pdf' })
+ expectHeaders({ contentType: 'application/pdf' })
);
});
});
diff --git a/src/plugins/files/server/routes/common.ts b/src/plugins/files/server/routes/common.ts
index aba84ee6487ec..77d743452a1e4 100644
--- a/src/plugins/files/server/routes/common.ts
+++ b/src/plugins/files/server/routes/common.ts
@@ -19,11 +19,7 @@ export function getDownloadHeadersForFile({ file, fileName }: Args): ResponseHea
return {
'content-type':
(fileName && mime.getType(fileName)) ?? file.data.mimeType ?? 'application/octet-stream',
- // Note, this name can be overridden by the client if set via a "download" attribute on the HTML tag.
- 'content-disposition': `attachment; filename="${fileName || getDownloadedFileName(file)}"`,
'cache-control': 'max-age=31536000, immutable',
- // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
- 'x-content-type-options': 'nosniff',
};
}
diff --git a/src/plugins/files/server/routes/file_kind/download.ts b/src/plugins/files/server/routes/file_kind/download.ts
index 842bf5744956a..94afb51751071 100644
--- a/src/plugins/files/server/routes/file_kind/download.ts
+++ b/src/plugins/files/server/routes/file_kind/download.ts
@@ -12,7 +12,7 @@ import type { FilesClient } from '../../../common/files_client';
import type { FileKind } from '../../../common/types';
import { fileNameWithExt } from '../common_schemas';
import { fileErrors } from '../../file';
-import { getDownloadHeadersForFile } from '../common';
+import { getDownloadHeadersForFile, getDownloadedFileName } from '../common';
import { getById } from './helpers';
import type { CreateHandler, FileKindRouter } from './types';
import { CreateRouteDefinition, FILES_API_ROUTES } from '../api_routes';
@@ -39,8 +39,9 @@ export const handler: CreateHandler = async ({ files, fileKind }, req,
if (error) return error;
try {
const body: Response = await file.downloadContent();
- return res.ok({
+ return res.file({
body,
+ filename: fileName ?? getDownloadedFileName(file),
headers: getDownloadHeadersForFile({ file, fileName }),
});
} catch (e) {
diff --git a/src/plugins/files/server/routes/file_kind/integration_tests/file_kind_http.test.ts b/src/plugins/files/server/routes/file_kind/integration_tests/file_kind_http.test.ts
index 6fe0986e42df9..23ddcb704b65d 100644
--- a/src/plugins/files/server/routes/file_kind/integration_tests/file_kind_http.test.ts
+++ b/src/plugins/files/server/routes/file_kind/integration_tests/file_kind_http.test.ts
@@ -72,7 +72,7 @@ describe('File kind HTTP API', () => {
.expect(200);
expect(header['content-type']).toEqual('image/png');
- expect(header['content-disposition']).toEqual('attachment; filename="test.png"');
+ expect(header['content-disposition']).toEqual('attachment; filename=test.png');
expect(buffer.toString('utf8')).toEqual('what have you');
});
diff --git a/src/plugins/files/server/routes/integration_tests/routes.test.ts b/src/plugins/files/server/routes/integration_tests/routes.test.ts
index 5852d017d923f..ecb14ece09ad8 100644
--- a/src/plugins/files/server/routes/integration_tests/routes.test.ts
+++ b/src/plugins/files/server/routes/integration_tests/routes.test.ts
@@ -331,7 +331,7 @@ describe('File HTTP API', () => {
.expect(200);
expect(header['content-type']).toEqual('application/pdf');
- expect(header['content-disposition']).toEqual('attachment; filename="myfilename.pdf"');
+ expect(header['content-disposition']).toEqual('attachment; filename=myfilename.pdf');
expect(buffer.toString('utf8')).toEqual('test');
});
});
diff --git a/src/plugins/files/server/routes/public_facing/download.ts b/src/plugins/files/server/routes/public_facing/download.ts
index 6eadde2aaa383..0cf25e323b08d 100644
--- a/src/plugins/files/server/routes/public_facing/download.ts
+++ b/src/plugins/files/server/routes/public_facing/download.ts
@@ -17,7 +17,7 @@ import {
} from '../../file_share_service/errors';
import type { FilesRouter } from '../types';
import { CreateRouteDefinition, FILES_API_ROUTES } from '../api_routes';
-import { getDownloadHeadersForFile } from '../common';
+import { getDownloadHeadersForFile, getDownloadedFileName } from '../common';
import { fileNameWithExt } from '../common_schemas';
import { CreateHandler } from '../types';
@@ -44,8 +44,9 @@ const handler: CreateHandler = async ({ files }, req, res) => {
try {
const file = await fileService.asInternalUser().getByToken(token);
const body: Readable = await file.downloadContent();
- return res.ok({
+ return res.file({
body,
+ filename: fileName ?? getDownloadedFileName(file),
headers: getDownloadHeadersForFile({ file, fileName }),
});
} catch (e) {
diff --git a/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap b/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap
index 61aa40604fa95..d1b14ab7a4c69 100644
--- a/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap
+++ b/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap
@@ -481,6 +481,12 @@ exports[`Overview renders correctly when there is no user data view 1`] = `
Array [
"/app/integrations/browse",
],
+ Array [
+ "/app/integrations/browse",
+ ],
+ Array [
+ "/app/integrations/browse",
+ ],
Array [
"kibana_landing_page",
],
@@ -529,6 +535,18 @@ exports[`Overview renders correctly when there is no user data view 1`] = `
Array [
"/app/integrations/browse",
],
+ Array [
+ "/app/integrations/browse",
+ ],
+ Array [
+ "/app/integrations/browse",
+ ],
+ Array [
+ "/app/integrations/browse",
+ ],
+ Array [
+ "/app/integrations/browse",
+ ],
Array [
"kibana_landing_page",
],
@@ -568,6 +586,9 @@ exports[`Overview renders correctly when there is no user data view 1`] = `
Array [
"/app/integrations/browse",
],
+ Array [
+ "/app/integrations/browse",
+ ],
],
"results": Array [
Object {
@@ -586,6 +607,14 @@ exports[`Overview renders correctly when there is no user data view 1`] = `
"type": "return",
"value": "/app/integrations/browse",
},
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
Object {
"type": "return",
"value": "kibana_landing_page",
@@ -650,6 +679,22 @@ exports[`Overview renders correctly when there is no user data view 1`] = `
"type": "return",
"value": "/app/integrations/browse",
},
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
Object {
"type": "return",
"value": "kibana_landing_page",
@@ -702,6 +747,10 @@ exports[`Overview renders correctly when there is no user data view 1`] = `
"type": "return",
"value": "/app/integrations/browse",
},
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
],
},
},
@@ -791,6 +840,12 @@ exports[`Overview renders correctly when there is no user data view 1`] = `
Array [
"/app/integrations/browse",
],
+ Array [
+ "/app/integrations/browse",
+ ],
+ Array [
+ "/app/integrations/browse",
+ ],
Array [
"kibana_landing_page",
],
@@ -839,6 +894,18 @@ exports[`Overview renders correctly when there is no user data view 1`] = `
Array [
"/app/integrations/browse",
],
+ Array [
+ "/app/integrations/browse",
+ ],
+ Array [
+ "/app/integrations/browse",
+ ],
+ Array [
+ "/app/integrations/browse",
+ ],
+ Array [
+ "/app/integrations/browse",
+ ],
Array [
"kibana_landing_page",
],
@@ -878,6 +945,9 @@ exports[`Overview renders correctly when there is no user data view 1`] = `
Array [
"/app/integrations/browse",
],
+ Array [
+ "/app/integrations/browse",
+ ],
],
"results": Array [
Object {
@@ -896,6 +966,14 @@ exports[`Overview renders correctly when there is no user data view 1`] = `
"type": "return",
"value": "/app/integrations/browse",
},
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
Object {
"type": "return",
"value": "kibana_landing_page",
@@ -960,6 +1038,22 @@ exports[`Overview renders correctly when there is no user data view 1`] = `
"type": "return",
"value": "/app/integrations/browse",
},
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
Object {
"type": "return",
"value": "kibana_landing_page",
@@ -1012,6 +1106,10 @@ exports[`Overview renders correctly when there is no user data view 1`] = `
"type": "return",
"value": "/app/integrations/browse",
},
+ Object {
+ "type": "return",
+ "value": "/app/integrations/browse",
+ },
],
},
},
diff --git a/src/plugins/kibana_overview/public/components/overview/overview.test.mocks.ts b/src/plugins/kibana_overview/public/components/overview/overview.test.mocks.ts
index ce02f2cb483e7..7e1af1e5f609d 100644
--- a/src/plugins/kibana_overview/public/components/overview/overview.test.mocks.ts
+++ b/src/plugins/kibana_overview/public/components/overview/overview.test.mocks.ts
@@ -7,7 +7,7 @@
*/
import React from 'react';
-import { Observable } from 'rxjs';
+import { Observable, of } from 'rxjs';
import { indexPatternEditorPluginMock } from '@kbn/data-view-editor-plugin/public/mocks';
export const hasUserDataView = jest.fn();
@@ -45,6 +45,9 @@ jest.doMock('@kbn/kibana-react-plugin/public', () => ({
},
},
},
+ theme: {
+ theme$: of({ darkMode: false }),
+ },
},
}),
RedirectAppLinks: jest.fn((element: JSX.Element) => element),
diff --git a/src/plugins/kibana_overview/public/components/overview/overview.tsx b/src/plugins/kibana_overview/public/components/overview/overview.tsx
index 2b3f532a0fb52..9679c5fa0ecb0 100644
--- a/src/plugins/kibana_overview/public/components/overview/overview.tsx
+++ b/src/plugins/kibana_overview/public/components/overview/overview.tsx
@@ -8,6 +8,7 @@
import { snakeCase } from 'lodash';
import React, { FC, useState, useEffect } from 'react';
+import useObservable from 'react-use/lib/useObservable';
import {
EuiCard,
EuiFlexGroup,
@@ -64,14 +65,14 @@ export const Overview: FC = ({ newsFetchResult, solutions, features }) =>
docLinks,
dataViews,
share,
- uiSettings,
application,
chrome,
dataViewEditor,
customBranding,
+ theme,
} = services;
const addBasePath = http.basePath.prepend;
- const IS_DARK_THEME = uiSettings.get('theme:darkMode');
+ const currentTheme = useObservable(theme.theme$, { darkMode: false });
// Home does not have a locator implemented, so hard-code it here.
const addDataHref = addBasePath('/app/integrations/browse');
@@ -145,7 +146,7 @@ export const Overview: FC = ({ newsFetchResult, solutions, features }) =>
}}
image={addBasePath(
`/plugins/${PLUGIN_ID}/assets/kibana_${appId}_${
- IS_DARK_THEME ? 'dark' : 'light'
+ currentTheme.darkMode ? 'dark' : 'light'
}.svg`
)}
title={app.title}
diff --git a/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.test.tsx b/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.test.tsx
index 116dca0169f9b..f937dfe643dce 100644
--- a/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.test.tsx
+++ b/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.test.tsx
@@ -12,13 +12,17 @@ import { getMockPresentationContainer } from '@kbn/presentation-containers/mocks
import { PublishesDataViews, PublishesViewMode, ViewMode } from '@kbn/presentation-publishing';
import { render, screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
-import React from 'react';
+import React, { useImperativeHandle } from 'react';
import { BehaviorSubject } from 'rxjs';
import { PresentationPanel } from '.';
import { uiActions } from '../kibana_services';
import { getMockPresentationPanelCompatibleComponent } from '../mocks';
import * as openCustomizePanel from '../panel_actions/customize_panel_action/open_customize_panel';
-import { DefaultPresentationPanelApi, PresentationPanelInternalProps } from './types';
+import {
+ DefaultPresentationPanelApi,
+ PanelCompatibleComponent,
+ PresentationPanelInternalProps,
+} from './types';
describe('Presentation panel', () => {
const renderPresentationPanel = async ({
@@ -51,6 +55,24 @@ describe('Presentation panel', () => {
await waitFor(() => expect(screen.getByTestId('embeddableStackError')).toBeInTheDocument());
});
+ it('renders error boundary when internal component throws during rendering', async () => {
+ jest.spyOn(console, 'error').mockImplementation(() => null);
+ function ComponentThatThrows() {
+ throw new Error('simulated error during rendering');
+ return ;
+ }
+ function getComponent(api?: DefaultPresentationPanelApi): Promise {
+ return Promise.resolve(
+ React.forwardRef((_, apiRef) => {
+ useImperativeHandle(apiRef, () => api ?? {});
+ return ;
+ })
+ );
+ }
+ render();
+ await waitFor(() => expect(screen.getByTestId('euiErrorBoundary')).toBeInTheDocument());
+ });
+
describe('actions', () => {
afterEach(() => {
jest.clearAllMocks();
diff --git a/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.tsx b/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.tsx
index 5259aedac0cd5..2bdaf61c2bfee 100644
--- a/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.tsx
+++ b/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.tsx
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { EuiFlexGroup, EuiPanel, htmlIdGenerator } from '@elastic/eui';
+import { EuiErrorBoundary, EuiFlexGroup, EuiPanel, htmlIdGenerator } from '@elastic/eui';
import { PanelLoader } from '@kbn/panel-loader';
import {
apiPublishesPhaseEvents,
@@ -134,13 +134,15 @@ export const PresentationPanelInternal = <
)}
{!initialLoadComplete && }
- )}
- {...contentAttrs}
- ref={(newApi) => {
- if (newApi && !api) setApi(newApi);
- }}
- />
+
+ )}
+ {...contentAttrs}
+ ref={(newApi) => {
+ if (newApi && !api) setApi(newApi);
+ }}
+ />
+
);
diff --git a/src/plugins/unified_histogram/public/chart/toolbar_selector.tsx b/src/plugins/unified_histogram/public/chart/toolbar_selector.tsx
index 1a83a736bb534..025e599c0dfad 100644
--- a/src/plugins/unified_histogram/public/chart/toolbar_selector.tsx
+++ b/src/plugins/unified_histogram/public/chart/toolbar_selector.tsx
@@ -110,7 +110,11 @@ export const ToolbarSelector: React.FC = ({
}}
panelPaddingSize="none"
button={
-
+
{
+ await security.testUser.setRoles(['kibana_admin', 'test_logstash_reader']);
+ await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional');
+ await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover');
+ });
+
+ after(async () => {
+ await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover');
+ await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional');
+ await kibanaServer.savedObjects.cleanStandardList();
+ await kibanaServer.uiSettings.replace({});
+ });
+
+ async function checkInitialColumns({
+ hasTimeField,
+ hideTimeFieldColumnSetting,
+ savedSearchSuffix,
+ isTextBased,
+ }: {
+ hasTimeField: boolean;
+ hideTimeFieldColumnSetting: boolean;
+ savedSearchSuffix: string;
+ isTextBased?: boolean;
+ }) {
+ // check in Discover
+ expect(await dataGrid.getHeaderFields()).to.eql(
+ (hideTimeFieldColumnSetting && !isTextBased) || !hasTimeField
+ ? ['Document']
+ : ['@timestamp', 'Document']
+ );
+ await PageObjects.discover.saveSearch(`${SEARCH_NO_COLUMNS}${savedSearchSuffix}`);
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+
+ const isTimestampUnavailableInSidebar = isTextBased && !hasTimeField;
+ if (!isTimestampUnavailableInSidebar) {
+ await PageObjects.unifiedFieldList.clickFieldListItemAdd('@timestamp');
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ await retry.try(async () => {
+ expect(await dataGrid.getHeaderFields()).to.eql(
+ !hasTimeField
+ ? ['@timestamp']
+ : hideTimeFieldColumnSetting && !isTextBased
+ ? ['Document'] // legacy behaviour
+ : ['@timestamp', 'Document'] // legacy behaviour
+ );
+ });
+
+ await PageObjects.discover.saveSearch(
+ `${SEARCH_WITH_ONLY_TIMESTAMP}${savedSearchSuffix}`,
+ true
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+
+ await PageObjects.unifiedFieldList.clickFieldListItemRemove('@timestamp');
+ await retry.try(async () => {
+ expect(await dataGrid.getHeaderFields()).to.eql(
+ (hideTimeFieldColumnSetting && !isTextBased) || !hasTimeField
+ ? ['Document']
+ : ['@timestamp', 'Document']
+ );
+ });
+ }
+
+ // check in Dashboard
+ await PageObjects.common.navigateToApp('dashboard');
+ await PageObjects.dashboard.clickNewDashboard();
+ await dashboardAddPanel.clickOpenAddPanel();
+ await dashboardAddPanel.addSavedSearch(`${SEARCH_NO_COLUMNS}${savedSearchSuffix}`);
+ await dashboardAddPanel.closeAddPanel();
+ await PageObjects.header.waitUntilLoadingHasFinished();
+
+ await retry.try(async () => {
+ expect(await dataGrid.getHeaderFields()).to.eql(
+ (hideTimeFieldColumnSetting && !isTextBased) || !hasTimeField
+ ? ['Document']
+ : ['@timestamp', 'Document']
+ );
+ });
+
+ if (!isTimestampUnavailableInSidebar) {
+ await dashboardPanelActions.removePanelByTitle(`${SEARCH_NO_COLUMNS}${savedSearchSuffix}`);
+ await PageObjects.header.waitUntilLoadingHasFinished();
+ await dashboardAddPanel.clickOpenAddPanel();
+ await dashboardAddPanel.addSavedSearch(`${SEARCH_WITH_ONLY_TIMESTAMP}${savedSearchSuffix}`);
+ await dashboardAddPanel.closeAddPanel();
+ await PageObjects.header.waitUntilLoadingHasFinished();
+
+ await retry.try(async () => {
+ expect(await dataGrid.getHeaderFields()).to.eql(
+ !hasTimeField
+ ? ['@timestamp']
+ : hideTimeFieldColumnSetting && !isTextBased
+ ? ['Document'] // legacy behaviour
+ : ['@timestamp', 'Document'] // legacy behaviour
+ );
+ });
+ }
+ }
+
+ async function checkSelectedColumns({
+ hasTimeField,
+ hideTimeFieldColumnSetting,
+ savedSearchSuffix,
+ isTextBased,
+ }: {
+ hasTimeField: boolean;
+ hideTimeFieldColumnSetting: boolean;
+ savedSearchSuffix: string;
+ isTextBased?: boolean;
+ }) {
+ // check in Discover
+ await PageObjects.unifiedFieldList.clickFieldListItemAdd('bytes');
+ await PageObjects.unifiedFieldList.clickFieldListItemAdd('extension');
+
+ await retry.try(async () => {
+ expect(await dataGrid.getHeaderFields()).to.eql(
+ hideTimeFieldColumnSetting || !hasTimeField || isTextBased
+ ? ['bytes', 'extension']
+ : ['@timestamp', 'bytes', 'extension']
+ );
+ });
+
+ await PageObjects.discover.saveSearch(`${SEARCH_WITH_SELECTED_COLUMNS}${savedSearchSuffix}`);
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+
+ await PageObjects.unifiedFieldList.clickFieldListItemAdd('@timestamp');
+ await retry.try(async () => {
+ expect(await dataGrid.getHeaderFields()).to.eql(['bytes', 'extension', '@timestamp']);
+ });
+
+ await PageObjects.discover.saveSearch(
+ `${SEARCH_WITH_SELECTED_COLUMNS_AND_TIMESTAMP}${savedSearchSuffix}`,
+ true
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+
+ await dataGrid.clickMoveColumnLeft('@timestamp');
+ await retry.try(async () => {
+ expect(await dataGrid.getHeaderFields()).to.eql(['bytes', '@timestamp', 'extension']);
+ });
+
+ await dataGrid.clickMoveColumnLeft('@timestamp');
+ await retry.try(async () => {
+ expect(await dataGrid.getHeaderFields()).to.eql(
+ // FIXME as a part of https://github.com/elastic/kibana/issues/174074
+ isTextBased && !hideTimeFieldColumnSetting
+ ? ['bytes', 'extension']
+ : ['@timestamp', 'bytes', 'extension']
+ );
+ });
+
+ await PageObjects.unifiedFieldList.clickFieldListItemRemove('@timestamp');
+ await retry.try(async () => {
+ expect(await dataGrid.getHeaderFields()).to.eql(
+ hideTimeFieldColumnSetting || !hasTimeField || isTextBased
+ ? ['bytes', 'extension']
+ : ['@timestamp', 'bytes', 'extension']
+ );
+ });
+
+ // check in Dashboard
+ await PageObjects.common.navigateToApp('dashboard');
+ await PageObjects.dashboard.clickNewDashboard();
+ await dashboardAddPanel.clickOpenAddPanel();
+ await dashboardAddPanel.addSavedSearch(`${SEARCH_WITH_SELECTED_COLUMNS}${savedSearchSuffix}`);
+ await dashboardAddPanel.closeAddPanel();
+ await PageObjects.header.waitUntilLoadingHasFinished();
+
+ await retry.try(async () => {
+ expect(await dataGrid.getHeaderFields()).to.eql(
+ hideTimeFieldColumnSetting || !hasTimeField || isTextBased
+ ? ['bytes', 'extension']
+ : ['@timestamp', 'bytes', 'extension']
+ );
+ });
+
+ await dashboardPanelActions.removePanelByTitle(
+ `${SEARCH_WITH_SELECTED_COLUMNS}${savedSearchSuffix}`
+ );
+ await PageObjects.header.waitUntilLoadingHasFinished();
+ await dashboardAddPanel.clickOpenAddPanel();
+ await dashboardAddPanel.addSavedSearch(
+ `${SEARCH_WITH_SELECTED_COLUMNS_AND_TIMESTAMP}${savedSearchSuffix}`
+ );
+ await dashboardAddPanel.closeAddPanel();
+ await PageObjects.header.waitUntilLoadingHasFinished();
+
+ await retry.try(async () => {
+ expect(await dataGrid.getHeaderFields()).to.eql(['bytes', 'extension', '@timestamp']);
+ });
+ }
+
+ // Add `true` to the array to test locally with non default `doc_table:hideTimeColumn` setting too. I would not recommend committing with `true` as it doubles the whole test suit time.
+ [false].forEach((hideTimeFieldColumnSetting) => {
+ const savedSearchSuffix = hideTimeFieldColumnSetting ? 'HideTimeColumn' : 'ShowTimeColumn';
+
+ describe(`should${hideTimeFieldColumnSetting ? ' not' : ''} add a time field column`, () => {
+ beforeEach(async () => {
+ await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings();
+ await kibanaServer.uiSettings.update({
+ ...defaultSettings,
+ 'doc_table:legacy': false,
+ 'doc_table:hideTimeColumn': hideTimeFieldColumnSetting,
+ });
+ await PageObjects.common.navigateToApp('discover');
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ });
+
+ describe('data view mode', () => {
+ describe('time-based data view', () => {
+ it('should render initial columns correctly', async () => {
+ await checkInitialColumns({
+ hasTimeField: true,
+ hideTimeFieldColumnSetting,
+ savedSearchSuffix,
+ });
+ });
+
+ it('should render selected columns correctly', async () => {
+ await checkSelectedColumns({
+ hasTimeField: true,
+ hideTimeFieldColumnSetting,
+ savedSearchSuffix,
+ });
+ });
+ });
+
+ describe('without a time field', () => {
+ beforeEach(async () => {
+ await PageObjects.discover.createAdHocDataView('logs*', false);
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ await PageObjects.header.waitUntilLoadingHasFinished();
+ });
+
+ it('should render initial columns correctly', async () => {
+ await checkInitialColumns({
+ hasTimeField: false,
+ hideTimeFieldColumnSetting,
+ savedSearchSuffix: savedSearchSuffix + '-',
+ });
+ });
+
+ it('should render selected columns correctly', async () => {
+ await checkSelectedColumns({
+ hasTimeField: false,
+ hideTimeFieldColumnSetting,
+ savedSearchSuffix: savedSearchSuffix + '-',
+ });
+ });
+ });
+ });
+
+ describe('ESQL mode', () => {
+ it('should render initial columns correctly', async () => {
+ await PageObjects.discover.selectTextBaseLang();
+
+ await checkInitialColumns({
+ hasTimeField: true,
+ hideTimeFieldColumnSetting,
+ savedSearchSuffix: savedSearchSuffix + 'ESQL',
+ isTextBased: true,
+ });
+ });
+
+ it('should render initial columns correctly when no time field', async () => {
+ await PageObjects.discover.selectTextBaseLang();
+ await monacoEditor.setCodeEditorValue('from logstash-* | limit 10 | drop @timestamp');
+ await testSubjects.click('querySubmitButton');
+ await PageObjects.header.waitUntilLoadingHasFinished();
+
+ await checkInitialColumns({
+ hasTimeField: false,
+ hideTimeFieldColumnSetting,
+ savedSearchSuffix: savedSearchSuffix + 'ESQLdrop',
+ isTextBased: true,
+ });
+ });
+
+ it('should render selected columns correctly', async () => {
+ await PageObjects.discover.selectTextBaseLang();
+
+ await checkSelectedColumns({
+ hasTimeField: true,
+ hideTimeFieldColumnSetting,
+ savedSearchSuffix: savedSearchSuffix + 'ESQL',
+ isTextBased: true,
+ });
+ });
+ });
+
+ // These tests are skipped as they take a lot of time to run. Temporary unskip them to validate current functionality if necessary.
+ describe.skip('legacy table', () => {
+ beforeEach(async () => {
+ await kibanaServer.uiSettings.update({
+ ...defaultSettings,
+ 'doc_table:hideTimeColumn': hideTimeFieldColumnSetting,
+ 'doc_table:legacy': true,
+ });
+ await PageObjects.common.navigateToApp('discover');
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ });
+
+ it('should render initial columns correctly', async () => {
+ // no columns
+ await PageObjects.discover.loadSavedSearch(`${SEARCH_NO_COLUMNS}${savedSearchSuffix}`);
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(
+ hideTimeFieldColumnSetting ? ['Document'] : ['@timestamp', 'Document']
+ );
+
+ await PageObjects.discover.loadSavedSearch(`${SEARCH_NO_COLUMNS}${savedSearchSuffix}-`);
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(['Document']);
+
+ await PageObjects.discover.loadSavedSearch(
+ `${SEARCH_NO_COLUMNS}${savedSearchSuffix}ESQL`
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(
+ hideTimeFieldColumnSetting ? ['Document'] : ['@timestamp', 'Document']
+ );
+
+ await PageObjects.discover.loadSavedSearch(
+ `${SEARCH_NO_COLUMNS}${savedSearchSuffix}ESQLdrop`
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(
+ hideTimeFieldColumnSetting ? ['Document'] : ['@timestamp', 'Document']
+ );
+
+ // only @timestamp is selected
+ await PageObjects.discover.loadSavedSearch(
+ `${SEARCH_WITH_ONLY_TIMESTAMP}${savedSearchSuffix}`
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(
+ hideTimeFieldColumnSetting ? ['@timestamp'] : ['@timestamp', '@timestamp']
+ );
+
+ await PageObjects.discover.loadSavedSearch(
+ `${SEARCH_WITH_ONLY_TIMESTAMP}${savedSearchSuffix}-`
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(['@timestamp']);
+
+ await PageObjects.discover.loadSavedSearch(
+ `${SEARCH_WITH_ONLY_TIMESTAMP}${savedSearchSuffix}ESQL`
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(
+ hideTimeFieldColumnSetting ? ['@timestamp'] : ['@timestamp', '@timestamp']
+ );
+ });
+
+ it('should render selected columns correctly', async () => {
+ // with selected columns
+ await PageObjects.discover.loadSavedSearch(
+ `${SEARCH_WITH_SELECTED_COLUMNS}${savedSearchSuffix}`
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(
+ hideTimeFieldColumnSetting
+ ? ['bytes', 'extension']
+ : ['@timestamp', 'bytes', 'extension']
+ );
+
+ await PageObjects.discover.loadSavedSearch(
+ `${SEARCH_WITH_SELECTED_COLUMNS}${savedSearchSuffix}-`
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(['bytes', 'extension']);
+
+ await PageObjects.discover.loadSavedSearch(
+ `${SEARCH_WITH_SELECTED_COLUMNS}${savedSearchSuffix}ESQL`
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(
+ hideTimeFieldColumnSetting
+ ? ['bytes', 'extension']
+ : ['@timestamp', 'bytes', 'extension']
+ );
+
+ // with selected columns and @timestamp
+ await PageObjects.discover.loadSavedSearch(
+ `${SEARCH_WITH_SELECTED_COLUMNS_AND_TIMESTAMP}${savedSearchSuffix}`
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(
+ hideTimeFieldColumnSetting
+ ? ['bytes', 'extension', '@timestamp']
+ : ['@timestamp', 'bytes', 'extension', '@timestamp']
+ );
+
+ await PageObjects.discover.loadSavedSearch(
+ `${SEARCH_WITH_SELECTED_COLUMNS_AND_TIMESTAMP}${savedSearchSuffix}-`
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(['bytes', 'extension', '@timestamp']);
+
+ await PageObjects.discover.loadSavedSearch(
+ `${SEARCH_WITH_SELECTED_COLUMNS_AND_TIMESTAMP}${savedSearchSuffix}ESQL`
+ );
+ await PageObjects.discover.waitUntilSearchingHasFinished();
+ expect(await docTable.getHeaderFields()).to.eql(
+ hideTimeFieldColumnSetting
+ ? ['bytes', 'extension', '@timestamp']
+ : ['@timestamp', 'bytes', 'extension', '@timestamp']
+ );
+ });
+ });
+ });
+ });
+ });
+}
diff --git a/test/functional/apps/discover/group3/index.ts b/test/functional/apps/discover/group3/index.ts
index e2e0706cd6b4a..60f835154d5e9 100644
--- a/test/functional/apps/discover/group3/index.ts
+++ b/test/functional/apps/discover/group3/index.ts
@@ -21,6 +21,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) {
});
loadTestFile(require.resolve('./_default_columns'));
+ loadTestFile(require.resolve('./_time_field_column'));
loadTestFile(require.resolve('./_drag_drop'));
loadTestFile(require.resolve('./_sidebar'));
loadTestFile(require.resolve('./_request_counts'));
diff --git a/test/functional/page_objects/discover_page.ts b/test/functional/page_objects/discover_page.ts
index 5791d12cb4866..2263055856628 100644
--- a/test/functional/page_objects/discover_page.ts
+++ b/test/functional/page_objects/discover_page.ts
@@ -28,6 +28,7 @@ export class DiscoverPageObject extends FtrService {
private readonly fieldEditor = this.ctx.getService('fieldEditor');
private readonly queryBar = this.ctx.getService('queryBar');
private readonly comboBox = this.ctx.getService('comboBox');
+ private readonly savedObjectsFinder = this.ctx.getService('savedObjectsFinder');
private readonly defaultFindTimeout = this.config.get('timeouts.find');
@@ -150,6 +151,7 @@ export class DiscoverPageObject extends FtrService {
public async loadSavedSearch(searchName: string) {
await this.openLoadSavedSearchPanel();
+ await this.savedObjectsFinder.filterEmbeddableNames(`"${searchName.replace('-', ' ')}"`);
await this.testSubjects.click(`savedObjectTitle${searchName.split(' ').join('-')}`);
await this.header.waitUntilLoadingHasFinished();
}
diff --git a/test/functional/page_objects/settings_page.ts b/test/functional/page_objects/settings_page.ts
index 12ff79829fa7e..0af50e82496c0 100644
--- a/test/functional/page_objects/settings_page.ts
+++ b/test/functional/page_objects/settings_page.ts
@@ -22,10 +22,6 @@ export class SettingsPageObject extends FtrService {
private readonly savedObjects = this.ctx.getPageObject('savedObjects');
private readonly monacoEditor = this.ctx.getService('monacoEditor');
- async clickNavigation() {
- await this.find.clickDisplayedByCssSelector('.app-link:nth-child(5) a');
- }
-
async clickLinkText(text: string) {
await this.find.clickByDisplayedLinkText(text);
}
@@ -127,22 +123,6 @@ export class SettingsPageObject extends FtrService {
await this.header.waitUntilLoadingHasFinished();
}
- async setAdvancedSettingsTextArea(propertyName: string, propertyValue: string) {
- const wrapper = await this.testSubjects.find(`management-settings-editField-${propertyName}`);
- const textarea = await wrapper.findByTagName('textarea');
- await textarea.focus();
- // only way to properly replace the value of the ace editor is via the JS api
- await this.browser.execute(
- (editor: string, value: string) => {
- return (window as any).ace.edit(editor).setValue(value);
- },
- `management-settings-editField-${propertyName}-editor`,
- propertyValue
- );
- await this.testSubjects.click(`settings-save-button`);
- await this.header.waitUntilLoadingHasFinished();
- }
-
async setAdvancedSettingsImage(propertyName: string, path: string) {
const input = await this.testSubjects.find(`management-settings-editField-${propertyName}`);
await input.type(path);
@@ -172,34 +152,28 @@ export class SettingsPageObject extends FtrService {
return this.testSubjects.find('createIndexPatternTitleInput');
}
- async getTimeFieldNameField() {
- const wrapperElement = await this.testSubjects.find('timestampField');
- return wrapperElement.findByTestSubject('comboBoxSearchInput');
- }
-
async selectTimeFieldOption(selection: string) {
- // open dropdown
- const timefield = await this.getTimeFieldNameField();
- const prevValue = await timefield.getAttribute('value');
- const enabled = await timefield.isEnabled();
+ const testSubj = 'timestampField';
+ const timefield = await this.testSubjects.find(testSubj);
- if (prevValue === selection || !enabled) {
+ await this.retry.waitFor('loading the timefield options should be finished', async () => {
+ const isLoading = await timefield.getAttribute('data-is-loading');
+ return isLoading === '0';
+ });
+ const isEnabled = await (await timefield.findByTestSubject('comboBoxSearchInput')).isEnabled();
+ if (!isEnabled) {
+ return;
+ }
+ const isSelected = await this.comboBox.isOptionSelected(timefield, selection);
+ if (isSelected) {
return;
}
await this.retry.waitFor('time field dropdown have the right value', async () => {
- await timefield.click();
- await timefield.type(this.browser.keys.DELETE, { charByChar: true });
- await this.browser.pressKeys(selection);
- await this.browser.pressKeys(this.browser.keys.TAB);
- const value = await timefield.getAttribute('value');
- return value === selection;
+ await this.comboBox.set(testSubj, selection);
+ return await this.comboBox.isOptionSelected(timefield, selection);
});
}
- async getTimeFieldOption(selection: string) {
- return await this.find.displayedByCssSelector('option[value="' + selection + '"]');
- }
-
async getNameField() {
return this.testSubjects.find('createIndexPatternNameInput');
}
@@ -227,15 +201,6 @@ export class SettingsPageObject extends FtrService {
return await this.testSubjects.find('saveIndexPatternButton');
}
- async getCreateButton() {
- return await this.find.displayedByCssSelector('[type="submit"]');
- }
-
- async clickDefaultIndexButton() {
- await this.testSubjects.click('setDefaultIndexPatternButton');
- await this.header.waitUntilLoadingHasFinished();
- }
-
async clickEditIndexButton() {
await this.testSubjects.click('editIndexPatternButton');
await this.retry.waitFor('flyout', async () => {
@@ -251,10 +216,6 @@ export class SettingsPageObject extends FtrService {
return await this.testSubjects.getVisibleText('indexPatternTitle');
}
- async getConfigureHeader() {
- return await this.find.byCssSelector('h1');
- }
-
async getTableHeader() {
return await this.find.allByCssSelector('table.euiTable thead tr th');
}
@@ -452,10 +413,6 @@ export class SettingsPageObject extends FtrService {
await this.header.waitUntilLoadingHasFinished();
}
- async hasIndexPattern(name: string) {
- return await this.find.existsByLinkText(name);
- }
-
async clickIndexPatternByName(name: string) {
const indexLink = await this.find.byXPath(`//a[text()='${name}']`);
await indexLink.click();
@@ -509,7 +466,7 @@ export class SettingsPageObject extends FtrService {
await this.header.waitUntilLoadingHasFinished();
if (
options.ignoreMissing &&
- (await this.testSubjects.exists(`detail-link-${dataViewName}`)) === false
+ !(await this.testSubjects.exists(`detail-link-${dataViewName}`))
) {
return;
}
@@ -567,7 +524,6 @@ export class SettingsPageObject extends FtrService {
await this.setIndexPatternField(indexPatternName);
});
- await this.common.sleep(2000);
if (timefield) {
await this.selectTimeFieldOption(timefield);
}
@@ -719,10 +675,6 @@ export class SettingsPageObject extends FtrService {
});
}
- async getCreateIndexPatternGoToStep2Button() {
- return await this.testSubjects.find('createIndexPatternGoToStep2Button');
- }
-
async removeIndexPattern() {
let alertText;
await this.retry.try(async () => {
@@ -746,11 +698,6 @@ export class SettingsPageObject extends FtrService {
return alertText;
}
- async clickFieldsTab() {
- this.log.debug('click Fields tab');
- await this.testSubjects.click('tab-indexedFields');
- }
-
async clickScriptedFieldsTab() {
this.log.debug('click Scripted Fields tab');
await this.testSubjects.click('tab-scriptedFields');
@@ -1103,8 +1050,4 @@ export class SettingsPageObject extends FtrService {
[data-test-subj="indexPatternOption-${newIndexPatternTitle}"]`
);
}
-
- async clickChangeIndexConfirmButton() {
- await this.testSubjects.click('changeIndexConfirmButton');
- }
}
diff --git a/tsconfig.base.json b/tsconfig.base.json
index 5a24c45675cf0..1a54c368d5344 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -1620,6 +1620,8 @@
"@kbn/timelines-plugin/*": ["x-pack/plugins/timelines/*"],
"@kbn/timelion-grammar": ["packages/kbn-timelion-grammar"],
"@kbn/timelion-grammar/*": ["packages/kbn-timelion-grammar/*"],
+ "@kbn/timerange": ["packages/kbn-timerange"],
+ "@kbn/timerange/*": ["packages/kbn-timerange/*"],
"@kbn/tinymath": ["packages/kbn-tinymath"],
"@kbn/tinymath/*": ["packages/kbn-tinymath/*"],
"@kbn/tooling-log": ["packages/kbn-tooling-log"],
diff --git a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_log_patterns.ts b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_log_patterns.ts
index 28a31dbcd3430..9efef525ccd57 100644
--- a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_log_patterns.ts
+++ b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_log_patterns.ts
@@ -18,8 +18,8 @@ export const significantLogPatterns: SignificantItem[] = [
normalizedScore: 0,
pValue: 0.000001,
score: -13.815510557964274,
- total_bg_count: 2528,
- total_doc_count: 6650,
+ total_bg_count: 1975,
+ total_doc_count: 4669,
type: 'log_pattern',
},
];
diff --git a/x-pack/plugins/alerting/server/rules_client/methods/get_alert_state.ts b/x-pack/plugins/alerting/server/rules_client/methods/get_alert_state.ts
index 6497428e1c2f2..57b39f31282a1 100644
--- a/x-pack/plugins/alerting/server/rules_client/methods/get_alert_state.ts
+++ b/x-pack/plugins/alerting/server/rules_client/methods/get_alert_state.ts
@@ -5,6 +5,7 @@
* 2.0.
*/
+import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-server';
import { RuleTaskState } from '../../types';
import { taskInstanceToAlertTaskInstance } from '../../task_runner/alert_task_instance';
import { ReadOperations, AlertingAuthorizationEntity } from '../../authorization';
@@ -18,18 +19,28 @@ export async function getAlertState(
context: RulesClientContext,
{ id }: GetAlertStateParams
): Promise {
- const alert = await get(context, { id });
+ const rule = await get(context, { id });
await context.authorization.ensureAuthorized({
- ruleTypeId: alert.alertTypeId,
- consumer: alert.consumer,
+ ruleTypeId: rule.alertTypeId,
+ consumer: rule.consumer,
operation: ReadOperations.GetRuleState,
entity: AlertingAuthorizationEntity.Rule,
});
- if (alert.scheduledTaskId) {
- const { state } = taskInstanceToAlertTaskInstance(
- await context.taskManager.get(alert.scheduledTaskId),
- alert
- );
- return state;
+ if (rule.scheduledTaskId) {
+ try {
+ const { state } = taskInstanceToAlertTaskInstance(
+ await context.taskManager.get(rule.scheduledTaskId),
+ rule
+ );
+ return state;
+ } catch (e) {
+ if (SavedObjectsErrorHelpers.isNotFoundError(e)) {
+ context.logger.warn(`Task (${rule.scheduledTaskId}) not found`);
+ } else {
+ context.logger.warn(
+ `An error occurred when getting the task state for (${rule.scheduledTaskId}): ${e.message}`
+ );
+ }
+ }
}
}
diff --git a/x-pack/plugins/alerting/server/rules_client/tests/get_alert_state.test.ts b/x-pack/plugins/alerting/server/rules_client/tests/get_alert_state.test.ts
index 63d86843512c0..dc20013b2ad29 100644
--- a/x-pack/plugins/alerting/server/rules_client/tests/get_alert_state.test.ts
+++ b/x-pack/plugins/alerting/server/rules_client/tests/get_alert_state.test.ts
@@ -22,6 +22,7 @@ import { AlertingAuthorization } from '../../authorization/alerting_authorizatio
import { ActionsAuthorization } from '@kbn/actions-plugin/server';
import { getBeforeSetup } from './lib';
import { RULE_SAVED_OBJECT_TYPE } from '../../saved_objects';
+import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-server';
const taskManager = taskManagerMock.createStart();
const ruleTypeRegistry = ruleTypeRegistryMock.create();
@@ -175,6 +176,70 @@ describe('getAlertState()', () => {
expect(taskManager.get).toHaveBeenCalledWith(scheduledTaskId);
});
+ test('logs a warning if the task not found', async () => {
+ const rulesClient = new RulesClient(rulesClientParams);
+
+ const scheduledTaskId = 'task-123';
+
+ unsecuredSavedObjectsClient.get.mockResolvedValueOnce({
+ id: '1',
+ type: RULE_SAVED_OBJECT_TYPE,
+ attributes: {
+ alertTypeId: '123',
+ schedule: { interval: '10s' },
+ params: {
+ bar: true,
+ },
+ actions: [],
+ enabled: true,
+ scheduledTaskId,
+ mutedInstanceIds: [],
+ muteAll: true,
+ },
+ references: [],
+ });
+
+ taskManager.get.mockRejectedValueOnce(SavedObjectsErrorHelpers.createGenericNotFoundError());
+
+ await rulesClient.getAlertState({ id: '1' });
+
+ expect(rulesClientParams.logger.warn).toHaveBeenCalledTimes(1);
+ expect(rulesClientParams.logger.warn).toHaveBeenCalledWith('Task (task-123) not found');
+ });
+
+ test('logs a warning if the taskManager throws an error', async () => {
+ const rulesClient = new RulesClient(rulesClientParams);
+
+ const scheduledTaskId = 'task-123';
+
+ unsecuredSavedObjectsClient.get.mockResolvedValueOnce({
+ id: '1',
+ type: RULE_SAVED_OBJECT_TYPE,
+ attributes: {
+ alertTypeId: '123',
+ schedule: { interval: '10s' },
+ params: {
+ bar: true,
+ },
+ actions: [],
+ enabled: true,
+ scheduledTaskId,
+ mutedInstanceIds: [],
+ muteAll: true,
+ },
+ references: [],
+ });
+
+ taskManager.get.mockRejectedValueOnce(SavedObjectsErrorHelpers.createBadRequestError());
+
+ await rulesClient.getAlertState({ id: '1' });
+
+ expect(rulesClientParams.logger.warn).toHaveBeenCalledTimes(1);
+ expect(rulesClientParams.logger.warn).toHaveBeenCalledWith(
+ 'An error occurred when getting the task state for (task-123): Bad Request'
+ );
+ });
+
describe('authorization', () => {
beforeEach(() => {
unsecuredSavedObjectsClient.get.mockResolvedValueOnce({
diff --git a/x-pack/plugins/apm/public/components/routing/app_root/apm_header_action_menu/index.tsx b/x-pack/plugins/apm/public/components/routing/app_root/apm_header_action_menu/index.tsx
index 9be079fe43c52..50d0ce4bdf737 100644
--- a/x-pack/plugins/apm/public/components/routing/app_root/apm_header_action_menu/index.tsx
+++ b/x-pack/plugins/apm/public/components/routing/app_root/apm_header_action_menu/index.tsx
@@ -23,12 +23,7 @@ import { InspectorHeaderLink } from './inspector_header_link';
import { Labs } from './labs';
export function ApmHeaderActionMenu() {
- const {
- core,
- plugins,
- config,
- observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem },
- } = useApmPluginContext();
+ const { core, plugins, config } = useApmPluginContext();
const { search } = window.location;
const { application, http } = core;
const { basePath } = http;
@@ -101,9 +96,6 @@ export function ApmHeaderActionMenu() {
})}
- {ObservabilityAIAssistantActionMenuItem ? (
-
- ) : null}
);
}
diff --git a/x-pack/plugins/apm/public/components/routing/app_root/index.tsx b/x-pack/plugins/apm/public/components/routing/app_root/index.tsx
index 6f95463f619b6..766e9e8c9d443 100644
--- a/x-pack/plugins/apm/public/components/routing/app_root/index.tsx
+++ b/x-pack/plugins/apm/public/components/routing/app_root/index.tsx
@@ -21,6 +21,7 @@ import { RouteRenderer, RouterProvider } from '@kbn/typed-react-router-config';
import { euiDarkVars, euiLightVars } from '@kbn/ui-theme';
import React from 'react';
import { DefaultTheme, ThemeProvider } from 'styled-components';
+import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { useKibanaEnvironmentContextProvider } from '../../../context/kibana_environment_context/use_kibana_environment_context';
import { AnomalyDetectionJobsContextProvider } from '../../../context/anomaly_detection_jobs/anomaly_detection_jobs_context';
import {
@@ -128,12 +129,23 @@ export function ApmAppRoot({
}
function MountApmHeaderActionMenu() {
- const { setHeaderActionMenu, theme$ } =
- useApmPluginContext().appMountParameters;
+ const {
+ appMountParameters: { setHeaderActionMenu, theme$ },
+ observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem },
+ } = useApmPluginContext();
return (
-
+
+
+
+
+ {ObservabilityAIAssistantActionMenuItem ? (
+
+
+
+ ) : null}
+
);
}
diff --git a/x-pack/plugins/apm/public/components/shared/unified_search_bar/index.tsx b/x-pack/plugins/apm/public/components/shared/unified_search_bar/index.tsx
index 0e2c3d7bd02cb..8ffd8061ee8d5 100644
--- a/x-pack/plugins/apm/public/components/shared/unified_search_bar/index.tsx
+++ b/x-pack/plugins/apm/public/components/shared/unified_search_bar/index.tsx
@@ -229,7 +229,7 @@ export function UnifiedSearchBar({
const onRefreshChange = ({
isPaused,
refreshInterval,
- }: OnRefreshChangeProps) => {
+ }: Partial) => {
const existingQueryParams = toQuery(location.search);
const updatedQueryParams = {
...existingQueryParams,
diff --git a/x-pack/plugins/dataset_quality/common/constants.ts b/x-pack/plugins/dataset_quality/common/constants.ts
index 88ca32189994e..9c00962cfb124 100644
--- a/x-pack/plugins/dataset_quality/common/constants.ts
+++ b/x-pack/plugins/dataset_quality/common/constants.ts
@@ -10,5 +10,10 @@ export const DEFAULT_DATASET_TYPE = 'logs';
export const POOR_QUALITY_MINIMUM_PERCENTAGE = 3;
export const DEGRADED_QUALITY_MINIMUM_PERCENTAGE = 0;
+
export const DEFAULT_SORT_FIELD = 'title';
export const DEFAULT_SORT_DIRECTION = 'asc';
+
+export const NONE = 'none';
+
+export const DEFAULT_TIME_RANGE = { from: 'now-24h', to: 'now' };
diff --git a/x-pack/plugins/dataset_quality/common/data_streams_stats/types.ts b/x-pack/plugins/dataset_quality/common/data_streams_stats/types.ts
index 9e7ab043b7619..b8f8c37e46851 100644
--- a/x-pack/plugins/dataset_quality/common/data_streams_stats/types.ts
+++ b/x-pack/plugins/dataset_quality/common/data_streams_stats/types.ts
@@ -7,13 +7,17 @@
import { APIClientRequestParamsOf, APIReturnType } from '../rest';
import { DataStreamStat } from './data_stream_stat';
+import { Integration } from './integration';
export type GetDataStreamsStatsParams =
APIClientRequestParamsOf<`GET /internal/dataset_quality/data_streams/stats`>['params'];
export type GetDataStreamsStatsQuery = GetDataStreamsStatsParams['query'];
export type GetDataStreamsStatsResponse =
APIReturnType<`GET /internal/dataset_quality/data_streams/stats`>;
-export type DataStreamStatServiceResponse = DataStreamStat[];
+export interface DataStreamStatServiceResponse {
+ dataStreamStats: DataStreamStat[];
+ integrations: Integration[];
+}
export type IntegrationType = GetDataStreamsStatsResponse['integrations'][0];
export type DataStreamStatType = GetDataStreamsStatsResponse['dataStreamsStats'][0] & {
integration?: IntegrationType;
diff --git a/x-pack/plugins/dataset_quality/common/translations.ts b/x-pack/plugins/dataset_quality/common/translations.ts
index bd63f586f551a..8143c2c3f552b 100644
--- a/x-pack/plugins/dataset_quality/common/translations.ts
+++ b/x-pack/plugins/dataset_quality/common/translations.ts
@@ -16,7 +16,7 @@ export const noDatasetsDescription = i18n.translate('xpack.datasetQuality.noData
});
export const noDatasetsTitle = i18n.translate('xpack.datasetQuality.noDatasetsTitle', {
- defaultMessage: 'There is no data to display.',
+ defaultMessage: 'No matching data streams found',
});
export const loadingDatasetsText = i18n.translate('xpack.datasetQuality.loadingDatasetsText', {
diff --git a/x-pack/plugins/dataset_quality/public/components/common/integration_icon.tsx b/x-pack/plugins/dataset_quality/public/components/common/integration_icon.tsx
index 9c53dc45a289f..e2ebaddec39af 100644
--- a/x-pack/plugins/dataset_quality/public/components/common/integration_icon.tsx
+++ b/x-pack/plugins/dataset_quality/public/components/common/integration_icon.tsx
@@ -8,6 +8,7 @@
import { EuiIcon } from '@elastic/eui';
import { PackageIcon } from '@kbn/fleet-plugin/public';
import React from 'react';
+import { NONE } from '../../../common/constants';
import { Integration } from '../../../common/data_streams_stats/integration';
import loggingIcon from '../../icons/logging.svg';
@@ -16,7 +17,7 @@ interface IntegrationIconProps {
}
export const IntegrationIcon = ({ integration }: IntegrationIconProps) => {
- return integration ? (
+ return integration && integration.name !== NONE ? (
import('./header'));
-const Table = dynamic(() => import('./table'));
+const Table = dynamic(() => import('./table/table'));
+const Filters = dynamic(() => import('./filters/filters'));
const SummaryPanel = dynamic(() => import('./summary_panel/summary_panel'));
function DatasetQuality() {
return (
-
+
+
+
+
diff --git a/x-pack/plugins/dataset_quality/public/components/dataset_quality/filters/filter_bar.tsx b/x-pack/plugins/dataset_quality/public/components/dataset_quality/filters/filter_bar.tsx
new file mode 100644
index 0000000000000..da62df7d7bb40
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/public/components/dataset_quality/filters/filter_bar.tsx
@@ -0,0 +1,39 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React, { ChangeEvent, useCallback } from 'react';
+import { EuiFieldSearch } from '@elastic/eui';
+import { i18n } from '@kbn/i18n';
+
+const placeholder = i18n.translate('xpack.datasetQuality.filterBar.placeholder', {
+ defaultMessage: 'Filter datasets',
+});
+
+export interface FilterBarComponentProps {
+ query?: string;
+ onQueryChange: (query: string) => void;
+}
+
+export const FilterBar = ({ query, onQueryChange }: FilterBarComponentProps) => {
+ const onChange = useCallback(
+ (event: ChangeEvent) => {
+ onQueryChange(event.target.value);
+ },
+ [onQueryChange]
+ );
+
+ return (
+
+ );
+};
diff --git a/x-pack/plugins/dataset_quality/public/components/dataset_quality/filters/filters.tsx b/x-pack/plugins/dataset_quality/public/components/dataset_quality/filters/filters.tsx
new file mode 100644
index 0000000000000..ad9fd6c448560
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/public/components/dataset_quality/filters/filters.tsx
@@ -0,0 +1,78 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
+import { EuiSuperDatePicker } from '@elastic/eui';
+import { UI_SETTINGS } from '@kbn/data-service';
+import { TimePickerQuickRange } from '@kbn/observability-shared-plugin/public/hooks/use_quick_time_ranges';
+import React, { useMemo } from 'react';
+import { useDatasetQualityFilters } from '../../../hooks/use_dataset_quality_filters';
+import { useKibanaContextForPlugin } from '../../../utils/use_kibana';
+import { FilterBar } from './filter_bar';
+import { IntegrationsSelector } from './integrations_selector';
+
+// Allow for lazy loading
+// eslint-disable-next-line import/no-default-export
+export default function Filters() {
+ const {
+ timeRange,
+ onTimeChange,
+ onRefresh,
+ onRefreshChange,
+ isLoading,
+ integrations,
+ onIntegrationsChange,
+ selectedQuery,
+ onQueryChange,
+ } = useDatasetQualityFilters();
+
+ const {
+ services: { uiSettings },
+ } = useKibanaContextForPlugin();
+
+ const timePickerQuickRanges = uiSettings.get(
+ UI_SETTINGS.TIMEPICKER_QUICK_RANGES
+ );
+
+ const commonlyUsedRanges = useMemo(
+ () =>
+ timePickerQuickRanges.map(({ from, to, display }) => ({
+ start: from,
+ end: to,
+ label: display,
+ })),
+ [timePickerQuickRanges]
+ );
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/x-pack/plugins/dataset_quality/public/components/dataset_quality/filters/integrations_selector.tsx b/x-pack/plugins/dataset_quality/public/components/dataset_quality/filters/integrations_selector.tsx
new file mode 100644
index 0000000000000..20ea92299859c
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/public/components/dataset_quality/filters/integrations_selector.tsx
@@ -0,0 +1,138 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import {
+ EuiFilterButton,
+ EuiFilterGroup,
+ EuiFlexGroup,
+ EuiFlexItem,
+ EuiPopover,
+ EuiPopoverTitle,
+ EuiSelectable,
+ EuiText,
+} from '@elastic/eui';
+import React, { useState } from 'react';
+import type { EuiSelectableOptionCheckedType } from '@elastic/eui/src/components/selectable/selectable_option';
+import { i18n } from '@kbn/i18n';
+import { Integration } from '../../../../common/data_streams_stats/integration';
+import { IntegrationIcon } from '../../common';
+
+const integrationsSelectorLabel = i18n.translate('xpack.datasetQuality.integrationsSelectorLabel', {
+ defaultMessage: 'Integrations',
+});
+
+const integrationsSelectorLoading = i18n.translate(
+ 'xpack.datasetQuality.integrationsSelectorLoading',
+ {
+ defaultMessage: 'Loading integrations',
+ }
+);
+
+const integrationsSelectorSearchPlaceholder = i18n.translate(
+ 'xpack.datasetQuality.integrationsSelectorSearchPlaceholder',
+ {
+ defaultMessage: 'Filter integrations',
+ }
+);
+
+const integrationsSelectorNoneAvailable = i18n.translate(
+ 'xpack.datasetQuality.integrationsSelectorNoneAvailable',
+ {
+ defaultMessage: 'No integrations available',
+ }
+);
+
+const integrationsSelectorNoneMatching = i18n.translate(
+ 'xpack.datasetQuality.integrationsSelectorNoneMatching',
+ {
+ defaultMessage: 'No integrations found',
+ }
+);
+
+interface IntegrationsSelectorProps {
+ isLoading: boolean;
+ integrations: IntegrationItem[];
+ onIntegrationsChange: (integrations: IntegrationItem[]) => void;
+}
+
+export interface IntegrationItem extends Integration {
+ label: string;
+ checked?: EuiSelectableOptionCheckedType;
+}
+
+export function IntegrationsSelector({
+ isLoading,
+ integrations,
+ onIntegrationsChange,
+}: IntegrationsSelectorProps) {
+ const [isPopoverOpen, setIsPopoverOpen] = useState(false);
+
+ const onButtonClick = () => {
+ setIsPopoverOpen(!isPopoverOpen);
+ };
+
+ const closePopover = () => {
+ setIsPopoverOpen(false);
+ };
+
+ const renderOption = (integration: IntegrationItem) => (
+
+
+
+
+ {integration.title}
+
+ );
+
+ const button = (
+ item.checked === 'on')}
+ numActiveFilters={integrations.filter((item) => item.checked === 'on').length}
+ >
+ {integrationsSelectorLabel}
+
+ );
+
+ return (
+
+
+ renderOption(option)}
+ >
+ {(list, search) => (
+
+ {search}
+ {list}
+
+ )}
+
+
+
+ );
+}
diff --git a/x-pack/plugins/dataset_quality/public/components/dataset_quality/columns.tsx b/x-pack/plugins/dataset_quality/public/components/dataset_quality/table/columns.tsx
similarity index 94%
rename from x-pack/plugins/dataset_quality/public/components/dataset_quality/columns.tsx
rename to x-pack/plugins/dataset_quality/public/components/dataset_quality/table/columns.tsx
index 00afbb76bd8f8..33527cb285dad 100644
--- a/x-pack/plugins/dataset_quality/public/components/dataset_quality/columns.tsx
+++ b/x-pack/plugins/dataset_quality/public/components/dataset_quality/table/columns.tsx
@@ -27,12 +27,12 @@ import { css } from '@emotion/react';
import {
DEGRADED_QUALITY_MINIMUM_PERCENTAGE,
POOR_QUALITY_MINIMUM_PERCENTAGE,
-} from '../../../common/constants';
-import { DataStreamStat } from '../../../common/data_streams_stats/data_stream_stat';
-import { QualityIndicator, QualityPercentageIndicator } from '../quality_indicator';
-import { IntegrationIcon } from '../common';
-import { useLinkToLogsExplorer } from '../../hooks';
-import { FlyoutDataset } from '../../state_machines/dataset_quality_controller';
+} from '../../../../common/constants';
+import { DataStreamStat } from '../../../../common/data_streams_stats/data_stream_stat';
+import { QualityIndicator, QualityPercentageIndicator } from '../../quality_indicator';
+import { IntegrationIcon } from '../../common';
+import { useLinkToLogsExplorer } from '../../../hooks';
+import { FlyoutDataset } from '../../../state_machines/dataset_quality_controller';
const expandDatasetAriaLabel = i18n.translate('xpack.datasetQuality.expandLabel', {
defaultMessage: 'Expand',
@@ -189,11 +189,13 @@ export const getDatasetQualityTableColumns = ({
render: (_, dataStreamStat: DataStreamStat) => (
{dataStreamStat.namespace}
),
+ width: '160px',
},
{
name: sizeColumnName,
field: 'size',
sortable: true,
+ width: '100px',
},
{
name: (
@@ -219,6 +221,7 @@ export const getDatasetQualityTableColumns = ({
),
+ width: '140px',
},
{
name: lastActivityColumnName,
@@ -239,6 +242,7 @@ export const getDatasetQualityTableColumns = ({
.getDefaultInstance(KBN_FIELD_TYPES.DATE, [ES_FIELD_TYPES.DATE])
.convert(timestamp);
},
+ width: '300px',
sortable: true,
},
{
diff --git a/x-pack/plugins/dataset_quality/public/components/dataset_quality/table.tsx b/x-pack/plugins/dataset_quality/public/components/dataset_quality/table/table.tsx
similarity index 92%
rename from x-pack/plugins/dataset_quality/public/components/dataset_quality/table.tsx
rename to x-pack/plugins/dataset_quality/public/components/dataset_quality/table/table.tsx
index cd4991ee08915..2629a00318da6 100644
--- a/x-pack/plugins/dataset_quality/public/components/dataset_quality/table.tsx
+++ b/x-pack/plugins/dataset_quality/public/components/dataset_quality/table/table.tsx
@@ -23,11 +23,11 @@ import {
inactiveDatasetsLabel,
loadingDatasetsText,
noDatasetsTitle,
-} from '../../../common/translations';
-import { useDatasetQualityTable } from '../../hooks';
-import { DescriptiveSwitch } from '../common/descriptive_switch';
+} from '../../../../common/translations';
+import { useDatasetQualityTable } from '../../../hooks';
+import { DescriptiveSwitch } from '../../common/descriptive_switch';
-const Flyout = dynamic(() => import('../flyout/flyout'));
+const Flyout = dynamic(() => import('../../flyout/flyout'));
export const Table = () => {
const {
diff --git a/x-pack/plugins/dataset_quality/public/controller/types.ts b/x-pack/plugins/dataset_quality/public/controller/types.ts
index 420562432eef0..a74b5ed498717 100644
--- a/x-pack/plugins/dataset_quality/public/controller/types.ts
+++ b/x-pack/plugins/dataset_quality/public/controller/types.ts
@@ -26,7 +26,7 @@ export type DatasetQualityTableOptions = Partial<
export type DatasetQualityFlyoutOptions = Omit;
-export type DatasetQualityFilterOptions = Partial>;
+export type DatasetQualityFilterOptions = Partial;
export interface DatasetQualityPublicState {
table: DatasetQualityTableOptions;
diff --git a/x-pack/plugins/dataset_quality/public/hooks/use_dataset_quality_filters.tsx b/x-pack/plugins/dataset_quality/public/hooks/use_dataset_quality_filters.tsx
new file mode 100644
index 0000000000000..8eb842df0f636
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/public/hooks/use_dataset_quality_filters.tsx
@@ -0,0 +1,108 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { OnRefreshChangeProps } from '@elastic/eui';
+import { useSelector } from '@xstate/react';
+import { useCallback, useMemo } from 'react';
+import { useDatasetQualityContext } from '../components/dataset_quality/context';
+import { IntegrationItem } from '../components/dataset_quality/filters/integrations_selector';
+
+export const useDatasetQualityFilters = () => {
+ const { service } = useDatasetQualityContext();
+
+ const isLoading = useSelector(service, (state) => state.matches('datasets.fetching'));
+ const {
+ timeRange,
+ integrations: selectedIntegrations,
+ query: selectedQuery,
+ } = useSelector(service, (state) => state.context.filters);
+ const integrations = useSelector(service, (state) => state.context.integrations);
+
+ const onTimeChange = useCallback(
+ (selectedTime: { start: string; end: string; isInvalid: boolean }) => {
+ if (selectedTime.isInvalid) {
+ return;
+ }
+
+ service.send({
+ type: 'UPDATE_TIME_RANGE',
+ timeRange: {
+ ...timeRange,
+ from: selectedTime.start,
+ to: selectedTime.end,
+ },
+ });
+ },
+ [service, timeRange]
+ );
+
+ const onRefresh = useCallback(() => {
+ service.send({
+ type: 'REFRESH_DATA',
+ });
+ }, [service]);
+
+ const onRefreshChange = useCallback(
+ ({ refreshInterval, isPaused }: OnRefreshChangeProps) => {
+ service.send({
+ type: 'UPDATE_TIME_RANGE',
+ timeRange: {
+ ...timeRange,
+ refresh: {
+ isPaused,
+ interval: refreshInterval,
+ },
+ },
+ });
+ },
+ [service, timeRange]
+ );
+
+ const integrationItems: IntegrationItem[] = useMemo(
+ () =>
+ integrations.map((integration) => ({
+ ...integration,
+ label: integration.title,
+ checked: selectedIntegrations.includes(integration.name) ? 'on' : undefined,
+ })),
+ [integrations, selectedIntegrations]
+ );
+
+ const onIntegrationsChange = useCallback(
+ (newIntegrationItems: IntegrationItem[]) => {
+ service.send({
+ type: 'UPDATE_INTEGRATIONS',
+ integrations: newIntegrationItems
+ .filter((integration) => integration.checked === 'on')
+ .map((integration) => integration.name),
+ });
+ },
+ [service]
+ );
+
+ const onQueryChange = useCallback(
+ (query: string) => {
+ service.send({
+ type: 'UPDATE_QUERY',
+ query,
+ });
+ },
+ [service]
+ );
+
+ return {
+ timeRange,
+ onTimeChange,
+ onRefresh,
+ onRefreshChange,
+ integrations: integrationItems,
+ onIntegrationsChange,
+ isLoading,
+ selectedQuery,
+ onQueryChange,
+ };
+};
diff --git a/x-pack/plugins/dataset_quality/public/hooks/use_dataset_quality_table.tsx b/x-pack/plugins/dataset_quality/public/hooks/use_dataset_quality_table.tsx
index bffa271ed9159..0ee4eabdb0195 100644
--- a/x-pack/plugins/dataset_quality/public/hooks/use_dataset_quality_table.tsx
+++ b/x-pack/plugins/dataset_quality/public/hooks/use_dataset_quality_table.tsx
@@ -8,10 +8,10 @@
import { useSelector } from '@xstate/react';
import { orderBy } from 'lodash';
import React, { useCallback, useMemo } from 'react';
-import { DEFAULT_SORT_DIRECTION, DEFAULT_SORT_FIELD } from '../../common/constants';
+import { DEFAULT_SORT_DIRECTION, DEFAULT_SORT_FIELD, NONE } from '../../common/constants';
import { DataStreamStat } from '../../common/data_streams_stats/data_stream_stat';
import { tableSummaryAllText, tableSummaryOfText } from '../../common/translations';
-import { getDatasetQualityTableColumns } from '../components/dataset_quality/columns';
+import { getDatasetQualityTableColumns } from '../components/dataset_quality/table/columns';
import { useDatasetQualityContext } from '../components/dataset_quality/context';
import { FlyoutDataset } from '../state_machines/dataset_quality_controller';
import { useKibanaContextForPlugin } from '../utils';
@@ -38,6 +38,8 @@ export const useDatasetQualityTable = () => {
inactive: showInactiveDatasets,
fullNames: showFullDatasetNames,
timeRange,
+ integrations,
+ query,
} = useSelector(service, (state) => state.context.filters);
const flyout = useSelector(service, (state) => state.context.flyout);
@@ -115,10 +117,26 @@ export const useDatasetQualityTable = () => {
]
);
- const filteredItems = useMemo(
- () => (showInactiveDatasets ? datasets : filterInactiveDatasets({ datasets, timeRange })),
- [showInactiveDatasets, datasets, timeRange]
- );
+ const filteredItems = useMemo(() => {
+ const visibleDatasets = showInactiveDatasets
+ ? datasets
+ : filterInactiveDatasets({ datasets, timeRange });
+
+ const filteredByIntegrations =
+ integrations.length > 0
+ ? visibleDatasets.filter((dataset) => {
+ if (!dataset.integration && integrations.includes(NONE)) {
+ return true;
+ }
+
+ return dataset.integration && integrations.includes(dataset.integration.name);
+ })
+ : visibleDatasets;
+
+ return query
+ ? filteredByIntegrations.filter((dataset) => dataset.rawName.includes(query))
+ : filteredByIntegrations;
+ }, [showInactiveDatasets, datasets, timeRange, integrations, query]);
const pagination = {
pageIndex: page,
@@ -155,7 +173,7 @@ export const useDatasetQualityTable = () => {
}, [sort.field, sort.direction, filteredItems, page, rowsPerPage]);
const resultsCount = useMemo(() => {
- const startNumberItemsOnPage = rowsPerPage * page + 1;
+ const startNumberItemsOnPage = rowsPerPage * page + (renderedItems.length ? 1 : 0);
const endNumberItemsOnPage = rowsPerPage * page + renderedItems.length;
return rowsPerPage === 0 ? (
diff --git a/x-pack/plugins/dataset_quality/public/hooks/use_link_to_logs_explorer.ts b/x-pack/plugins/dataset_quality/public/hooks/use_link_to_logs_explorer.ts
index 1c8ccff71d738..7d8a78d7ea94a 100644
--- a/x-pack/plugins/dataset_quality/public/hooks/use_link_to_logs_explorer.ts
+++ b/x-pack/plugins/dataset_quality/public/hooks/use_link_to_logs_explorer.ts
@@ -10,7 +10,9 @@ import {
SingleDatasetLocatorParams,
} from '@kbn/deeplinks-observability';
import { getRouterLinkProps } from '@kbn/router-utils';
+import { useSelector } from '@xstate/react';
import { DataStreamStat } from '../../common/data_streams_stats/data_stream_stat';
+import { useDatasetQualityContext } from '../components/dataset_quality/context';
import { FlyoutDataset } from '../state_machines/dataset_quality_controller';
import { useKibanaContextForPlugin } from '../utils';
@@ -23,11 +25,16 @@ export const useLinkToLogsExplorer = ({
services: { share },
} = useKibanaContextForPlugin();
+ const { service } = useDatasetQualityContext();
+ const {
+ timeRange: { from, to },
+ } = useSelector(service, (state) => state.context.filters);
+
const params: SingleDatasetLocatorParams = {
dataset: dataStreamStat.name,
timeRange: {
- from: 'now-1d',
- to: 'now',
+ from,
+ to,
},
integration: dataStreamStat.integration?.name,
filterControls: {
diff --git a/x-pack/plugins/dataset_quality/public/services/data_streams_stats/data_streams_stats_client.ts b/x-pack/plugins/dataset_quality/public/services/data_streams_stats/data_streams_stats_client.ts
index 853e883aa5ee8..625eafce2a282 100644
--- a/x-pack/plugins/dataset_quality/public/services/data_streams_stats/data_streams_stats_client.ts
+++ b/x-pack/plugins/dataset_quality/public/services/data_streams_stats/data_streams_stats_client.ts
@@ -8,13 +8,14 @@
import { HttpStart } from '@kbn/core/public';
import { decodeOrThrow } from '@kbn/io-ts-utils';
import { find, merge } from 'lodash';
+import { Integration } from '../../../common/data_streams_stats/integration';
import {
getDataStreamsDegradedDocsStatsResponseRt,
getDataStreamsStatsResponseRt,
getDataStreamsDetailsResponseRt,
getDataStreamsEstimatedDataInBytesResponseRt,
} from '../../../common/api_types';
-import { DEFAULT_DATASET_TYPE } from '../../../common/constants';
+import { DEFAULT_DATASET_TYPE, NONE } from '../../../common/constants';
import {
DataStreamStatServiceResponse,
GetDataStreamsDegradedDocsStatsQuery,
@@ -57,7 +58,15 @@ export class DataStreamsStatsClient implements IDataStreamsStatsClient {
return merge({}, statsItem, { integration });
});
- return mergedDataStreamsStats.map(DataStreamStat.create);
+ const uncategorizedDatasets = dataStreamsStats.some((dataStream) => !dataStream.integration);
+
+ return {
+ dataStreamStats: mergedDataStreamsStats.map(DataStreamStat.create),
+ integrations: (uncategorizedDatasets
+ ? [...integrations, { name: NONE, title: 'None' }]
+ : integrations
+ ).map(Integration.create),
+ };
}
public async getDataStreamsDegradedStats(params: GetDataStreamsDegradedDocsStatsQuery) {
diff --git a/x-pack/plugins/dataset_quality/public/state_machines/dataset_quality_controller/src/defaults.ts b/x-pack/plugins/dataset_quality/public/state_machines/dataset_quality_controller/src/defaults.ts
index 64bea002b4472..797cf0ae85310 100644
--- a/x-pack/plugins/dataset_quality/public/state_machines/dataset_quality_controller/src/defaults.ts
+++ b/x-pack/plugins/dataset_quality/public/state_machines/dataset_quality_controller/src/defaults.ts
@@ -5,11 +5,17 @@
* 2.0.
*/
-import { getDefaultTimeRange } from '../../../utils';
-import { DEFAULT_SORT_DIRECTION, DEFAULT_SORT_FIELD } from '../../../../common/constants';
+import {
+ DEFAULT_DATASET_TYPE,
+ DEFAULT_SORT_DIRECTION,
+ DEFAULT_SORT_FIELD,
+} from '../../../../common/constants';
import { DefaultDatasetQualityControllerState } from './types';
+const ONE_MINUTE_IN_MS = 60000;
+
export const DEFAULT_CONTEXT: DefaultDatasetQualityControllerState = {
+ type: DEFAULT_DATASET_TYPE,
table: {
page: 0,
rowsPerPage: 10,
@@ -21,8 +27,17 @@ export const DEFAULT_CONTEXT: DefaultDatasetQualityControllerState = {
filters: {
inactive: true,
fullNames: false,
- timeRange: getDefaultTimeRange(),
+ timeRange: {
+ from: 'now-24h',
+ to: 'now',
+ refresh: {
+ isPaused: true,
+ interval: ONE_MINUTE_IN_MS,
+ },
+ },
+ integrations: [],
},
flyout: {},
datasets: [],
+ integrations: [],
};
diff --git a/x-pack/plugins/dataset_quality/public/state_machines/dataset_quality_controller/src/state_machine.ts b/x-pack/plugins/dataset_quality/public/state_machines/dataset_quality_controller/src/state_machine.ts
index 8c8f66a008677..2f854740b6a6e 100644
--- a/x-pack/plugins/dataset_quality/public/state_machines/dataset_quality_controller/src/state_machine.ts
+++ b/x-pack/plugins/dataset_quality/public/state_machines/dataset_quality_controller/src/state_machine.ts
@@ -6,27 +6,31 @@
*/
import { IToasts } from '@kbn/core/public';
+import { getDateISORange } from '@kbn/timerange';
import { assign, createMachine, DoneInvokeEvent, InterpreterFrom } from 'xstate';
-import { mergeDegradedStatsIntoDataStreams } from '../../../utils/merge_degraded_docs_into_datastreams';
-import { DataStreamDetails } from '../../../../common/data_streams_stats';
+import {
+ DataStreamDetails,
+ DataStreamStatServiceResponse,
+ GetDataStreamsStatsQuery,
+} from '../../../../common/data_streams_stats';
+import { DegradedDocsStat } from '../../../../common/data_streams_stats/malformed_docs_stat';
import { DataStreamType } from '../../../../common/types';
import { dataStreamPartsToIndexName } from '../../../../common/utils';
-import { DataStreamStat } from '../../../../common/data_streams_stats/data_stream_stat';
import { IDataStreamsStatsClient } from '../../../services/data_streams_stats';
+import { mergeDegradedStatsIntoDataStreams } from '../../../utils';
import { DEFAULT_CONTEXT } from './defaults';
-import {
- DatasetQualityControllerContext,
- DatasetQualityControllerEvent,
- DatasetQualityControllerTypeState,
- FlyoutDataset,
-} from './types';
-import { DegradedDocsStat } from '../../../../common/data_streams_stats/malformed_docs_stat';
import {
fetchDatasetDetailsFailedNotifier,
fetchDatasetStatsFailedNotifier,
fetchDegradedStatsFailedNotifier,
noDatasetSelected,
} from './notifications';
+import {
+ DatasetQualityControllerContext,
+ DatasetQualityControllerEvent,
+ DatasetQualityControllerTypeState,
+ FlyoutDataset,
+} from './types';
export const createPureDatasetQualityControllerStateMachine = (
initialContext: DatasetQualityControllerContext
@@ -76,6 +80,22 @@ export const createPureDatasetQualityControllerStateMachine = (
},
},
},
+ on: {
+ UPDATE_TIME_RANGE: {
+ target: 'datasets.fetching',
+ actions: ['storeTimeRange'],
+ },
+ REFRESH_DATA: {
+ target: 'datasets.fetching',
+ },
+ UPDATE_INTEGRATIONS: {
+ target: 'datasets.loaded',
+ actions: ['storeIntegrations'],
+ },
+ UPDATE_QUERY: {
+ actions: ['storeQuery'],
+ },
+ },
},
degradedDocs: {
initial: 'fetching',
@@ -95,6 +115,15 @@ export const createPureDatasetQualityControllerStateMachine = (
},
loaded: {},
},
+ on: {
+ UPDATE_TIME_RANGE: {
+ target: 'degradedDocs.fetching',
+ actions: ['storeTimeRange'],
+ },
+ REFRESH_DATA: {
+ target: 'degradedDocs.fetching',
+ },
+ },
},
flyout: {
initial: 'closed',
@@ -173,6 +202,36 @@ export const createPureDatasetQualityControllerStateMachine = (
},
};
}),
+ storeTimeRange: assign((context, event) => {
+ return 'timeRange' in event
+ ? {
+ filters: {
+ ...context.filters,
+ timeRange: event.timeRange,
+ },
+ }
+ : {};
+ }),
+ storeIntegrations: assign((context, event) => {
+ return 'integrations' in event
+ ? {
+ filters: {
+ ...context.filters,
+ integrations: event.integrations,
+ },
+ }
+ : {};
+ }),
+ storeQuery: assign((context, event) => {
+ return 'query' in event
+ ? {
+ filters: {
+ ...context.filters,
+ query: event.query,
+ },
+ }
+ : {};
+ }),
storeFlyoutOptions: assign((context, event) => {
return 'dataset' in event
? {
@@ -187,7 +246,8 @@ export const createPureDatasetQualityControllerStateMachine = (
storeDataStreamStats: assign((_context, event) => {
return 'data' in event
? {
- dataStreamStats: event.data as DataStreamStat[],
+ dataStreamStats: (event.data as DataStreamStatServiceResponse).dataStreamStats,
+ integrations: (event.data as DataStreamStatServiceResponse).integrations,
}
: {};
}),
@@ -245,12 +305,21 @@ export const createDatasetQualityControllerStateMachine = ({
fetchDatasetDetailsFailedNotifier(toasts, event.data),
},
services: {
- loadDataStreamStats: (_context) => dataStreamStatsClient.getDataStreamsStats(),
- loadDegradedDocs: (context) =>
- dataStreamStatsClient.getDataStreamsDegradedStats({
- start: context.filters.timeRange.from,
- end: context.filters.timeRange.to,
+ loadDataStreamStats: (context) =>
+ dataStreamStatsClient.getDataStreamsStats({
+ type: context.type as GetDataStreamsStatsQuery['type'],
+ datasetQuery: context.filters.query,
}),
+ loadDegradedDocs: (context) => {
+ const { startDate: start, endDate: end } = getDateISORange(context.filters.timeRange);
+
+ return dataStreamStatsClient.getDataStreamsDegradedStats({
+ type: context.type as GetDataStreamsStatsQuery['type'],
+ datasetQuery: context.filters.query,
+ start,
+ end,
+ });
+ },
loadDataStreamDetails: (context) => {
if (!context.flyout.dataset) {
fetchDatasetDetailsFailedNotifier(toasts, new Error(noDatasetSelected));
diff --git a/x-pack/plugins/dataset_quality/public/state_machines/dataset_quality_controller/src/types.ts b/x-pack/plugins/dataset_quality/public/state_machines/dataset_quality_controller/src/types.ts
index bde8ca84a06e8..158af1e2c8e59 100644
--- a/x-pack/plugins/dataset_quality/public/state_machines/dataset_quality_controller/src/types.ts
+++ b/x-pack/plugins/dataset_quality/public/state_machines/dataset_quality_controller/src/types.ts
@@ -6,6 +6,7 @@
*/
import { DoneInvokeEvent } from 'xstate';
+import { Integration } from '../../../../common/data_streams_stats/integration';
import { Direction, SortField } from '../../../hooks';
import { DegradedDocsStat } from '../../../../common/data_streams_stats/malformed_docs_stat';
import {
@@ -29,13 +30,21 @@ interface TableCriteria {
};
}
+export interface TimeRangeConfig {
+ from: string;
+ to: string;
+ refresh: {
+ isPaused: boolean;
+ interval: number;
+ };
+}
+
interface FiltersCriteria {
inactive: boolean;
fullNames: boolean;
- timeRange: {
- from: string;
- to: string;
- };
+ timeRange: TimeRangeConfig;
+ integrations: string[];
+ query?: string;
}
export interface WithTableOptions {
@@ -65,12 +74,17 @@ export interface WithDatasets {
datasets: DataStreamStat[];
}
-export type DefaultDatasetQualityControllerState = WithTableOptions &
+export interface WithIntegrations {
+ integrations: Integration[];
+}
+
+export type DefaultDatasetQualityControllerState = { type: string } & WithTableOptions &
Partial &
Partial &
WithFlyoutOptions &
WithDatasets &
- WithFilters;
+ WithFilters &
+ WithIntegrations;
type DefaultDatasetQualityStateContext = DefaultDatasetQualityControllerState &
Partial;
@@ -129,6 +143,21 @@ export type DatasetQualityControllerEvent =
| {
type: 'TOGGLE_FULL_DATASET_NAMES';
}
+ | {
+ type: 'UPDATE_TIME_RANGE';
+ timeRange: TimeRangeConfig;
+ }
+ | {
+ type: 'REFRESH_DATA';
+ }
+ | {
+ type: 'UPDATE_INTEGRATIONS';
+ integrations: string[];
+ }
+ | {
+ type: 'UPDATE_QUERY';
+ query: string;
+ }
| DoneInvokeEvent
| DoneInvokeEvent
| DoneInvokeEvent;
diff --git a/x-pack/plugins/dataset_quality/public/state_machines/summary_panel/src/state_machine.ts b/x-pack/plugins/dataset_quality/public/state_machines/summary_panel/src/state_machine.ts
index 187a6155a7bae..e3e3c1c8b660f 100644
--- a/x-pack/plugins/dataset_quality/public/state_machines/summary_panel/src/state_machine.ts
+++ b/x-pack/plugins/dataset_quality/public/state_machines/summary_panel/src/state_machine.ts
@@ -6,11 +6,17 @@
*/
import { IToasts } from '@kbn/core/public';
+import { getDateISORange } from '@kbn/timerange';
import { assign, createMachine, DoneInvokeEvent, InterpreterFrom } from 'xstate';
-import { getDefaultTimeRange } from '../../../utils';
-import { filterInactiveDatasets } from '../../../utils/filter_inactive_datasets';
+import { DEFAULT_TIME_RANGE } from '../../../../common/constants';
import { IDataStreamsStatsClient } from '../../../services/data_streams_stats';
+import { filterInactiveDatasets } from '../../../utils/filter_inactive_datasets';
import { defaultContext, MAX_RETRIES, RETRY_DELAY_IN_MS } from './defaults';
+import {
+ fetchDatasetsActivityFailedNotifier,
+ fetchDatasetsEstimatedDataFailedNotifier,
+ fetchDatasetsQualityFailedNotifier,
+} from './notifications';
import {
DatasetsActivityDetails,
DatasetsQuality,
@@ -21,11 +27,6 @@ import {
EstimatedDataDetails,
Retries,
} from './types';
-import {
- fetchDatasetsEstimatedDataFailedNotifier,
- fetchDatasetsActivityFailedNotifier,
- fetchDatasetsQualityFailedNotifier,
-} from './notifications';
export const createPureDatasetsSummaryPanelStateMachine = (
initialContext: DatasetsSummaryPanelContext
@@ -212,20 +213,20 @@ export const createDatasetsSummaryPanelStateMachine = ({
return { percentages };
},
loadDatasetsActivity: async (_context) => {
- const dataStreamsStats = await dataStreamStatsClient.getDataStreamsStats();
- const activeDataStreams = filterInactiveDatasets({ datasets: dataStreamsStats });
+ const { dataStreamStats } = await dataStreamStatsClient.getDataStreamsStats();
+ const activeDataStreams = filterInactiveDatasets({ datasets: dataStreamStats });
return {
- total: dataStreamsStats.length,
+ total: dataStreamStats.length,
active: activeDataStreams.length,
};
},
loadEstimatedData: async (_context) => {
- const { from: start, to: end } = getDefaultTimeRange();
+ const { startDate, endDate } = getDateISORange(DEFAULT_TIME_RANGE);
return dataStreamStatsClient.getDataStreamsEstimatedDataInBytes({
query: {
type: 'logs',
- start,
- end,
+ start: startDate,
+ end: endDate,
},
});
},
diff --git a/x-pack/plugins/dataset_quality/public/types.ts b/x-pack/plugins/dataset_quality/public/types.ts
index e8df65407e41e..48b1477a27772 100644
--- a/x-pack/plugins/dataset_quality/public/types.ts
+++ b/x-pack/plugins/dataset_quality/public/types.ts
@@ -8,6 +8,8 @@
import { ComponentType } from 'react';
import type { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public';
import { FieldFormatsStart } from '@kbn/field-formats-plugin/public';
+import { DataPublicPluginStart } from '@kbn/data-plugin/public';
+import { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public';
import { CreateDatasetQualityController } from './controller';
import { DatasetQualityProps } from './components/dataset_quality';
@@ -20,8 +22,10 @@ export interface DatasetQualityPluginStart {
}
export interface DatasetQualityStartDeps {
+ data: DataPublicPluginStart;
share: SharePluginStart;
fieldFormats: FieldFormatsStart;
+ unifiedSearch: UnifiedSearchPublicPluginStart;
}
export interface DatasetQualitySetupDeps {
diff --git a/x-pack/plugins/dataset_quality/public/utils/default_timerange.ts b/x-pack/plugins/dataset_quality/public/utils/default_timerange.ts
deleted file mode 100644
index e0fd36c911cb9..0000000000000
--- a/x-pack/plugins/dataset_quality/public/utils/default_timerange.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-const ONE_DAY_IN_MILLISECONDS = 24 * 3600000;
-
-export const getDefaultTimeRange = () => {
- const now = Date.now();
-
- return {
- from: new Date(now - ONE_DAY_IN_MILLISECONDS).toISOString(),
- to: new Date(now).toISOString(),
- };
-};
diff --git a/x-pack/plugins/dataset_quality/public/utils/filter_inactive_datasets.ts b/x-pack/plugins/dataset_quality/public/utils/filter_inactive_datasets.ts
index 86aeb155fd4f8..cfbd5789b4fec 100644
--- a/x-pack/plugins/dataset_quality/public/utils/filter_inactive_datasets.ts
+++ b/x-pack/plugins/dataset_quality/public/utils/filter_inactive_datasets.ts
@@ -5,8 +5,9 @@
* 2.0.
*/
+import { getDateRange } from '@kbn/timerange';
+import { DEFAULT_TIME_RANGE } from '../../common/constants';
import { DataStreamStat } from '../../common/data_streams_stats';
-import { getDefaultTimeRange } from './default_timerange';
interface FilterInactiveDatasetsOptions {
datasets: DataStreamStat[];
@@ -18,15 +19,14 @@ interface FilterInactiveDatasetsOptions {
export const filterInactiveDatasets = ({
datasets,
- timeRange = getDefaultTimeRange(),
+ timeRange = DEFAULT_TIME_RANGE,
}: FilterInactiveDatasetsOptions) => {
- const { from, to } = timeRange;
-
- const startDate = new Date(from).getTime();
- const endDate = new Date(to).getTime();
+ const { startDate, endDate } = getDateRange(timeRange);
return datasets.filter((dataset) =>
- dataset.lastActivity ? isActive(dataset.lastActivity, startDate, endDate) : false
+ dataset.lastActivity
+ ? isActive(dataset.lastActivity, startDate as number, endDate as number)
+ : false
);
};
@@ -39,13 +39,8 @@ interface IsActiveDatasetOptions {
}
export const isActiveDataset = (options: IsActiveDatasetOptions) => {
- const {
- lastActivity,
- timeRange: { from, to },
- } = options;
-
- const startDate = new Date(from).getTime();
- const endDate = new Date(to).getTime();
+ const { lastActivity, timeRange } = options;
+ const { startDate, endDate } = getDateRange(timeRange);
return isActive(lastActivity, startDate, endDate);
};
diff --git a/x-pack/plugins/dataset_quality/public/utils/index.ts b/x-pack/plugins/dataset_quality/public/utils/index.ts
index 9fddcc4b95750..a6b7c09d0fd57 100644
--- a/x-pack/plugins/dataset_quality/public/utils/index.ts
+++ b/x-pack/plugins/dataset_quality/public/utils/index.ts
@@ -5,5 +5,6 @@
* 2.0.
*/
+export * from './filter_inactive_datasets';
+export * from './merge_degraded_docs_into_datastreams';
export * from './use_kibana';
-export * from './default_timerange';
diff --git a/x-pack/plugins/dataset_quality/server/routes/data_streams/get_integrations.ts b/x-pack/plugins/dataset_quality/server/routes/data_streams/get_integrations.ts
index 7871571b607b6..44ffdc02a6731 100644
--- a/x-pack/plugins/dataset_quality/server/routes/data_streams/get_integrations.ts
+++ b/x-pack/plugins/dataset_quality/server/routes/data_streams/get_integrations.ts
@@ -6,6 +6,7 @@
*/
import { PackageClient } from '@kbn/fleet-plugin/server';
+import { PackageNotFoundError } from '@kbn/fleet-plugin/server/errors';
import { DataStreamStat, Integration } from '../../../common/api_types';
export async function getIntegrations(options: {
@@ -39,15 +40,24 @@ const getDatasets = async (options: {
name: string;
version: string;
}) => {
- const { packageClient, name, version } = options;
+ try {
+ const { packageClient, name, version } = options;
- const pkg = await packageClient.getPackage(name, version);
+ const pkg = await packageClient.getPackage(name, version);
- return pkg.packageInfo.data_streams?.reduce(
- (acc, curr) => ({
- ...acc,
- [curr.dataset]: curr.title,
- }),
- {}
- );
+ return pkg.packageInfo.data_streams?.reduce(
+ (acc, curr) => ({
+ ...acc,
+ [curr.dataset]: curr.title,
+ }),
+ {}
+ );
+ } catch (error) {
+ // Custom integration
+ if (error instanceof PackageNotFoundError) {
+ return {};
+ }
+
+ throw error;
+ }
};
diff --git a/x-pack/plugins/dataset_quality/tsconfig.json b/x-pack/plugins/dataset_quality/tsconfig.json
index 6191811e35779..5f77a023bebd4 100644
--- a/x-pack/plugins/dataset_quality/tsconfig.json
+++ b/x-pack/plugins/dataset_quality/tsconfig.json
@@ -31,7 +31,12 @@
"@kbn/shared-ux-utility",
"@kbn/ui-theme",
"@kbn/core-notifications-browser",
- "@kbn/formatters"
+ "@kbn/formatters",
+ "@kbn/data-service",
+ "@kbn/observability-shared-plugin",
+ "@kbn/data-plugin",
+ "@kbn/unified-search-plugin",
+ "@kbn/timerange"
],
"exclude": [
"target/**/*",
diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/index.tsx b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/index.tsx
index 48de28e070eaf..f28ffb7e493d6 100644
--- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/index.tsx
+++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/index.tsx
@@ -8,8 +8,10 @@
import React from 'react';
import { TypedLensByValueInput } from '@kbn/lens-plugin/public';
import { HeaderMenuPortal } from '@kbn/observability-shared-plugin/public';
+import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { ExpViewActionMenuContent } from './action_menu';
import { useExploratoryView } from '../../contexts/exploratory_view_config';
+import { useKibana } from '../../hooks/use_kibana';
interface Props {
timeRange?: { from: string; to: string };
@@ -18,9 +20,22 @@ interface Props {
export function ExpViewActionMenu(props: Props) {
const { setHeaderActionMenu, theme$ } = useExploratoryView();
+ const {
+ observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem },
+ } = useKibana().services;
+
return (
-
+
+
+
+
+ {ObservabilityAIAssistantActionMenuItem ? (
+
+
+
+ ) : null}
+
);
}
diff --git a/x-pack/plugins/fleet/common/openapi/bundled.json b/x-pack/plugins/fleet/common/openapi/bundled.json
index 00c5e138ab8db..f7c192db0fe5e 100644
--- a/x-pack/plugins/fleet/common/openapi/bundled.json
+++ b/x-pack/plugins/fleet/common/openapi/bundled.json
@@ -8308,7 +8308,12 @@
}
}
},
+ "topic": {
+ "type": "string"
+ },
"topics": {
+ "deprecated": true,
+ "description": "Use topic instead.",
"type": "array",
"items": {
"type": "object",
@@ -8317,6 +8322,8 @@
"type": "string"
},
"when": {
+ "deprecated": true,
+ "description": "Deprecated, kafka output do not support conditionnal topics anymore.",
"type": "object",
"properties": {
"type": {
@@ -8822,7 +8829,12 @@
}
}
},
+ "topic": {
+ "type": "string"
+ },
"topics": {
+ "deprecated": true,
+ "description": "Use topic instead.",
"type": "array",
"items": {
"type": "object",
@@ -8831,6 +8843,8 @@
"type": "string"
},
"when": {
+ "deprecated": true,
+ "description": "Deprecated, kafka output do not support conditionnal topics anymore.",
"type": "object",
"properties": {
"type": {
diff --git a/x-pack/plugins/fleet/common/openapi/bundled.yaml b/x-pack/plugins/fleet/common/openapi/bundled.yaml
index aeb70dc61d4ba..406a2550d770d 100644
--- a/x-pack/plugins/fleet/common/openapi/bundled.yaml
+++ b/x-pack/plugins/fleet/common/openapi/bundled.yaml
@@ -5368,7 +5368,11 @@ components:
properties:
group_events:
type: number
+ topic:
+ type: string
topics:
+ deprecated: true
+ description: Use topic instead.
type: array
items:
type: object
@@ -5376,6 +5380,10 @@ components:
topic:
type: string
when:
+ deprecated: true
+ description: >-
+ Deprecated, kafka output do not support conditionnal topics
+ anymore.
type: object
properties:
type:
@@ -5707,7 +5715,11 @@ components:
properties:
group_events:
type: number
+ topic:
+ type: string
topics:
+ deprecated: true
+ description: Use topic instead.
type: array
items:
type: object
@@ -5715,6 +5727,10 @@ components:
topic:
type: string
when:
+ deprecated: true
+ description: >-
+ Deprecated, kafka output do not support conditionnal topics
+ anymore.
type: object
properties:
type:
diff --git a/x-pack/plugins/fleet/common/openapi/components/schemas/output_create_request_kafka.yaml b/x-pack/plugins/fleet/common/openapi/components/schemas/output_create_request_kafka.yaml
index 05617f26c949f..14e3f9dde4063 100644
--- a/x-pack/plugins/fleet/common/openapi/components/schemas/output_create_request_kafka.yaml
+++ b/x-pack/plugins/fleet/common/openapi/components/schemas/output_create_request_kafka.yaml
@@ -95,7 +95,11 @@ properties:
properties:
group_events:
type: number
+ topic:
+ type: string
topics:
+ deprecated: true
+ description: Use topic instead.
type: array
items:
type: object
@@ -103,6 +107,8 @@ properties:
topic:
type: string
when:
+ deprecated: true
+ description: Deprecated, kafka output do not support conditionnal topics anymore.
type: object
properties:
type:
diff --git a/x-pack/plugins/fleet/common/openapi/components/schemas/output_update_request_kafka.yaml b/x-pack/plugins/fleet/common/openapi/components/schemas/output_update_request_kafka.yaml
index f7335071b87ba..2b52722923b56 100644
--- a/x-pack/plugins/fleet/common/openapi/components/schemas/output_update_request_kafka.yaml
+++ b/x-pack/plugins/fleet/common/openapi/components/schemas/output_update_request_kafka.yaml
@@ -95,7 +95,11 @@ properties:
properties:
group_events:
type: number
+ topic:
+ type: string
topics:
+ deprecated: true
+ description: Use topic instead.
type: array
items:
type: object
@@ -103,6 +107,8 @@ properties:
topic:
type: string
when:
+ deprecated: true
+ description: Deprecated, kafka output do not support conditionnal topics anymore.
type: object
properties:
type:
diff --git a/x-pack/plugins/fleet/common/types/models/output.ts b/x-pack/plugins/fleet/common/types/models/output.ts
index 0875eafd8fbdf..938c4c4cdced0 100644
--- a/x-pack/plugins/fleet/common/types/models/output.ts
+++ b/x-pack/plugins/fleet/common/types/models/output.ts
@@ -126,6 +126,7 @@ export interface KafkaOutput extends NewBaseOutput {
hash?: string;
random?: boolean;
};
+ topic?: string;
topics?: Array<{
topic: string;
when?: {
diff --git a/x-pack/plugins/fleet/cypress/e2e/fleet_settings_outputs.cy.ts b/x-pack/plugins/fleet/cypress/e2e/fleet_settings_outputs.cy.ts
index 6aadca2da9d7e..f4c08e8e938d2 100644
--- a/x-pack/plugins/fleet/cypress/e2e/fleet_settings_outputs.cy.ts
+++ b/x-pack/plugins/fleet/cypress/e2e/fleet_settings_outputs.cy.ts
@@ -329,32 +329,8 @@ queue:
// Topics
cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_PANEL).within(() => {
cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_DEFAULT_TOPIC_INPUT);
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON);
});
- // Verify one topic processor fields
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON).click();
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT);
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT);
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT);
-
- // Verify additional topic processor fields
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON).click();
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT);
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT);
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT);
- cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT, 1));
- cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT, 1));
- cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT, 1));
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_DRAG_HANDLE_ICON);
-
- // Verify remove topic processors
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_REMOVE_ROW_BUTTON).click();
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_REMOVE_ROW_BUTTON).click();
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT).should('not.exist');
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT).should('not.exist');
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT).should('not.exist');
-
cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_PANEL).within(() => {
cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_KEY_INPUT);
cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_VALUE_INPUT);
@@ -402,7 +378,6 @@ queue:
it('displays proper error messages', () => {
selectKafkaOutput();
cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_CLIENT_ID_INPUT).clear();
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON).click();
cy.getBySel(SETTINGS_SAVE_BTN).click();
cy.contains('Name is required');
@@ -410,17 +385,13 @@ queue:
cy.contains('Username is required');
cy.contains('Password is required');
cy.contains('Default topic is required');
- cy.contains('Topic is required');
cy.contains(
'Client ID is invalid. Only letters, numbers, dots, underscores, and dashes are allowed.'
);
- cy.contains('Must be a key, value pair i.e. "http.response.code: 200"');
shouldDisplayError(SETTINGS_OUTPUTS.NAME_INPUT);
shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_USERNAME_INPUT);
shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_PASSWORD_INPUT);
shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.TOPICS_DEFAULT_TOPIC_INPUT);
- shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT);
- shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT);
shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.HEADERS_CLIENT_ID_INPUT);
});
});
diff --git a/x-pack/plugins/fleet/cypress/screens/fleet.ts b/x-pack/plugins/fleet/cypress/screens/fleet.ts
index d7b1b5abf7ac7..a877c69205efa 100644
--- a/x-pack/plugins/fleet/cypress/screens/fleet.ts
+++ b/x-pack/plugins/fleet/cypress/screens/fleet.ts
@@ -164,12 +164,6 @@ export const SETTINGS_OUTPUTS_KAFKA = {
PARTITIONING_HASH_INPUT: 'settingsOutputsFlyout.kafkaPartitionTypeHashInput',
TOPICS_PANEL: 'settingsOutputsFlyout.kafkaTopicsPanel',
TOPICS_DEFAULT_TOPIC_INPUT: 'settingsOutputsFlyout.kafkaDefaultTopicInput',
- TOPICS_ADD_ROW_BUTTON: 'fleetServerHosts.kafkaTopicsInput.addRowButton',
- TOPICS_DRAG_HANDLE_ICON: 'settingsOutputsFlyout.kafkaTopicsProcessorDragHandle0',
- TOPICS_WHEN_INPUT: 'settingsOutputsFlyout.kafkaTopicsProcessorWhenInput0',
- TOPICS_CONDITION_INPUT: 'settingsOutputsFlyout.kafkaTopicsProcessorConditionInput0',
- TOPICS_TOPIC_INPUT: 'settingsOutputsFlyout.kafkaTopicsProcessorTopicInput0',
- TOPICS_REMOVE_ROW_BUTTON: 'settingsOutputsFlyout.kafkaTopicsProcessorDeleteButton0',
HEADERS_PANEL: 'settingsOutputsFlyout.kafkaHeadersPanel',
HEADERS_KEY_INPUT: 'settingsOutputsFlyout.kafkaHeadersKeyInput0',
HEADERS_VALUE_INPUT: 'settingsOutputsFlyout.kafkaHeadersValueInput0',
diff --git a/x-pack/plugins/fleet/cypress/screens/fleet_outputs.ts b/x-pack/plugins/fleet/cypress/screens/fleet_outputs.ts
index e439961e287d7..7370201f2b9a6 100644
--- a/x-pack/plugins/fleet/cypress/screens/fleet_outputs.ts
+++ b/x-pack/plugins/fleet/cypress/screens/fleet_outputs.ts
@@ -129,30 +129,6 @@ export const kafkaOutputFormValues = {
selector: SETTINGS_OUTPUTS_KAFKA.TOPICS_DEFAULT_TOPIC_INPUT,
value: 'testDefaultTopic',
},
- firstTopic: {
- selector: SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT,
- value: 'testTopic1',
- },
- firstTopicCondition: {
- selector: SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT,
- value: 'testCondition: abc',
- },
- firstTopicWhen: {
- selector: SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT,
- value: 'equals',
- },
- secondTopic: {
- selector: getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT, 1),
- value: 'testTopic1',
- },
- secondTopicCondition: {
- selector: getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT, 1),
- value: 'testCondition1: dca',
- },
- secondTopicWhen: {
- selector: getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT, 1),
- value: 'contains',
- },
firstHeaderKey: {
selector: SETTINGS_OUTPUTS_KAFKA.HEADERS_KEY_INPUT,
value: 'testKey',
@@ -223,30 +199,6 @@ export const fillInKafkaOutputForm = (create?: boolean) => {
kafkaOutputFormValues.defaultTopic.value
);
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON).click();
-
- cy.getBySel(kafkaOutputFormValues.firstTopic.selector).type(
- kafkaOutputFormValues.firstTopic.value
- );
- cy.getBySel(kafkaOutputFormValues.firstTopicCondition.selector).type(
- kafkaOutputFormValues.firstTopicCondition.value
- );
- cy.getBySel(kafkaOutputFormValues.firstTopicWhen.selector).select(
- kafkaOutputFormValues.firstTopicWhen.value
- );
-
- cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON).click();
-
- cy.getBySel(kafkaOutputFormValues.secondTopic.selector).type(
- kafkaOutputFormValues.secondTopic.value
- );
- cy.getBySel(kafkaOutputFormValues.secondTopicCondition.selector).type(
- kafkaOutputFormValues.secondTopicCondition.value
- );
- cy.getBySel(kafkaOutputFormValues.secondTopicWhen.selector).select(
- kafkaOutputFormValues.secondTopicWhen.value
- );
-
cy.getBySel(kafkaOutputFormValues.firstHeaderKey.selector).type(
kafkaOutputFormValues.firstHeaderKey.value
);
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/filter_bar/tags_filter.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/filter_bar/tags_filter.test.tsx
new file mode 100644
index 0000000000000..4725939ec9132
--- /dev/null
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/filter_bar/tags_filter.test.tsx
@@ -0,0 +1,37 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React from 'react';
+
+import { createFleetTestRendererMock } from '../../../../../../../mock';
+
+import { TagsFilter } from './tags_filter';
+
+describe('TagsFilter', () => {
+ function render(props: any) {
+ const renderer = createFleetTestRendererMock();
+
+ return renderer.render();
+ }
+
+ it('should remove one tag on clicking selected tag', async () => {
+ const tags = ['tag1', 'tag2', 'tag3'];
+ const selectedTags = ['tag1', 'tag2', 'tag3'];
+ const onSelectedTagsChange = jest.fn();
+ const props = {
+ tags,
+ selectedTags,
+ onSelectedTagsChange,
+ };
+ const { getByText, getByTestId } = render(props);
+ const filterButton = getByTestId('agentList.tagsFilter');
+ filterButton.click();
+ const tag = getByText('tag1');
+ tag.click();
+ expect(onSelectedTagsChange).toHaveBeenCalledWith(['tag2', 'tag3']);
+ });
+});
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/filter_bar/tags_filter.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/filter_bar/tags_filter.tsx
index d7a61170b13c9..eb349c9893244 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/filter_bar/tags_filter.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/filter_bar/tags_filter.tsx
@@ -73,18 +73,19 @@ export const TagsFilter: React.FunctionComponent = ({
{
- setOptions(newOptions);
newOptions.forEach((option, index) => {
if (option.checked !== options[index].checked) {
const tag = option.key!;
if (option.checked !== 'on') {
removeTagsFilter(tag);
+ return;
} else {
addTagsFilter(tag);
+ return;
}
- return;
}
});
+ setOptions(newOptions);
}}
data-test-subj="agentList.agentPolicyFilterOptions"
listProps={{
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/index.tsx
index 86b3418930721..f7d2b27a34071 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/index.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/index.tsx
@@ -29,15 +29,12 @@ import {
EuiLink,
EuiComboBox,
EuiBetaBadge,
- useEuiTheme,
EuiText,
EuiAccordion,
EuiCode,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
-import { css } from '@emotion/react';
-
import type { OutputType, ValueOf } from '../../../../../../../common/types';
import {
@@ -81,7 +78,6 @@ export const EditOutputFlyout: React.FunctionComponent =
const form = useOutputForm(onClose, output, defaultOuput);
const inputs = form.inputs;
const { docLinks, cloud } = useStartServices();
- const { euiTheme } = useEuiTheme();
const { outputSecretsStorage: isOutputSecretsStorageEnabled } = ExperimentalFeaturesService.get();
const [useSecretsStorage, setUseSecretsStorage] = React.useState(isOutputSecretsStorageEnabled);
const onToggleSecretStorage = (secretEnabled: boolean) => {
@@ -295,20 +291,6 @@ export const EditOutputFlyout: React.FunctionComponent =
id="xpack.fleet.settings.editOutputFlyout.typeInputLabel"
defaultMessage="Type"
/>
- {inputs.typeInput.value === outputType.Kafka && (
-
- )}
>
}
>
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_topics.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_topics.tsx
index 58cff89ac8c8f..df6244bf253e2 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_topics.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_topics.tsx
@@ -5,182 +5,15 @@
* 2.0.
*/
-import {
- EuiButtonEmpty,
- EuiButtonIcon,
- EuiDragDropContext,
- euiDragDropReorder,
- EuiDraggable,
- EuiDroppable,
- EuiFieldText,
- EuiFlexGroup,
- EuiFlexItem,
- EuiFormErrorText,
- EuiFormRow,
- EuiIcon,
- EuiLink,
- EuiPanel,
- EuiSelect,
- EuiSpacer,
- EuiText,
- EuiTitle,
-} from '@elastic/eui';
+import { EuiFieldText, EuiFormRow, EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui';
import { FormattedMessage } from '@kbn/i18n-react';
-import React, { useCallback, useMemo, useState } from 'react';
-
-import { i18n } from '@kbn/i18n';
-
-import styled, { useTheme } from 'styled-components';
-
-import type { EuiTheme } from '@kbn/kibana-react-plugin/common';
-
-import { useStartServices } from '../../../../../../hooks';
-
-import type { KafkaTopicWhenType, ValueOf } from '../../../../../../../common/types';
-
-import { kafkaTopicWhenType } from '../../../../../../../common/constants';
+import React from 'react';
import type { OutputFormInputsType } from './use_output_form';
-export const OutputFormKafkaTopics: React.FunctionComponent<{ inputs: OutputFormInputsType }> = (
- props
-) => {
- const { inputs } = props;
- const {
- props: { onChange, id },
- value: topics,
- formRowProps: { error: errors },
- } = inputs.kafkaTopicsInput;
- const theme = useTheme() as EuiTheme;
- const [autoFocus, setAutoFocus] = useState(false);
- const { docLinks } = useStartServices();
-
- const indexedErrors = useMemo(() => {
- if (!errors) {
- return [];
- }
- return errors.reduce((acc, err) => {
- if (err.index === undefined) {
- return acc;
- }
-
- if (!acc[err.index]) {
- acc[err.index] = [];
- }
-
- if (!err.condition) {
- acc[err.index].push(err.message);
- }
-
- return acc;
- }, []);
- }, [errors]);
-
- const indexedConditionErrors = useMemo(() => {
- if (!errors) {
- return [];
- }
- return errors.reduce((acc, err) => {
- if (err.index === undefined) {
- return acc;
- }
-
- if (!acc[err.index]) {
- acc[err.index] = [];
- }
-
- if (err.condition) {
- acc[err.index].push(err.message);
- }
-
- return acc;
- }, []);
- }, [errors]);
-
- const handleTopicProcessorChange = useCallback(
- (index: number, field: 'topic' | 'condition' | 'type', value: string) => {
- const updatedTopics = topics.map((topic, i) => {
- if (i === index) {
- if (field === 'topic') {
- return {
- ...topic,
- topic: value,
- };
- } else {
- return {
- ...topic,
- when: {
- ...(topic.when || {}),
- ...((field === 'condition' ? { condition: value } : {}) as { condition?: string }),
- ...((field === 'type' ? { type: value } : {}) as {
- type?: ValueOf;
- }),
- },
- };
- }
- }
- return topic;
- });
- onChange(updatedTopics);
- },
- [topics, onChange]
- );
-
- const addTopicProcessor = useCallback(() => {
- setAutoFocus(true);
- const updatedTopics = [...topics, { topic: '', when: { type: kafkaTopicWhenType.Contains } }];
- onChange(updatedTopics);
- }, [topics, onChange]);
-
- const deleteTopicProcessor = useCallback(
- (index: number) => {
- const updatedTopics = topics.filter((_, i) => i !== index);
- indexedErrors.splice(index, 1);
- indexedConditionErrors.splice(index, 1);
- onChange(updatedTopics);
- },
- [topics, indexedErrors, indexedConditionErrors, onChange]
- );
-
- const displayErrors = (errorMessages?: string[]) => {
- return errorMessages?.length
- ? errorMessages.map((item, idx) => {item})
- : null;
- };
-
- const globalErrors = useMemo(() => {
- return errors && errors.filter((err) => err.index === undefined).map(({ message }) => message);
- }, [errors]);
-
- const kafkaTopicWhenTypes = useMemo(
- () =>
- (Object.keys(kafkaTopicWhenType) as Array).map((type) => ({
- text: kafkaTopicWhenType[type],
- label: type,
- })),
- []
- );
-
- const DraggableDiv = styled.div`
- margin: ${(styledProps) => styledProps.theme.eui.euiSizeS};
- `;
-
- const onDragEndHandler = useCallback(
- ({ source, destination }) => {
- if (source && destination) {
- const items = euiDragDropReorder(topics, source.index, destination.index);
- const sourceErrors = indexedErrors[source.index];
- indexedErrors.splice(source.index, 1);
- indexedErrors.splice(destination.index, 0, sourceErrors);
- const sourceConditionErrors = indexedConditionErrors[source.index];
- indexedConditionErrors.splice(source.index, 1);
- indexedConditionErrors.splice(destination.index, 0, sourceConditionErrors);
- onChange(items);
- }
- },
- [topics, indexedErrors, indexedConditionErrors, onChange]
- );
-
+export const OutputFormKafkaTopics: React.FunctionComponent<{ inputs: OutputFormInputsType }> = ({
+ inputs,
+}) => {
return (
- {topics.length > 0 && (
-
-
-
-
-
- documentation
-
- ),
- }}
- />
-
-
- >
- }
- >
- {topics.length > 1 ? (
-
-
- {topics.map((topic, index) => {
- const topicErrors = indexedErrors[index];
- const topicConditionErrors = indexedConditionErrors[index];
- return (
-
-
- {(provided, state) => (
- <>
-
-
-
-
-
-
-
-
-
-
-
- handleTopicProcessorChange(index, 'type', e.target.value)
- }
- />
-
-
-
- 0}
- >
- 0}
- onChange={(e) =>
- handleTopicProcessorChange(index, 'condition', e.target.value)
- }
- />
-
-
-
-
- deleteTopicProcessor(index)}
- iconType="cross"
- aria-label={i18n.translate(
- 'xpack.fleet.multiRowInput.deleteButton',
- {
- defaultMessage: 'Delete row',
- }
- )}
- />
-
-
- 0}
- >
- 0}
- onChange={(e) =>
- handleTopicProcessorChange(index, 'topic', e.target.value)
- }
- />
-
-
-
- >
- )}
-
-
- );
- })}
-
-
- ) : (
- <>
- {topics.map((topic, index) => {
- const topicErrors = indexedErrors[index];
- const topicConditionErrors = indexedConditionErrors[index];
- return (
- <>
-
-
-
-
-
-
- handleTopicProcessorChange(index, 'type', e.target.value)
- }
- />
-
-
-
- 0}
- >
- 0}
- onChange={(e) =>
- handleTopicProcessorChange(index, 'condition', e.target.value)
- }
- />
-
-
-
-
- deleteTopicProcessor(index)}
- iconType="cross"
- aria-label={i18n.translate('xpack.fleet.multiRowInput.deleteButton', {
- defaultMessage: 'Delete row',
- })}
- />
-
-
- 0}
- >
- 0}
- autoFocus={autoFocus}
- prepend="Topic"
- value={topic.topic}
- onChange={(e) =>
- handleTopicProcessorChange(index, 'topic', e.target.value)
- }
- />
-
-
-
- >
- );
- })}
- >
- )}
-
- )}
- {displayErrors(globalErrors)}
-
-
-
-
-
);
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/use_output_form.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/use_output_form.tsx
index f07afd27079c4..b6a0313f23595 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/use_output_form.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/use_output_form.tsx
@@ -44,7 +44,6 @@ import {
useRadioInput,
sendPutOutput,
useKeyValueInput,
- useTopicsInput,
} from '../../../../hooks';
import type { Output } from '../../../../types';
import { useConfirmModal } from '../../hooks/use_confirm_modal';
@@ -66,7 +65,6 @@ import {
validateKafkaPasswordSecret,
validateKafkaHeaders,
validateKafkaDefaultTopic,
- validateKafkaTopics,
validateKafkaClientId,
validateKafkaHosts,
validateKafkaPartitioningGroupEvents,
@@ -118,7 +116,6 @@ export interface OutputFormInputsType {
kafkaHeadersInput: ReturnType;
kafkaClientIdInput: ReturnType;
kafkaDefaultTopicInput: ReturnType;
- kafkaTopicsInput: ReturnType;
kafkaCompressionInput: ReturnType;
kafkaCompressionLevelInput: ReturnType;
kafkaCompressionCodecInput: ReturnType;
@@ -339,14 +336,6 @@ export function useOutputForm(onSucess: () => void, output?: Output, defaultOupu
return lastTopic || '';
};
- const extractKafkaTopics = (topics?: Array<{ topic: string }>) => {
- if (!topics || topics.length <= 1) {
- return [];
- }
-
- return topics.slice(0, -1);
- };
-
const kafkaVersionInput = useInput(
kafkaOutput?.version ?? '1.0.0',
undefined,
@@ -451,12 +440,6 @@ export function useOutputForm(onSucess: () => void, output?: Output, defaultOupu
validateKafkaDefaultTopic,
isDisabled('topics')
);
- const kafkaTopicsInput = useTopicsInput(
- 'kafkaTopicsComboBox',
- extractKafkaTopics(kafkaOutput?.topics),
- validateKafkaTopics,
- isDisabled('topics')
- );
const kafkaHeadersInput = useKeyValueInput(
'kafkaHeadersComboBox',
kafkaOutput?.headers ?? [{ key: '', value: '' }],
@@ -565,7 +548,6 @@ export function useOutputForm(onSucess: () => void, output?: Output, defaultOupu
kafkaSslKeyInput,
kafkaSslKeySecretInput,
kafkaDefaultTopicInput,
- kafkaTopicsInput,
};
const hasChanged = Object.values(inputs).some((input) => input.hasChanged);
@@ -582,7 +564,6 @@ export function useOutputForm(onSucess: () => void, output?: Output, defaultOupu
const kafkaSslKeyPlainValid = kafkaSslKeyInput.validate();
const kafkaSslKeySecretValid = kafkaSslKeySecretInput.validate();
const kafkaDefaultTopicValid = kafkaDefaultTopicInput.validate();
- const kafkaTopicsValid = kafkaTopicsInput.validate();
const kafkaHeadersValid = kafkaHeadersInput.validate();
const logstashHostsValid = logstashHostsInput.validate();
const additionalYamlConfigValid = additionalYamlConfigInput.validate();
@@ -625,7 +606,6 @@ export function useOutputForm(onSucess: () => void, output?: Output, defaultOupu
kafkaPasswordValid &&
kafkaHeadersValid &&
kafkaDefaultTopicValid &&
- kafkaTopicsValid &&
additionalYamlConfigValid &&
kafkaClientIDValid &&
partitioningRandomGroupEventsValid &&
@@ -662,7 +642,6 @@ export function useOutputForm(onSucess: () => void, output?: Output, defaultOupu
kafkaSslKeyInput,
kafkaSslKeySecretInput,
kafkaDefaultTopicInput,
- kafkaTopicsInput,
kafkaHeadersInput,
logstashHostsInput,
additionalYamlConfigInput,
@@ -839,7 +818,7 @@ export function useOutputForm(onSucess: () => void, output?: Output, defaultOupu
},
}
: {}),
- topics: [...kafkaTopicsInput.value, { topic: kafkaDefaultTopicInput.value }],
+ topics: [{ topic: kafkaDefaultTopicInput.value }],
headers: kafkaHeadersInput.value,
timeout: parseIntegerIfStringDefined(kafkaBrokerTimeoutInput.value),
broker_timeout: parseIntegerIfStringDefined(
@@ -984,7 +963,6 @@ export function useOutputForm(onSucess: () => void, output?: Output, defaultOupu
kafkaPartitionTypeRandomInput.value,
kafkaPartitionTypeRoundRobinInput.value,
kafkaPartitionTypeHashInput.value,
- kafkaTopicsInput.value,
kafkaDefaultTopicInput.value,
kafkaHeadersInput.value,
kafkaBrokerTimeoutInput.value,
diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/assets/assets.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/assets/assets.tsx
index 0b135de831c65..9c51527c4a2de 100644
--- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/assets/assets.tsx
+++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/assets/assets.tsx
@@ -5,7 +5,7 @@
* 2.0.
*/
-import React, { Fragment, useEffect, useState } from 'react';
+import React, { Fragment, useEffect, useState, useCallback } from 'react';
import { Redirect } from 'react-router-dom';
import { FormattedMessage } from '@kbn/i18n-react';
import { EuiFlexGroup, EuiFlexItem, EuiLink, EuiSpacer, EuiTitle, EuiCallOut } from '@elastic/eui';
@@ -38,10 +38,12 @@ import { AssetsAccordion } from './assets_accordion';
interface AssetsPanelProps {
packageInfo: PackageInfo;
+ refetchPackageInfo: () => void;
}
-export const AssetsPage = ({ packageInfo }: AssetsPanelProps) => {
+export const AssetsPage = ({ packageInfo, refetchPackageInfo }: AssetsPanelProps) => {
const { name, version } = packageInfo;
+
const pkgkey = `${name}-${version}`;
const { spaces, docLinks } = useStartServices();
const customAssetsExtension = useUIExtension(packageInfo.name, 'package-detail-assets');
@@ -60,6 +62,12 @@ export const AssetsPage = ({ packageInfo }: AssetsPanelProps) => {
const [fetchError, setFetchError] = useState();
const [isLoading, setIsLoading] = useState(true);
+ const forceRefreshAssets = useCallback(() => {
+ if (refetchPackageInfo) {
+ refetchPackageInfo();
+ }
+ }, [refetchPackageInfo]);
+
useEffect(() => {
const fetchAssetSavedObjects = async () => {
if ('installationInfo' in packageInfo) {
@@ -245,6 +253,7 @@ export const AssetsPage = ({ packageInfo }: AssetsPanelProps) => {
>
diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/assets/deferred_assets_accordion.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/assets/deferred_assets_accordion.tsx
index 4a10a360f31de..85f5984e7de64 100644
--- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/assets/deferred_assets_accordion.tsx
+++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/assets/deferred_assets_accordion.tsx
@@ -26,11 +26,13 @@ import { DeferredTransformAccordion } from './deferred_transforms_accordion';
interface Props {
packageInfo: PackageInfo;
deferredInstallations: EsAssetReference[];
+ forceRefreshAssets?: () => void;
}
export const DeferredAssetsSection: FunctionComponent = ({
deferredInstallations,
packageInfo,
+ forceRefreshAssets,
}) => {
const authz = useAuthz();
@@ -60,6 +62,7 @@ export const DeferredAssetsSection: FunctionComponent = ({
packageInfo={packageInfo}
type={ElasticsearchAssetType.transform}
deferredInstallations={deferredTransforms}
+ forceRefreshAssets={forceRefreshAssets}
/>
>
);
diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/assets/deferred_transforms_accordion.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/assets/deferred_transforms_accordion.tsx
index 42b39f966e836..ed76562ed44cb 100644
--- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/assets/deferred_transforms_accordion.tsx
+++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/assets/deferred_transforms_accordion.tsx
@@ -5,7 +5,7 @@
* 2.0.
*/
-import React, { Fragment, useCallback, useMemo, useState } from 'react';
+import React, { Fragment, useCallback, useState, useMemo } from 'react';
import type { FunctionComponent, MouseEvent } from 'react';
import {
@@ -42,6 +42,7 @@ interface Props {
packageInfo: PackageInfo;
type: ElasticsearchAssetType.transform;
deferredInstallations: EsAssetReference[];
+ forceRefreshAssets?: () => void;
}
export const getDeferredAssetDescription = (
@@ -83,6 +84,7 @@ export const DeferredTransformAccordion: FunctionComponent = ({
packageInfo,
type,
deferredInstallations,
+ forceRefreshAssets,
}) => {
const { notifications } = useStartServices();
const [isLoading, setIsLoading] = useState(false);
@@ -159,6 +161,9 @@ export const DeferredTransformAccordion: FunctionComponent = ({
),
{ toastLifeTimeMs: 1000 }
);
+ if (forceRefreshAssets) {
+ forceRefreshAssets();
+ }
}
}
} catch (e) {
@@ -171,11 +176,14 @@ export const DeferredTransformAccordion: FunctionComponent = ({
}
),
});
+ if (forceRefreshAssets) {
+ forceRefreshAssets();
+ }
}
}
setIsLoading(false);
},
- [notifications.toasts, packageInfo.name, packageInfo.version]
+ [notifications.toasts, packageInfo.name, packageInfo.version, forceRefreshAssets]
);
if (deferredTransforms.length === 0) return null;
return (
diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/index.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/index.tsx
index b2a2ad23ba514..1312b21f49784 100644
--- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/index.tsx
+++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/index.tsx
@@ -776,7 +776,7 @@ export function Detail() {
-
+
diff --git a/x-pack/plugins/fleet/public/hooks/use_input.ts b/x-pack/plugins/fleet/public/hooks/use_input.ts
index 42295aebd9f49..07c81de41c13a 100644
--- a/x-pack/plugins/fleet/public/hooks/use_input.ts
+++ b/x-pack/plugins/fleet/public/hooks/use_input.ts
@@ -9,8 +9,6 @@ import { useState, useCallback, useEffect } from 'react';
import type React from 'react';
import type { EuiSwitchEvent } from '@elastic/eui';
-import type { KafkaTopicWhenType, ValueOf } from '../../common/types';
-
export interface FormInput {
validate: () => boolean;
}
@@ -307,25 +305,6 @@ export function useKeyValueInput(
);
}
-type Topic = Array<{
- topic: string;
- when?: {
- type?: ValueOf;
- condition?: string;
- };
-}>;
-
-export function useTopicsInput(
- id: string,
- defaultValue: Topic = [],
- validate?: (
- value: Topic
- ) => Array<{ message: string; index: number; condition?: boolean }> | undefined,
- disabled = false
-) {
- return useCustomInput(id, defaultValue, validate, disabled);
-}
-
export function useNumberInput(
defaultValue: number | undefined,
validate?: (value: number) => number[] | undefined,
diff --git a/x-pack/plugins/fleet/server/routes/epm/handlers.ts b/x-pack/plugins/fleet/server/routes/epm/handlers.ts
index a186d494e333c..5c14cf3d3bac8 100644
--- a/x-pack/plugins/fleet/server/routes/epm/handlers.ts
+++ b/x-pack/plugins/fleet/server/routes/epm/handlers.ts
@@ -412,6 +412,8 @@ export const bulkInstallPackagesFromRegistryHandler: FleetRequestHandler<
const savedObjectsClient = fleetContext.internalSoClient;
const esClient = coreContext.elasticsearch.client.asInternalUser;
const spaceId = fleetContext.spaceId;
+ const user = (await appContextService.getSecurity()?.authc.getCurrentUser(request)) || undefined;
+ const authorizationHeader = HTTPAuthorizationHeader.parseFromRequest(request, user?.username);
const bulkInstalledResponses = await bulkInstallPackages({
savedObjectsClient,
@@ -420,6 +422,7 @@ export const bulkInstallPackagesFromRegistryHandler: FleetRequestHandler<
spaceId,
prerelease: request.query.prerelease,
force: request.body.force,
+ authorizationHeader,
});
const payload = bulkInstalledResponses.map(bulkInstallServiceResponseToHttpEntry);
const body: BulkInstallPackagesResponse = {
diff --git a/x-pack/plugins/fleet/server/saved_objects/index.ts b/x-pack/plugins/fleet/server/saved_objects/index.ts
index b8559d0f1f988..812eecee84d8a 100644
--- a/x-pack/plugins/fleet/server/saved_objects/index.ts
+++ b/x-pack/plugins/fleet/server/saved_objects/index.ts
@@ -230,6 +230,7 @@ export const getSavedObjectTypes = (): { [key: string]: SavedObjectsType } => ({
random: { type: 'boolean' },
},
},
+ topic: { type: 'text', index: false },
topics: {
dynamic: false,
properties: {
@@ -362,6 +363,16 @@ export const getSavedObjectTypes = (): { [key: string]: SavedObjectsType } => ({
},
],
},
+ '6': {
+ changes: [
+ {
+ type: 'mappings_addition',
+ addedMappings: {
+ topic: { type: 'text', index: false },
+ },
+ },
+ ],
+ },
},
migrations: {
'7.13.0': migrateOutputToV7130,
@@ -730,6 +741,7 @@ export const OUTPUT_EXLCUDE_AAD_FIELDS = new Set([
'random',
'round_robin',
'hash',
+ 'topic',
'topics',
'headers',
'timeout',
diff --git a/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.test.ts b/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.test.ts
index 53d181a0ce8c6..a5cba9f9cab3e 100644
--- a/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.test.ts
+++ b/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.test.ts
@@ -821,6 +821,69 @@ ssl.test: 123
}
`);
});
+
+ it('should work with kafka output', () => {
+ const policyOutput = transformOutputToFullPolicyOutput({
+ id: 'id123',
+ hosts: ['test:9999'],
+ topics: [
+ {
+ topic: 'test',
+ },
+ // Deprecated conditionnal topic
+ {
+ topic: 'deprecated',
+ when: { condition: 'test:100', type: 'equals' },
+ },
+ ],
+ is_default: false,
+ is_default_monitoring: false,
+ name: 'test output',
+ type: 'kafka',
+ config_yaml: '',
+ client_id: 'Elastic',
+ version: '1.0.0',
+ compression: 'none',
+ auth_type: 'none',
+ connection_type: 'plaintext',
+ partition: 'random',
+ random: {
+ group_events: 1,
+ },
+ headers: [
+ {
+ key: '',
+ value: '',
+ },
+ ],
+ timeout: 30,
+ broker_timeout: 30,
+ required_acks: 1,
+ });
+
+ expect(policyOutput).toMatchInlineSnapshot(`
+ Object {
+ "broker_timeout": 30,
+ "client_id": "Elastic",
+ "compression": "none",
+ "headers": Array [],
+ "hosts": Array [
+ "test:9999",
+ ],
+ "key": undefined,
+ "partition": Object {
+ "random": Object {
+ "group_events": 1,
+ },
+ },
+ "required_acks": 1,
+ "timeout": 30,
+ "topic": "test",
+ "type": "kafka",
+ "version": "1.0.0",
+ }
+ `);
+ });
});
describe('generateFleetConfig', () => {
diff --git a/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.ts b/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.ts
index c1dde1443e5a4..293090e9813fc 100644
--- a/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.ts
+++ b/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.ts
@@ -354,6 +354,7 @@ export function transformOutputToFullPolicyOutput(
random,
round_robin,
hash,
+ topic,
topics,
headers,
timeout,
@@ -361,6 +362,8 @@ export function transformOutputToFullPolicyOutput(
required_acks,
} = output;
+ const kafkaTopic = topic ? topic : topics?.filter((t) => !t.when)?.[0]?.topic;
+
const transformPartition = () => {
if (!partition) return {};
switch (partition) {
@@ -397,26 +400,7 @@ export function transformOutputToFullPolicyOutput(
...(password ? { password } : {}),
...(sasl ? { sasl } : {}),
partition: transformPartition(),
- topics: (topics ?? []).map((topic) => {
- const { topic: topicName, ...rest } = topic;
- const whenKeys = Object.keys(rest);
-
- if (whenKeys.length === 0) {
- return { topic: topicName };
- }
- if (rest.when && rest.when.condition) {
- const [keyName, value] = rest.when.condition.split(':');
-
- return {
- topic: topicName,
- when: {
- [rest.when.type as string]: {
- [keyName.replace(/\s/g, '')]: value,
- },
- },
- };
- }
- }),
+ topic: kafkaTopic,
headers: (headers ?? []).filter((item) => item.key !== '' || item.value !== ''),
timeout,
broker_timeout,
diff --git a/x-pack/plugins/fleet/server/services/elastic_agent_manifest.ts b/x-pack/plugins/fleet/server/services/elastic_agent_manifest.ts
index f60690493637e..829b72070cf89 100644
--- a/x-pack/plugins/fleet/server/services/elastic_agent_manifest.ts
+++ b/x-pack/plugins/fleet/server/services/elastic_agent_manifest.ts
@@ -42,7 +42,7 @@ spec:
# - -c
# - >-
# mkdir -p /etc/elastic-agent/inputs.d &&
- # wget -O - https://github.com/elastic/elastic-agent/archive/8.13.tar.gz | tar xz -C /etc/elastic-agent/inputs.d --strip=5 "elastic-agent-8.13/deploy/kubernetes/elastic-agent/templates.d"
+ # wget -O - https://github.com/elastic/elastic-agent/archive/8.14.tar.gz | tar xz -C /etc/elastic-agent/inputs.d --strip=5 "elastic-agent-8.14/deploy/kubernetes/elastic-agent/templates.d"
# volumeMounts:
# - name: external-inputs
# mountPath: /etc/elastic-agent/inputs.d
diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts
index a343cf1ebfbb7..84ea5fae04874 100644
--- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts
+++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts
@@ -457,7 +457,6 @@ const installTransformsAssets = async (
})
: // No need to generate api key/secondary auth if all transforms are run as kibana_system user
undefined;
-
// delete all previous transform
await Promise.all([
deleteTransforms(
@@ -772,7 +771,9 @@ async function handleTransformInstall({
throw err;
}
}
- } else {
+ }
+
+ if (startTransform === false || transform?.content?.settings?.unattended === true) {
// if transform was not set to start automatically in yml config,
// we need to check using _stats if the transform had insufficient permissions
try {
@@ -784,7 +785,11 @@ async function handleTransformInstall({
),
{ logger, additionalResponseStatuses: [400] }
);
- if (Array.isArray(transformStats.transforms) && transformStats.transforms.length === 1) {
+ if (
+ transformStats &&
+ Array.isArray(transformStats.transforms) &&
+ transformStats.transforms.length === 1
+ ) {
const transformHealth = transformStats.transforms[0].health;
if (
transformHealth &&
diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/reauthorize.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/reauthorize.ts
index 783d498d6254d..f0b84ebac1f29 100644
--- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/reauthorize.ts
+++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/reauthorize.ts
@@ -10,6 +10,8 @@ import type { Logger } from '@kbn/logging';
import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server';
import { sortBy, uniqBy } from 'lodash';
+import { isPopulatedObject } from '@kbn/ml-is-populated-object';
+import type { ErrorResponseBase } from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
import type { SecondaryAuthorizationHeader } from '../../../../../common/types/models/transform_api_key';
import { updateEsAssetReferences } from '../../packages/es_assets_reference';
@@ -30,6 +32,9 @@ interface FleetTransformMetadata {
transformId: string;
}
+const isErrorResponse = (arg: unknown): arg is ErrorResponseBase =>
+ isPopulatedObject(arg, ['error']);
+
async function reauthorizeAndStartTransform({
esClient,
logger,
@@ -68,6 +73,19 @@ async function reauthorizeAndStartTransform({
() => esClient.transform.startTransform({ transform_id: transformId }, { ignore: [409] }),
{ logger, additionalResponseStatuses: [400] }
);
+
+ // Transform can already be started even without sufficient permission if 'unattended: true'
+ // So we are just catching that special case to showcase in the UI
+ // If unattended, calling _start will return a successful response, but with the error message in the body
+ if (
+ isErrorResponse(startedTransform) &&
+ startedTransform.status === 409 &&
+ Array.isArray(startedTransform.error?.root_cause) &&
+ startedTransform.error.root_cause[0]?.reason?.includes('already started')
+ ) {
+ return { transformId, success: true, error: null };
+ }
+
logger.debug(`Started transform: ${transformId}`);
return { transformId, success: startedTransform.acknowledged, error: null };
} catch (err) {
diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get_bulk_assets.ts b/x-pack/plugins/fleet/server/services/epm/packages/get_bulk_assets.ts
index ebeaed684c3a0..8e66dc904dbf2 100644
--- a/x-pack/plugins/fleet/server/services/epm/packages/get_bulk_assets.ts
+++ b/x-pack/plugins/fleet/server/services/epm/packages/get_bulk_assets.ts
@@ -37,8 +37,8 @@ export async function getBulkAssets(
type: obj.type as unknown as ElasticsearchAssetType | KibanaSavedObjectType,
updatedAt: obj.updated_at,
attributes: {
- title: obj.attributes.title,
- description: obj.attributes.description,
+ title: obj.attributes?.title,
+ description: obj.attributes?.description,
},
};
});
diff --git a/x-pack/plugins/fleet/server/services/epm/packages/remove.ts b/x-pack/plugins/fleet/server/services/epm/packages/remove.ts
index ba9bace6a0dee..436c2efaa2275 100644
--- a/x-pack/plugins/fleet/server/services/epm/packages/remove.ts
+++ b/x-pack/plugins/fleet/server/services/epm/packages/remove.ts
@@ -190,24 +190,35 @@ async function deleteAssets(
// must delete index templates first, or component templates which reference them cannot be deleted
// must delete ingestPipelines first, or ml models referenced in them cannot be deleted.
// separate the assets into Index Templates and other assets.
- type Tuple = [EsAssetReference[], EsAssetReference[], EsAssetReference[]];
- const [indexTemplatesAndPipelines, indexAssets, otherAssets] = installedEs.reduce(
- ([indexTemplateAndPipelineTypes, indexAssetTypes, otherAssetTypes], asset) => {
- if (
- asset.type === ElasticsearchAssetType.indexTemplate ||
- asset.type === ElasticsearchAssetType.ingestPipeline
- ) {
- indexTemplateAndPipelineTypes.push(asset);
- } else if (asset.type === ElasticsearchAssetType.index) {
- indexAssetTypes.push(asset);
- } else {
- otherAssetTypes.push(asset);
- }
-
- return [indexTemplateAndPipelineTypes, indexAssetTypes, otherAssetTypes];
- },
- [[], [], []]
- );
+ type Tuple = [EsAssetReference[], EsAssetReference[], EsAssetReference[], EsAssetReference[]];
+ const [indexTemplatesAndPipelines, indexAssets, transformAssets, otherAssets] =
+ installedEs.reduce(
+ (
+ [indexTemplateAndPipelineTypes, indexAssetTypes, transformAssetTypes, otherAssetTypes],
+ asset
+ ) => {
+ if (
+ asset.type === ElasticsearchAssetType.indexTemplate ||
+ asset.type === ElasticsearchAssetType.ingestPipeline
+ ) {
+ indexTemplateAndPipelineTypes.push(asset);
+ } else if (asset.type === ElasticsearchAssetType.index) {
+ indexAssetTypes.push(asset);
+ } else if (asset.type === ElasticsearchAssetType.transform) {
+ transformAssetTypes.push(asset);
+ } else {
+ otherAssetTypes.push(asset);
+ }
+
+ return [
+ indexTemplateAndPipelineTypes,
+ indexAssetTypes,
+ transformAssetTypes,
+ otherAssetTypes,
+ ];
+ },
+ [[], [], [], []]
+ );
try {
// must first unset any default pipeline associated with any existing indices
@@ -215,7 +226,12 @@ async function deleteAssets(
await Promise.all(
indexAssets.map((asset) => updateIndexSettings(esClient, asset.id, { default_pipeline: '' }))
);
- // must delete index templates and pipelines first
+
+ // in case transform's destination index contains any pipline,
+ // we should delete the transforms first
+ await Promise.all(deleteESAssets(transformAssets, esClient));
+
+ // then delete index templates and pipelines
await Promise.all(deleteESAssets(indexTemplatesAndPipelines, esClient));
// then the other asset types
await Promise.all([
diff --git a/x-pack/plugins/fleet/server/services/output.test.ts b/x-pack/plugins/fleet/server/services/output.test.ts
index b22e001739e7c..cddd143b9b9e4 100644
--- a/x-pack/plugins/fleet/server/services/output.test.ts
+++ b/x-pack/plugins/fleet/server/services/output.test.ts
@@ -1133,6 +1133,7 @@ describe('Output Service', () => {
sasl: null,
ssl: null,
timeout: null,
+ topic: null,
topics: null,
headers: null,
username: null,
@@ -1251,6 +1252,7 @@ describe('Output Service', () => {
round_robin: null,
sasl: null,
timeout: null,
+ topic: null,
topics: null,
headers: null,
username: null,
diff --git a/x-pack/plugins/fleet/server/services/output.ts b/x-pack/plugins/fleet/server/services/output.ts
index 4851bc6ecab3a..348d16c138bac 100644
--- a/x-pack/plugins/fleet/server/services/output.ts
+++ b/x-pack/plugins/fleet/server/services/output.ts
@@ -833,6 +833,7 @@ class OutputService {
target.round_robin = null;
target.hash = null;
target.topics = null;
+ target.topic = null;
target.headers = null;
target.timeout = null;
target.broker_timeout = null;
diff --git a/x-pack/plugins/fleet/server/services/preconfiguration/outputs.ts b/x-pack/plugins/fleet/server/services/preconfiguration/outputs.ts
index 4ee724f1a80b2..a6e76fead7797 100644
--- a/x-pack/plugins/fleet/server/services/preconfiguration/outputs.ts
+++ b/x-pack/plugins/fleet/server/services/preconfiguration/outputs.ts
@@ -324,6 +324,7 @@ async function isPreconfiguredOutputDifferentFromCurrent(
isDifferent(existingOutput.random, preconfiguredOutput.random) ||
isDifferent(existingOutput.round_robin, preconfiguredOutput.round_robin) ||
isDifferent(existingOutput.hash, preconfiguredOutput.hash) ||
+ isDifferent(existingOutput.topic, preconfiguredOutput.topic) ||
isDifferent(existingOutput.topics, preconfiguredOutput.topics) ||
isDifferent(existingOutput.headers, preconfiguredOutput.headers) ||
isDifferent(existingOutput.timeout, preconfiguredOutput.timeout) ||
diff --git a/x-pack/plugins/fleet/server/types/models/output.ts b/x-pack/plugins/fleet/server/types/models/output.ts
index 765018f3ac88f..774d070931b5b 100644
--- a/x-pack/plugins/fleet/server/types/models/output.ts
+++ b/x-pack/plugins/fleet/server/types/models/output.ts
@@ -295,7 +295,8 @@ export const KafkaSchema = {
hash: schema.maybe(
schema.object({ hash: schema.maybe(schema.string()), random: schema.maybe(schema.boolean()) })
),
- topics: KafkaTopicsSchema,
+ topic: schema.maybe(schema.string()),
+ topics: schema.maybe(KafkaTopicsSchema),
headers: schema.maybe(
schema.arrayOf(schema.object({ key: schema.string(), value: schema.string() }))
),
diff --git a/x-pack/plugins/fleet/server/types/so_attributes.ts b/x-pack/plugins/fleet/server/types/so_attributes.ts
index 05b2cc1b05bae..b05b95e0f4f70 100644
--- a/x-pack/plugins/fleet/server/types/so_attributes.ts
+++ b/x-pack/plugins/fleet/server/types/so_attributes.ts
@@ -197,6 +197,7 @@ export interface OutputSoKafkaAttributes extends OutputSoBaseAttributes {
hash?: string;
random?: boolean;
};
+ topic?: string;
topics?: Array<{
topic: string;
when?: {
diff --git a/x-pack/plugins/infra/kibana.jsonc b/x-pack/plugins/infra/kibana.jsonc
index 8f59853b97101..5faf928f7d959 100644
--- a/x-pack/plugins/infra/kibana.jsonc
+++ b/x-pack/plugins/infra/kibana.jsonc
@@ -36,7 +36,7 @@
"visTypeTimeseries",
"apmDataAccess"
],
- "optionalPlugins": ["spaces", "ml", "home", "embeddable", "osquery", "cloud", "profilingDataAccess"],
+ "optionalPlugins": ["spaces", "ml", "home", "embeddable", "osquery", "cloud", "profilingDataAccess", "licenseManagement"],
"requiredBundles": [
"unifiedSearch",
"observability",
diff --git a/x-pack/plugins/infra/public/components/asset_details/hooks/use_metadata.ts b/x-pack/plugins/infra/public/components/asset_details/hooks/use_metadata.ts
index 0bfb9a0900c42..04492c3107956 100644
--- a/x-pack/plugins/infra/public/components/asset_details/hooks/use_metadata.ts
+++ b/x-pack/plugins/infra/public/components/asset_details/hooks/use_metadata.ts
@@ -10,7 +10,7 @@ import { fold } from 'fp-ts/lib/Either';
import { identity } from 'fp-ts/lib/function';
import { pipe } from 'fp-ts/lib/pipeable';
import type { InventoryItemType, InventoryMetric } from '@kbn/metrics-data-access-plugin/common';
-import { Subject } from 'rxjs';
+import { BehaviorSubject } from 'rxjs';
import { useHTTPRequest } from '../../../hooks/use_http_request';
import { type InfraMetadata, InfraMetadataRT } from '../../../../common/http_api/metadata_api';
import { throwErrors, createPlainError } from '../../../../common/runtime_types';
@@ -25,7 +25,7 @@ interface UseMetadataProps {
from: number;
to: number;
};
- request$?: Subject<() => Promise>;
+ request$?: BehaviorSubject<(() => Promise) | undefined>;
}
export function useMetadata({
assetId,
diff --git a/x-pack/plugins/infra/public/components/asset_details/hooks/use_process_list.ts b/x-pack/plugins/infra/public/components/asset_details/hooks/use_process_list.ts
index 19b8b6957f08d..5ec0d38739ba4 100644
--- a/x-pack/plugins/infra/public/components/asset_details/hooks/use_process_list.ts
+++ b/x-pack/plugins/infra/public/components/asset_details/hooks/use_process_list.ts
@@ -10,7 +10,7 @@ import { fold } from 'fp-ts/lib/Either';
import { identity } from 'fp-ts/lib/function';
import { pipe } from 'fp-ts/lib/pipeable';
import { useEffect } from 'react';
-import { Subject } from 'rxjs';
+import { BehaviorSubject } from 'rxjs';
import { ProcessListAPIResponse, ProcessListAPIResponseRT } from '../../../../common/http_api';
import { throwErrors, createPlainError } from '../../../../common/runtime_types';
import { useHTTPRequest } from '../../../hooks/use_http_request';
@@ -26,7 +26,7 @@ export function useProcessList(
to: number,
sortBy: SortBy,
searchFilter: object,
- request$?: Subject<() => Promise>
+ request$?: BehaviorSubject<(() => Promise) | undefined>
) {
const { createDerivedIndexPattern } = useSourceContext();
const indexPattern = createDerivedIndexPattern().title;
diff --git a/x-pack/plugins/infra/public/components/asset_details/hooks/use_process_list_row_chart.ts b/x-pack/plugins/infra/public/components/asset_details/hooks/use_process_list_row_chart.ts
index 0355803299f5c..c2c04b66c9d77 100644
--- a/x-pack/plugins/infra/public/components/asset_details/hooks/use_process_list_row_chart.ts
+++ b/x-pack/plugins/infra/public/components/asset_details/hooks/use_process_list_row_chart.ts
@@ -9,7 +9,7 @@ import { fold } from 'fp-ts/lib/Either';
import { identity } from 'fp-ts/lib/function';
import { pipe } from 'fp-ts/lib/pipeable';
import { useEffect, useState } from 'react';
-import { Subject } from 'rxjs';
+import { BehaviorSubject } from 'rxjs';
import {
ProcessListAPIChartResponse,
ProcessListAPIChartResponseRT,
@@ -20,7 +20,7 @@ import { useProcessListContext } from './use_process_list';
export function useProcessListRowChart(
command: string,
- request$?: Subject<() => Promise>
+ request$?: BehaviorSubject<(() => Promise) | undefined>
) {
const [inErrorState, setInErrorState] = useState(false);
const decodeResponse = (response: any) => {
diff --git a/x-pack/plugins/infra/public/components/asset_details/hooks/use_request_observable.ts b/x-pack/plugins/infra/public/components/asset_details/hooks/use_request_observable.ts
index 1bad016b56d7c..6643108f8a011 100644
--- a/x-pack/plugins/infra/public/components/asset_details/hooks/use_request_observable.ts
+++ b/x-pack/plugins/infra/public/components/asset_details/hooks/use_request_observable.ts
@@ -7,14 +7,17 @@
import { useEffect, useMemo } from 'react';
import { map, mergeMap, filter } from 'rxjs/operators';
-import { catchError, of, from, Subject, withLatestFrom } from 'rxjs';
+import { catchError, of, from, BehaviorSubject, withLatestFrom } from 'rxjs';
import { useLoadingStateContext } from './use_loading_state';
import { useDatePickerContext } from './use_date_picker';
export const useRequestObservable = () => {
const { requestState$, isAutoRefreshRequestPending$ } = useLoadingStateContext();
const { autoRefreshConfig$ } = useDatePickerContext();
- const request$ = useMemo(() => new Subject<() => Promise>(), []);
+ const request$ = useMemo(
+ () => new BehaviorSubject<(() => Promise) | undefined>(undefined),
+ []
+ );
useEffect(() => {
// Subscribe to updates in the request$
diff --git a/x-pack/plugins/infra/public/components/subscription_splash_content.tsx b/x-pack/plugins/infra/public/components/subscription_splash_content.tsx
index 593e5e45cb33c..d1a78c3aeb927 100644
--- a/x-pack/plugins/infra/public/components/subscription_splash_content.tsx
+++ b/x-pack/plugins/infra/public/components/subscription_splash_content.tsx
@@ -9,12 +9,13 @@ import React, { useEffect } from 'react';
import { i18n } from '@kbn/i18n';
import { EuiText, EuiButton, EuiEmptyPrompt } from '@elastic/eui';
import { FormattedMessage } from '@kbn/i18n-react';
-import { useKibana } from '@kbn/kibana-react-plugin/public';
-import { HttpStart } from '@kbn/core/public';
import type { LazyObservabilityPageTemplateProps } from '@kbn/observability-shared-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
import { useTrialStatus } from '../hooks/use_trial_status';
import { LoadingPrompt } from './loading_page';
import { PageTemplate } from './page_template';
+import { useLicenseUrl } from '../hooks/use_license';
+import { useKibanaContextForPlugin } from '../hooks/use_kibana';
const loadingMessage = i18n.translate('xpack.infra.ml.splash.loadingMessage', {
defaultMessage: 'Checking license...',
@@ -23,16 +24,8 @@ const loadingMessage = i18n.translate('xpack.infra.ml.splash.loadingMessage', {
export const SubscriptionSplashPage: React.FC = (
templateProps
) => {
- return (
-
-
-
- );
-};
-
-export const SubscriptionSplashPrompt: React.FC = () => {
- const { services } = useKibana<{ http: HttpStart }>();
const { loadState, isTrialAvailable, checkTrialAvailability } = useTrialStatus();
+ const manageLicenseURL = useLicenseUrl();
useEffect(() => {
checkTrialAvailability();
@@ -68,7 +61,7 @@ export const SubscriptionSplashPrompt: React.FC = () => {
data-test-subj="infraSubscriptionSplashPromptStartTrialButton"
fullWidth={false}
fill
- href={services.http.basePath.prepend('/app/management/stack/license_management')}
+ href={manageLicenseURL}
>
@@ -103,16 +96,59 @@ export const SubscriptionSplashPrompt: React.FC = () => {
);
}
+ return (
+
+ {title}}
+ body={
+
+ {description}
+
+ }
+ actions={cta}
+ />
+
+ );
+};
+
+export const SubscriptionSplashPrompt: React.FC = () => {
+ const manageLicenseURL = useLicenseUrl();
+ const { services } = useKibanaContextForPlugin();
+
return (
{title}}
+ iconType="logoObservability"
+ iconColor="warning"
+ title={
+
+ {i18n.translate('xpack.infra.ml.splash.trial.title', {
+ defaultMessage:
+ 'Discover and resolve infrastructure issues faster with anomaly detection',
+ })}
+
+ }
body={
-
- {description}
-
+
+ {i18n.translate('xpack.infra.ml.splash.trial.description', {
+ defaultMessage:
+ 'Uncover infrastructure anomalies to preempt issues and resolve them quicker with the aid of machine learning.',
+ })}
+
}
- actions={cta}
+ actions={[
+
+
+ {i18n.translate('xpack.infra.ml.splash.startTrialCta', {
+ defaultMessage: 'Start trial',
+ })}
+
+ ,
+ ]}
/>
);
};
diff --git a/x-pack/plugins/infra/public/hooks/use_license.ts b/x-pack/plugins/infra/public/hooks/use_license.ts
index abaf9d8ea5637..5d074e0d052ed 100644
--- a/x-pack/plugins/infra/public/hooks/use_license.ts
+++ b/x-pack/plugins/infra/public/hooks/use_license.ts
@@ -5,6 +5,7 @@
* 2.0.
*/
+import url from 'url';
import { useCallback } from 'react';
import { Observable } from 'rxjs';
import useObservable from 'react-use/lib/useObservable';
@@ -32,3 +33,16 @@ export const useLicense = (): UseLicenseReturnValue => {
),
};
};
+
+export const useLicenseUrl = () => {
+ const { licenseManagement, http } = useKibanaContextForPlugin().services;
+ const licensePageUrl = url.format({
+ pathname: http.basePath.prepend('/app/management/stack/license_management'),
+ });
+
+ return (
+ licenseManagement?.locator?.useUrl({
+ page: 'dashboard',
+ }) || licensePageUrl
+ );
+};
diff --git a/x-pack/plugins/infra/public/pages/logs/page_content.tsx b/x-pack/plugins/infra/public/pages/logs/page_content.tsx
index 39868c74797d4..d2c8309606823 100644
--- a/x-pack/plugins/infra/public/pages/logs/page_content.tsx
+++ b/x-pack/plugins/infra/public/pages/logs/page_content.tsx
@@ -5,7 +5,7 @@
* 2.0.
*/
-import { EuiHeaderLink, EuiHeaderLinks } from '@elastic/eui';
+import { EuiFlexGroup, EuiFlexItem, EuiHeaderLink, EuiHeaderLinks } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import React, { useContext } from 'react';
import { Routes, Route } from '@kbn/shared-ux-router';
@@ -74,22 +74,28 @@ export const LogsPageContent: React.FunctionComponent = () => {
{setHeaderActionMenu && theme$ && (
-
-
- {settingsTabTitle}
-
-
-
- {ADD_DATA_LABEL}
-
+
+
+
+
+ {settingsTabTitle}
+
+
+
+ {ADD_DATA_LABEL}
+
+
+
{ObservabilityAIAssistantActionMenuItem ? (
-
+
+
+
) : null}
-
+
)}
diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/kpi.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/kpi.tsx
index a88a3ccdcf4ab..89fb8d4f010db 100644
--- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/kpi.tsx
+++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/kpi.tsx
@@ -25,7 +25,7 @@ export const Kpi = ({ id, height, ...chartProps }: LensConfig & { height: number
const loading = hostsLoading || hostCountLoading;
const filters = shouldUseSearchCriteria
- ? searchCriteria.filters
+ ? [...searchCriteria.filters, ...(searchCriteria.panelFilters ?? [])]
: [
buildCombinedHostsFilter({
field: 'host.name',
diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/chart.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/chart.tsx
index a90347c3be697..88846924c15e2 100644
--- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/chart.tsx
+++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/chart.tsx
@@ -38,7 +38,7 @@ export const Chart = ({ id, ...chartProps }: ChartProps) => {
const filters = useMemo(() => {
return shouldUseSearchCriteria
- ? searchCriteria.filters
+ ? [...searchCriteria.filters, ...(searchCriteria.panelFilters ?? [])]
: [
buildCombinedHostsFilter({
field: 'host.name',
@@ -46,7 +46,13 @@ export const Chart = ({ id, ...chartProps }: ChartProps) => {
dataView,
}),
];
- }, [shouldUseSearchCriteria, searchCriteria.filters, currentPage, dataView]);
+ }, [
+ shouldUseSearchCriteria,
+ searchCriteria.filters,
+ searchCriteria.panelFilters,
+ currentPage,
+ dataView,
+ ]);
return (
{
/>
{setHeaderActionMenu && theme$ && (
-
-
- {settingsTabTitle}
-
-
- {config.featureFlags.alertsAndRulesDropdownEnabled && (
-
- )}
-
- {ADD_DATA_LABEL}
-
+
+
+
+
+ {settingsTabTitle}
+
+
+ {config.featureFlags.alertsAndRulesDropdownEnabled && (
+
+ )}
+
+ {ADD_DATA_LABEL}
+
+
+
{ObservabilityAIAssistantActionMenuItem ? (
-
+
+
+
) : null}
-
+
)}
diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/anomalies_table/anomalies_table.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/anomalies_table/anomalies_table.tsx
index 5a96642ce22f9..288f05496dd4e 100644
--- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/anomalies_table/anomalies_table.tsx
+++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/anomalies_table/anomalies_table.tsx
@@ -30,7 +30,7 @@ import { useLinkProps, useUiTracker } from '@kbn/observability-shared-plugin/pub
import type { TimeRange } from '@kbn/es-query';
import { css } from '@emotion/react';
import type { SnapshotMetricType } from '@kbn/metrics-data-access-plugin/common';
-import { Subject } from 'rxjs';
+import { BehaviorSubject } from 'rxjs';
import { datemathToEpochMillis } from '../../../../../../../utils/datemath';
import { useSorting } from '../../../../../../../hooks/use_sorting';
import { useMetricsK8sAnomaliesResults } from '../../../../hooks/use_metrics_k8s_anomalies';
@@ -199,7 +199,7 @@ interface Props {
// In case the date picker is managed outside this component
hideDatePicker?: boolean;
// subject to watch the completition of the request
- request$?: Subject<() => Promise>;
+ request$?: BehaviorSubject<(() => Promise) | undefined>;
}
const DEFAULT_DATE_RANGE: TimeRange = {
@@ -291,7 +291,7 @@ export const AnomaliesTable = ({
changeSortOptions: hostChangeSort,
fetchNextPage: hostFetchNextPage,
fetchPreviousPage: hostFetchPrevPage,
- isLoadingMetricsHostsAnomalies: hostLoading,
+ isPendingMetricsHostsAnomalies: hostLoading,
} = useMetricsHostsAnomaliesResults(anomalyParams);
const {
metricsK8sAnomalies,
@@ -300,7 +300,7 @@ export const AnomaliesTable = ({
changeSortOptions: k8sChangeSort,
fetchNextPage: k8sFetchNextPage,
fetchPreviousPage: k8sPreviousPage,
- isLoadingMetricsK8sAnomalies: k8sLoading,
+ isPendingMetricsK8sAnomalies: k8sLoading,
} = useMetricsK8sAnomaliesResults(anomalyParams);
const page = useMemo(
() => (jobType === 'hosts' ? hostPage : k8sPage),
diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/flyout_home.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/flyout_home.tsx
index f5e3dc571bb6b..600291df4d451 100644
--- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/flyout_home.tsx
+++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/ml/anomaly_detection/flyout_home.tsx
@@ -108,14 +108,18 @@ export const FlyoutHome = (props: Props) => {
setTab('jobs')}>
- Jobs
+ {i18n.translate('xpack.infra.ml.anomalyFlyout.jobsTabLabel', {
+ defaultMessage: 'Jobs',
+ })}
setTab('anomalies')}
data-test-subj="anomalyFlyoutAnomaliesTab"
>
- Anomalies
+ {i18n.translate('xpack.infra.ml.anomalyFlyout.anomaliesTabLabel', {
+ defaultMessage: 'Anomalies',
+ })}
@@ -157,7 +161,11 @@ export const FlyoutHome = (props: Props) => {
>
)}
- Create ML Jobs
+
+ {i18n.translate('xpack.infra.ml.anomalyFlyout.createMLJobsLabel', {
+ defaultMessage: 'Create ML Jobs',
+ })}
+
{
const { sourceId } = useSourceContext();
- const { metric, groupBy, nodeType, accountId, region, view } = useWaffleOptionsContext();
+ const { metric, groupBy, nodeType, accountId, region } = useWaffleOptionsContext();
const { currentTime } = useWaffleTimeContext();
const { filterQueryAsJson } = useWaffleFiltersContext();
const {
@@ -44,7 +44,6 @@ export const SnapshotContainer = ({ render }: Props) => {
accountId,
region,
sendRequestImmediately: false,
- includeTimeseries: view === 'table',
},
{
abortable: true,
diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.test.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.test.tsx
index f023cc1c5760c..67654803ef844 100644
--- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.test.tsx
+++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.test.tsx
@@ -107,7 +107,6 @@ describe('ConditionalToolTip', () => {
filterQuery: expectedQuery,
metrics: expectedMetrics,
groupBy: [],
- includeTimeseries: false,
nodeType: 'host',
sourceId: 'default',
currentTime,
diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.tsx
index 7bbb696103cd6..4b3b8bfb05dc0 100644
--- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.tsx
+++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.tsx
@@ -62,7 +62,6 @@ export const ConditionalToolTip = ({ node, nodeType, currentTime }: Props) => {
currentTime: requestCurrentTime.current,
accountId: '',
region: '',
- includeTimeseries: false,
},
{
abortable: true,
diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_hosts_anomalies.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_hosts_anomalies.ts
index 59f1c22890e6d..466d075a4ef20 100644
--- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_hosts_anomalies.ts
+++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_hosts_anomalies.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import { useMemo, useState, useCallback, useEffect, useReducer, useRef } from 'react';
+import { useState, useCallback, useEffect, useReducer, useRef } from 'react';
import { HttpHandler } from '@kbn/core/public';
import {
INFA_ML_GET_METRICS_HOSTS_ANOMALIES_PATH,
@@ -309,20 +309,17 @@ export const useMetricsHostsAnomaliesResults = ({
}
}, [dispatch, reducerState]);
- const isLoadingMetricsHostsAnomalies = useMemo(
- () => getMetricsHostsAnomaliesRequest.state === 'pending',
- [getMetricsHostsAnomaliesRequest.state]
- );
+ const isPendingMetricsHostsAnomalies =
+ getMetricsHostsAnomaliesRequest.state === 'pending' ||
+ getMetricsHostsAnomaliesRequest.state === 'uninitialized';
- const hasFailedLoadingMetricsHostsAnomalies = useMemo(
- () => getMetricsHostsAnomaliesRequest.state === 'rejected',
- [getMetricsHostsAnomaliesRequest.state]
- );
+ const hasFailedLoadingMetricsHostsAnomalies =
+ getMetricsHostsAnomaliesRequest.state === 'rejected';
return {
metricsHostsAnomalies,
getMetricsHostsAnomalies,
- isLoadingMetricsHostsAnomalies,
+ isPendingMetricsHostsAnomalies,
hasFailedLoadingMetricsHostsAnomalies,
changeSortOptions,
sortOptions: reducerState.sortOptions,
diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_k8s_anomalies.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_k8s_anomalies.ts
index cb75bbea23421..a1cf5ad304956 100644
--- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_k8s_anomalies.ts
+++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_metrics_k8s_anomalies.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import { useMemo, useState, useCallback, useEffect, useReducer, useRef } from 'react';
+import { useState, useCallback, useEffect, useReducer, useRef } from 'react';
import { HttpHandler } from '@kbn/core/public';
import {
Sort,
@@ -289,20 +289,16 @@ export const useMetricsK8sAnomaliesResults = ({
}
}, [dispatch, reducerState]);
- const isLoadingMetricsK8sAnomalies = useMemo(
- () => getMetricsK8sAnomaliesRequest.state === 'pending',
- [getMetricsK8sAnomaliesRequest.state]
- );
+ const isPendingMetricsK8sAnomalies =
+ getMetricsK8sAnomaliesRequest.state === 'pending' ||
+ getMetricsK8sAnomaliesRequest.state === 'uninitialized';
- const hasFailedLoadingMetricsK8sAnomalies = useMemo(
- () => getMetricsK8sAnomaliesRequest.state === 'rejected',
- [getMetricsK8sAnomaliesRequest.state]
- );
+ const hasFailedLoadingMetricsK8sAnomalies = getMetricsK8sAnomaliesRequest.state === 'rejected';
return {
metricsK8sAnomalies,
getMetricsK8sAnomalies,
- isLoadingMetricsK8sAnomalies,
+ isPendingMetricsK8sAnomalies,
hasFailedLoadingMetricsK8sAnomalies,
changeSortOptions,
sortOptions: reducerState.sortOptions,
diff --git a/x-pack/plugins/infra/public/plugin.ts b/x-pack/plugins/infra/public/plugin.ts
index 384ffaa06c94a..b406f29fccd4d 100644
--- a/x-pack/plugins/infra/public/plugin.ts
+++ b/x-pack/plugins/infra/public/plugin.ts
@@ -314,11 +314,18 @@ export class Plugin implements InfraClientPluginClass {
const isCloudEnv = !!pluginsSetup.cloud?.isCloudEnabled;
const isServerlessEnv = pluginsSetup.cloud?.isServerlessEnabled || this.isServerlessEnv;
- return renderApp(coreStart, { ...plugins }, pluginStart, this.config, params, {
- kibanaVersion: this.kibanaVersion,
- isCloudEnv,
- isServerlessEnv,
- });
+ return renderApp(
+ coreStart,
+ { ...plugins, licenseManagement: pluginsSetup.licenseManagement },
+ pluginStart,
+ this.config,
+ params,
+ {
+ kibanaVersion: this.kibanaVersion,
+ isCloudEnv,
+ isServerlessEnv,
+ }
+ );
},
});
diff --git a/x-pack/plugins/infra/public/types.ts b/x-pack/plugins/infra/public/types.ts
index 2c9af5444bfef..fe125a278d8cf 100644
--- a/x-pack/plugins/infra/public/types.ts
+++ b/x-pack/plugins/infra/public/types.ts
@@ -46,6 +46,7 @@ import { FieldFormatsSetup, FieldFormatsStart } from '@kbn/field-formats-plugin/
import { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/public';
import { ObservabilityAIAssistantPluginStart } from '@kbn/observability-ai-assistant-plugin/public';
import type { CloudSetup } from '@kbn/cloud-plugin/public';
+import type { LicenseManagementUIPluginSetup } from '@kbn/license-management-plugin/public';
import type { UnwrapPromise } from '../common/utility_types';
import { InventoryViewsServiceStart } from './services/inventory_views';
import { MetricsExplorerViewsServiceStart } from './services/metrics_explorer_views';
@@ -79,6 +80,7 @@ export interface InfraClientSetupDeps {
fieldFormats: FieldFormatsSetup;
licensing: LicensingPluginSetup;
cloud?: CloudSetup;
+ licenseManagement?: LicenseManagementUIPluginSetup;
}
export interface InfraClientStartDeps {
@@ -105,6 +107,7 @@ export interface InfraClientStartDeps {
telemetry?: ITelemetryClient;
fieldFormats: FieldFormatsStart;
licensing: LicensingPluginStart;
+ licenseManagement?: LicenseManagementUIPluginSetup;
}
export type InfraClientCoreSetup = CoreSetup;
diff --git a/x-pack/plugins/kubernetes_security/common/translations.ts b/x-pack/plugins/kubernetes_security/common/translations.ts
index a2eb4c17a5984..7ccf59c9f3bb5 100644
--- a/x-pack/plugins/kubernetes_security/common/translations.ts
+++ b/x-pack/plugins/kubernetes_security/common/translations.ts
@@ -49,6 +49,12 @@ export const TREE_NAVIGATION_LOADING = i18n.translate(
defaultMessage: 'Loading',
}
);
+export const TREE_NAVIGATION_EMPTY = i18n.translate(
+ 'xpack.kubernetesSecurity.treeNavigation.empty',
+ {
+ defaultMessage: 'No data available',
+ }
+);
export const TREE_NAVIGATION_SHOW_MORE = (name: string) =>
i18n.translate('xpack.kubernetesSecurity.treeNavigation.loadMore', {
values: { name },
diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.test.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.test.tsx
index 125ff6702e2a8..7752ba8d96e51 100644
--- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.test.tsx
+++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.test.tsx
@@ -56,7 +56,6 @@ describe('DynamicTreeView component', () => {
},
},
]}
- aria-label="Logical Tree View"
onSelect={(selectionDepth, key, type) => {}}
{...props}
/>
diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx
index bfc6f1803c2a3..6527e290c5903 100644
--- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx
+++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx
@@ -5,9 +5,9 @@
* 2.0.
*/
-import React, { useEffect, useState, useRef, MouseEvent, KeyboardEvent, useMemo } from 'react';
+import React, { useEffect, useState, useRef, KeyboardEvent, useMemo } from 'react';
import {
- EuiIcon,
+ EuiTreeView,
EuiText,
EuiI18n,
EuiScreenReaderOnly,
@@ -15,9 +15,14 @@ import {
keys,
EuiLoadingSpinner,
EuiToolTip,
+ useEuiTheme,
} from '@elastic/eui';
+// @ts-expect-error style types not defined, but they exist
+import { euiTreeViewStyles } from '@elastic/eui/lib/components/tree_view/tree_view.styles';
+
import {
TREE_NAVIGATION_LOADING,
+ TREE_NAVIGATION_EMPTY,
TREE_NAVIGATION_SHOW_MORE,
} from '../../../../common/translations';
import { useFetchDynamicTreeView } from './hooks';
@@ -64,17 +69,17 @@ export const DynamicTreeView = ({
onSelect,
selected = '',
expanded = true,
- ...props
+ onKeyDown,
}: DynamicTreeViewProps) => {
const styles = useStyles(depth);
+ const euiStyles = euiTreeViewStyles(useEuiTheme());
+ const euiTreeViewCss = [euiStyles.euiTreeView, euiStyles.default];
const { indexPattern, setNoResults, setTreeNavSelection } = useTreeViewContext();
const { data, fetchNextPage, isFetchingNextPage, hasNextPage, isLoading } =
useFetchDynamicTreeView(query, tree[depth].key, indexPattern, expanded);
- const ariaLabel = props['aria-label'];
-
const onLoadMoreKeydown = (event: React.KeyboardEvent) => {
switch (event.key) {
case keys.ARROW_DOWN: {
@@ -135,17 +140,7 @@ export const DynamicTreeView = ({
}, [data?.pages]);
return (
-
- {isLoading && (
-
-
- {TREE_NAVIGATION_LOADING}
-
- )}
+
{depth === 0 && (
)}
+ {isLoading && (
+ }
+ label={TREE_NAVIGATION_LOADING}
+ />
+ )}
+ {!isLoading && !itemList.length && (
+
+ )}
{itemList.map((aggData) => {
const queryFilter = {
...query,
@@ -179,7 +188,6 @@ export const DynamicTreeView = ({
{({ isExpanded, onToggleExpand }) => (
- onLoadMoreKeydown(event)}
- onClick={onClickNextPageHandler}
- >
-
+ onLoadMoreKeydown(event)}
+ onClick={onClickNextPageHandler}
+ label={
+
{isFetchingNextPage
? TREE_NAVIGATION_LOADING
: TREE_NAVIGATION_SHOW_MORE(tree[depth].namePlural)}
-
- {isFetchingNextPage ? (
-
- ) : (
-
- )}
-
-
+
+ }
+ />
)}
@@ -232,10 +239,8 @@ const DynamicTreeViewItem = ({
selected,
expanded,
query,
- ...props
}: DynamicTreeViewItemProps) => {
const isLastNode = depth === tree.length - 1;
- const styles = useStyles(depth);
const buttonRef = useRef>({});
const handleSelect = () => {
@@ -254,17 +259,10 @@ const DynamicTreeViewItem = ({
};
const onButtonToggle = () => {
- if (!isLastNode && !isExpanded) {
- onToggleExpand();
- }
- handleSelect();
- };
-
- const onArrowToggle = (event: MouseEvent) => {
- disableEventDefaults(event);
if (!isLastNode) {
onToggleExpand();
}
+ handleSelect();
};
// Enable keyboard navigation
@@ -303,73 +301,44 @@ const DynamicTreeViewItem = ({
}
};
- const isSelected = useMemo(() => {
- return (
- selected ===
- Object.entries({
- ...selectionDepth,
- [tree[depth].type]: aggData.key,
- ...(tree[depth].type === 'clusterId' &&
- aggData.key_as_string && {
- clusterName: aggData.key_as_string,
- }),
- })
- .map(([k, v]) => `${k}.${v}`)
- .join()
- );
- }, [aggData.key, aggData.key_as_string, depth, selected, selectionDepth, tree]);
-
const clusterLevel = BREADCRUMBS_CLUSTER_TREE_VIEW_LEVELS[tree[depth].type];
return (
-
-
- onChildrenKeydown(event, aggData.key.toString())}
- >
- {!isLastNode && (
-
- )}
-
-
+ }
+ buttonRef={(el: HTMLButtonElement) => (buttonRef.current[aggData.key] = el)}
+ data-test-subj={expanded ? BUTTON_TEST_ID : ''}
+ >
+ {!isLastNode && (
+
+ onChildrenKeydown(event, aggData.key.toString())
+ }
+ />
+ )}
+
);
};
diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/styles.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/styles.ts
index 08d782e31e72e..fc2a9c2a42bea 100644
--- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/styles.ts
+++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/styles.ts
@@ -7,75 +7,64 @@
import { useMemo } from 'react';
import { CSSObject } from '@emotion/react';
-import { transparentize } from '@elastic/eui';
import { useEuiTheme } from '../../../hooks';
export const useStyles = (depth: number) => {
const { euiTheme } = useEuiTheme();
const cached = useMemo(() => {
- const { size, colors } = euiTheme;
+ const { size, colors, border } = euiTheme;
- const loadMoreButtonWrapper: CSSObject = {
+ const loadMoreButton: CSSObject = {
position: 'relative',
textAlign: 'center',
width: `calc(100% + ${depth * 24}px)`,
marginLeft: `-${depth * 24}px`,
- '&:after': {
+ '&::after': {
content: `''`,
position: 'absolute',
top: '50%',
width: '100%',
- border: `1px dashed ${colors.mediumShade}`,
+ border: `${border.width.thin} dashed ${colors.mediumShade}`,
left: 0,
},
+ '&:hover, &:focus': {
+ backgroundColor: 'transparent',
+ },
+ '.euiTreeView__nodeLabel': {
+ width: '100%',
+ },
};
- const loadMoreButton: CSSObject = {
+ const loadMoreBadge: CSSObject = {
position: 'relative',
cursor: 'pointer',
zIndex: 2,
+ '.euiBadge__content': {
+ gap: size.xs,
+ },
};
- const loadMoreText: CSSObject = {
- marginRight: size.s,
- };
- const loadMoreTextLeft: CSSObject = {
- marginLeft: size.s,
- };
- const leafNodeButton: CSSObject = {
- marginLeft: size.l,
- width: `calc(100% - ${size.l})`,
- paddingLeft: 0,
- };
- const labelIcon: CSSObject = {
- marginRight: size.s,
- marginLeft: size.s,
- };
-
- const treeViewWrapper = (expanded: boolean): CSSObject => ({
- display: !expanded ? 'none' : 'inherit',
- '.euiTreeView__node--selected > .euiTreeView__nodeInner': {
- backgroundColor: transparentize(colors.darkestShade, 0.1),
+ const nonInteractiveItem: CSSObject = {
+ pointerEvents: 'none',
+ '&:hover, &:focus': {
+ backgroundColor: 'transparent',
},
- '.euiTreeView__node--expanded': {
- maxHeight: '100%',
+ };
+ const euiTreeViewWrapper: CSSObject = {
+ ul: {
+ marginLeft: '0 !important',
+ fontSize: 'inherit',
},
- '.euiTreeView__nodeInner .euiToolTipAnchor': {
- maxWidth: '100%',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- whiteSpace: 'nowrap',
- wordWrap: 'normal',
+ // Override default EUI max-height - `DynamicTreeView` has its own scrolling container
+ '.euiTreeView__node': {
+ maxBlockSize: 'none',
},
- });
+ };
return {
loadMoreButton,
- loadMoreButtonWrapper,
- loadMoreText,
- loadMoreTextLeft,
- leafNodeButton,
- labelIcon,
- treeViewWrapper,
+ loadMoreBadge,
+ nonInteractiveItem,
+ euiTreeViewWrapper,
};
}, [euiTheme, depth]);
diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts
index dfc51b72516a3..835aa397ebadb 100644
--- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts
+++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts
@@ -5,6 +5,7 @@
* 2.0.
*/
+import { KeyboardEventHandler } from 'react';
import { QueryDslQueryContainerBool, KubernetesCollectionMap, DynamicTree } from '../../../types';
export type DynamicTreeViewProps = {
@@ -19,12 +20,14 @@ export type DynamicTreeViewProps = {
clusterName?: string
) => void;
hasSelection?: boolean;
- 'aria-label': string;
selected?: string;
expanded?: boolean;
+ onKeyDown?: KeyboardEventHandler | undefined;
};
-export type DynamicTreeViewItemProps = Required> & {
+export type DynamicTreeViewItemProps = Required<
+ Omit
+> & {
onToggleExpand: any;
aggData: any;
isExpanded: boolean;
diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx
index 213bbcfeccbfe..9060cb8e46b87 100644
--- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx
+++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx
@@ -66,10 +66,6 @@ export const TreeNav = () => {
[logicalTreeViewPrefix, treeNavTypePrefix]
);
- const selectedLabel = useMemo(() => {
- return options.find((opt) => opt.id === toggleIdSelected)!.label;
- }, [options, toggleIdSelected]);
-
const handleTreeViewSwitch = useCallback(
(id: string, value: TreeViewKind) => {
setToggleIdSelected(id);
@@ -124,7 +120,6 @@ export const TreeNav = () => {
{
const newSelectionDepth = {
diff --git a/x-pack/plugins/lens/public/embeddable/embeddable.tsx b/x-pack/plugins/lens/public/embeddable/embeddable.tsx
index 2afe4a767b922..6fe8508d8630f 100644
--- a/x-pack/plugins/lens/public/embeddable/embeddable.tsx
+++ b/x-pack/plugins/lens/public/embeddable/embeddable.tsx
@@ -1591,8 +1591,19 @@ export class Embeddable
return this.savedVis?.state.query;
}
- public getSavedVis(): Readonly {
- return this.savedVis;
+ public getSavedVis(): Readonly {
+ if (!this.savedVis) {
+ return;
+ }
+
+ // Why are 'type' and 'savedObjectId' keys being removed?
+ // Prior to removing them,
+ // this method returned 'Readonly' while consumers typed the results as 'LensSavedObjectAttributes'.
+ // Removing 'type' and 'savedObjectId' keys to align method results with consumer typing.
+ const savedVis = { ...this.savedVis };
+ delete savedVis.type;
+ delete savedVis.savedObjectId;
+ return savedVis;
}
destroy() {
diff --git a/x-pack/plugins/lens/public/embeddable/interfaces/has_lens_config.ts b/x-pack/plugins/lens/public/embeddable/interfaces/has_lens_config.ts
index 39bb91c5c8fe6..9e3f9c4b026e0 100644
--- a/x-pack/plugins/lens/public/embeddable/interfaces/has_lens_config.ts
+++ b/x-pack/plugins/lens/public/embeddable/interfaces/has_lens_config.ts
@@ -6,10 +6,10 @@
*/
import { type HasType, apiIsOfType } from '@kbn/presentation-publishing';
-import { Document } from '../../persistence';
+import { LensSavedObjectAttributes } from '../embeddable';
export type HasLensConfig = HasType<'lens'> & {
- getSavedVis: () => Readonly;
+ getSavedVis: () => Readonly;
};
export const apiHasLensConfig = (api: unknown): api is HasLensConfig => {
diff --git a/x-pack/plugins/lens/public/lens_suggestions_api.test.ts b/x-pack/plugins/lens/public/lens_suggestions_api.test.ts
index dc03340bd6698..0d8957e15d88a 100644
--- a/x-pack/plugins/lens/public/lens_suggestions_api.test.ts
+++ b/x-pack/plugins/lens/public/lens_suggestions_api.test.ts
@@ -8,7 +8,7 @@ import type { DataView } from '@kbn/data-views-plugin/public';
import type { DatatableColumn } from '@kbn/expressions-plugin/common';
import { createMockVisualization, DatasourceMock, createMockDatasource } from './mocks';
import { DatasourceSuggestion } from './types';
-import { suggestionsApi } from './lens_suggestions_api';
+import { suggestionsApi, ChartType } from './lens_suggestions_api';
const generateSuggestion = (state = {}, layerId: string = 'first'): DatasourceSuggestion => ({
state,
@@ -169,6 +169,143 @@ describe('suggestionsApi', () => {
expect(suggestions?.length).toEqual(1);
});
+ test('prioritizes the chart type of the user preference if any', async () => {
+ const dataView = { id: 'index1' } as unknown as DataView;
+ const visualizationMap = {
+ testVis: {
+ ...mockVis,
+ getSuggestions: () => [
+ {
+ score: 0.8,
+ title: 'Tag cloud',
+ state: {},
+ previewIcon: 'empty',
+ visualizationId: 'lnsTagcloud',
+ },
+ {
+ score: 0.8,
+ title: 'Test2',
+ state: {},
+ previewIcon: 'empty',
+ },
+ {
+ score: 0.8,
+ title: 'Test2',
+ state: {},
+ previewIcon: 'empty',
+ incomplete: true,
+ },
+ ],
+ },
+ };
+ datasourceMap.textBased.getDatasourceSuggestionsForVisualizeField.mockReturnValue([
+ generateSuggestion(),
+ ]);
+ const context = {
+ dataViewSpec: {
+ id: 'index1',
+ title: 'index1',
+ name: 'DataView',
+ },
+ fieldName: '',
+ textBasedColumns: textBasedQueryColumns,
+ query: {
+ sql: 'SELECT field1, field2 FROM "index1"',
+ },
+ };
+ const suggestions = suggestionsApi({
+ context,
+ dataView,
+ datasourceMap,
+ visualizationMap,
+ preferredChartType: ChartType.Tagcloud,
+ });
+ expect(suggestions?.length).toEqual(1);
+ expect(suggestions?.[0].title).toEqual('Tag cloud');
+ });
+
+ test('returns the suggestion as line if user asks for it ', async () => {
+ const dataView = { id: 'index1' } as unknown as DataView;
+ const visualizationMap = {
+ lnsXY: {
+ ...mockVis,
+ switchVisualizationType(seriesType: string, state: unknown) {
+ return {
+ ...(state as Record),
+ preferredSeriesType: seriesType,
+ };
+ },
+ getSuggestions: () => [
+ {
+ score: 0.8,
+ title: 'bar',
+ state: {
+ preferredSeriesType: 'bar_stacked',
+ },
+ previewIcon: 'empty',
+ visualizationId: 'lnsXY',
+ },
+ {
+ score: 0.8,
+ title: 'Test2',
+ state: {},
+ previewIcon: 'empty',
+ },
+ {
+ score: 0.8,
+ title: 'Test2',
+ state: {},
+ previewIcon: 'empty',
+ incomplete: true,
+ },
+ ],
+ },
+ };
+ datasourceMap.textBased.getDatasourceSuggestionsForVisualizeField.mockReturnValue([
+ generateSuggestion(),
+ ]);
+ const context = {
+ dataViewSpec: {
+ id: 'index1',
+ title: 'index1',
+ name: 'DataView',
+ },
+ fieldName: '',
+ textBasedColumns: textBasedQueryColumns,
+ query: {
+ sql: 'SELECT field1, field2 FROM "index1"',
+ },
+ };
+ const suggestions = suggestionsApi({
+ context,
+ dataView,
+ datasourceMap,
+ visualizationMap,
+ preferredChartType: ChartType.Line,
+ });
+ expect(suggestions?.length).toEqual(1);
+ expect(suggestions?.[0]).toMatchInlineSnapshot(
+ `
+ Object {
+ "changeType": "unchanged",
+ "columns": 0,
+ "datasourceId": "textBased",
+ "datasourceState": Object {},
+ "keptLayerIds": Array [
+ "first",
+ ],
+ "previewIcon": "empty",
+ "score": 0.8,
+ "title": "bar",
+ "visualizationId": "lnsXY",
+ "visualizationState": Object {
+ "preferredSeriesType": "line",
+ },
+ }
+ `
+ );
+ });
+
test('filters out the suggestion if exists on excludedVisualizations', async () => {
const dataView = { id: 'index1' } as unknown as DataView;
const visualizationMap = {
diff --git a/x-pack/plugins/lens/public/lens_suggestions_api.ts b/x-pack/plugins/lens/public/lens_suggestions_api.ts
index 2525f5a2c91c7..ffcf3b5a6d53d 100644
--- a/x-pack/plugins/lens/public/lens_suggestions_api.ts
+++ b/x-pack/plugins/lens/public/lens_suggestions_api.ts
@@ -10,12 +10,25 @@ import { getSuggestions } from './editor_frame_service/editor_frame/suggestion_h
import type { DatasourceMap, VisualizationMap, VisualizeEditorContext } from './types';
import type { DataViewsState } from './state_management';
-interface SuggestionsApi {
+export enum ChartType {
+ XY = 'XY',
+ Bar = 'Bar',
+ Line = 'Line',
+ Area = 'Area',
+ Donut = 'Donut',
+ Heatmap = 'Heat map',
+ Treemap = 'Treemap',
+ Tagcloud = 'Tag cloud',
+ Waffle = 'Waffle',
+}
+
+interface SuggestionsApiProps {
context: VisualizeFieldContext | VisualizeEditorContext;
dataView: DataView;
visualizationMap?: VisualizationMap;
datasourceMap?: DatasourceMap;
excludedVisualizations?: string[];
+ preferredChartType?: ChartType;
}
export const suggestionsApi = ({
@@ -24,7 +37,8 @@ export const suggestionsApi = ({
datasourceMap,
visualizationMap,
excludedVisualizations,
-}: SuggestionsApi) => {
+ preferredChartType,
+}: SuggestionsApiProps) => {
const initialContext = context;
if (!datasourceMap || !visualizationMap || !dataView.id) return undefined;
const datasourceStates = {
@@ -86,9 +100,37 @@ export const suggestionsApi = ({
dataViews,
}).filter((sug) => !sug.hide && sug.visualizationId !== 'lnsLegacyMetric');
const suggestionsList = [activeVisualization, ...newSuggestions];
+
+ // check if there is an XY chart suggested
+ // if user has requested for a line or area, we want to sligthly change the state
+ // to return line / area instead of a bar chart
+ const chartType = preferredChartType?.toLowerCase();
+ const XYSuggestion = suggestionsList.find((sug) => sug.visualizationId === 'lnsXY');
+ if (XYSuggestion && chartType && ['area', 'line'].includes(chartType)) {
+ const visualizationState = visualizationMap[
+ XYSuggestion.visualizationId
+ ]?.switchVisualizationType?.(chartType, XYSuggestion?.visualizationState);
+ return [
+ {
+ ...XYSuggestion,
+ visualizationState,
+ },
+ ];
+ }
+
+ // in case the user asks for another type (except from area, line) check if it exists
+ // in suggestions and return this instead
+ if (suggestionsList.length > 1 && preferredChartType) {
+ const suggestionFromModel = suggestionsList.find(
+ (s) => s.title.includes(preferredChartType) || s.visualizationId.includes(preferredChartType)
+ );
+ if (suggestionFromModel) {
+ return [suggestionFromModel];
+ }
+ }
+ // if there is no preference from the user, send everything
// until we separate the text based suggestions logic from the dataview one,
// we want to sort XY first
const sortXYFirst = suggestionsList.sort((a, b) => (a.visualizationId === 'lnsXY' ? -1 : 1));
-
return sortXYFirst;
};
diff --git a/x-pack/plugins/lens/public/plugin.ts b/x-pack/plugins/lens/public/plugin.ts
index 45e08ae07a68b..1c143ed1c6927 100644
--- a/x-pack/plugins/lens/public/plugin.ts
+++ b/x-pack/plugins/lens/public/plugin.ts
@@ -137,6 +137,7 @@ import {
} from '../common/content_management';
import type { EditLensConfigurationProps } from './app_plugin/shared/edit_on_the_fly/get_edit_lens_configuration';
import { savedObjectToEmbeddableAttributes } from './lens_attribute_service';
+import { ChartType } from './lens_suggestions_api';
export type { SaveProps } from './app_plugin';
@@ -279,7 +280,8 @@ export type EditLensConfigPanelComponent = React.ComponentType Suggestion[] | undefined;
export class LensPlugin {
@@ -704,13 +706,14 @@ export class LensPlugin {
return {
formula: createFormulaPublicApi(),
chartInfo: createChartInfoApi(startDependencies.dataViews, this.editorFrameService),
- suggestions: (context, dataView, excludedVisualizations) => {
+ suggestions: (context, dataView, excludedVisualizations, preferredChartType) => {
return suggestionsApi({
datasourceMap,
visualizationMap,
context,
dataView,
excludedVisualizations,
+ preferredChartType,
});
},
};
diff --git a/x-pack/plugins/ml/server/routes/job_service.ts b/x-pack/plugins/ml/server/routes/job_service.ts
index ef4ed3670ab66..04eb4c9c070c8 100644
--- a/x-pack/plugins/ml/server/routes/job_service.ts
+++ b/x-pack/plugins/ml/server/routes/job_service.ts
@@ -19,7 +19,6 @@ import {
forceStartDatafeedSchema,
jobIdsSchema,
optionalJobIdsSchema,
- jobsWithTimerangeSchema,
lookBackProgressSchema,
topCategoriesSchema,
updateGroupsSchema,
@@ -390,13 +389,9 @@ export function jobServiceRoutes({ router, routeGuard }: RouteInitialization) {
.addVersion(
{
version: '1',
- validate: {
- request: {
- body: jobsWithTimerangeSchema,
- },
- },
+ validate: false,
},
- routeGuard.fullLicenseAPIGuard(async ({ client, mlClient, response }) => {
+ routeGuard.fullLicenseAPIGuard(async ({ client, mlClient, request, response }) => {
try {
const { jobsWithTimerange } = jobServiceProvider(client, mlClient);
const resp = await jobsWithTimerange();
diff --git a/x-pack/plugins/ml/server/routes/schemas/job_service_schema.ts b/x-pack/plugins/ml/server/routes/schemas/job_service_schema.ts
index 008016a211630..2df7028093862 100644
--- a/x-pack/plugins/ml/server/routes/schemas/job_service_schema.ts
+++ b/x-pack/plugins/ml/server/routes/schemas/job_service_schema.ts
@@ -78,10 +78,6 @@ export const optionalJobIdsSchema = schema.object({
jobIds: schema.maybe(schema.arrayOf(schema.string())),
});
-export const jobsWithTimerangeSchema = schema.object({
- dateFormatTz: schema.maybe(schema.string()),
-});
-
export const lookBackProgressSchema = {
jobId: schema.string(),
start: schema.number(),
diff --git a/x-pack/plugins/observability/public/embeddable/slo/alerts/slo_selector.tsx b/x-pack/plugins/observability/public/embeddable/slo/alerts/slo_selector.tsx
index dd926cc9fc179..e3ef81786da55 100644
--- a/x-pack/plugins/observability/public/embeddable/slo/alerts/slo_selector.tsx
+++ b/x-pack/plugins/observability/public/embeddable/slo/alerts/slo_selector.tsx
@@ -36,9 +36,9 @@ export function SloSelector({ initialSlos, onSelected, hasError, singleSelection
mapSlosToOptions(initialSlos)
);
const [searchValue, setSearchValue] = useState('');
- const query = `${searchValue.replaceAll(' ', '*')}*`;
+ const query = `${searchValue}*`;
const { isLoading, data: sloList } = useFetchSloList({
- kqlQuery: `slo.name: ${query} or slo.instanceId: ${query}`,
+ kqlQuery: `slo.name: (${query}) or slo.instanceId.text: (${query})`,
perPage: 100,
});
diff --git a/x-pack/plugins/observability/public/pages/overview/components/header_menu/header_menu.tsx b/x-pack/plugins/observability/public/pages/overview/components/header_menu/header_menu.tsx
index 0dfaf3eeed997..a579eb3cd0eca 100644
--- a/x-pack/plugins/observability/public/pages/overview/components/header_menu/header_menu.tsx
+++ b/x-pack/plugins/observability/public/pages/overview/components/header_menu/header_menu.tsx
@@ -5,7 +5,7 @@
* 2.0.
*/
-import { EuiHeaderLink, EuiHeaderLinks } from '@elastic/eui';
+import { EuiFlexGroup, EuiFlexItem, EuiHeaderLink, EuiHeaderLinks } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import React from 'react';
import { usePluginContext } from '../../../../hooks/use_plugin_context';
@@ -25,20 +25,26 @@ export function HeaderMenu(): React.ReactElement | null {
return (
-
-
- {addDataLinkText}
-
- {ObservabilityAIAssistantActionMenuItem ? : null}
-
+
+ {ObservabilityAIAssistantActionMenuItem ? (
+
+
+
+ ) : null}
+
+
+
+ {i18n.translate('xpack.observability.home.addData', {
+ defaultMessage: 'Add integrations',
+ })}
+
+
+
+
);
}
-
-const addDataLinkText = i18n.translate('xpack.observability.home.addData', {
- defaultMessage: 'Add integrations',
-});
diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx
index c9dc8f3a6abaa..33efa0324c790 100644
--- a/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx
+++ b/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx
@@ -11,6 +11,7 @@ import { Controller, FieldPath, useFormContext } from 'react-hook-form';
import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query';
import styled from 'styled-components';
import { kqlQuerySchema } from '@kbn/slo-schema';
+import { observabilityAppId } from '../../../../../common';
import { useCreateDataView } from '../../../../hooks/use_create_data_view';
import { useKibana } from '../../../../utils/kibana_react';
import { CreateSLOForm } from '../../types';
@@ -82,7 +83,7 @@ export function QueryBuilder({
render={({ field, fieldState }) => (
{
+ field.onChange({
+ filters: savedQuery.attributes.filters,
+ kqlQuery: String(savedQuery.attributes.query.query),
+ });
+ }}
showDatePicker={false}
showSubmitButton={false}
showQueryInput={true}
diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_indicator_section.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_indicator_section.tsx
index 8db7460014a0b..eff001a751dd3 100644
--- a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_indicator_section.tsx
+++ b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_indicator_section.tsx
@@ -59,11 +59,7 @@ export function SloEditFormIndicatorSection({ isEditMode }: SloEditFormIndicator
>
{!isEditMode && (
<>
-
+
)}
/>
@@ -85,3 +82,7 @@ export function SloEditFormIndicatorSection({ isEditMode }: SloEditFormIndicator
);
}
+
+const indicatorLabel = i18n.translate('xpack.observability.slo.sloEdit.definition.sliType', {
+ defaultMessage: 'Choose the SLI type',
+});
diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_context_menu.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_context_menu.tsx
index de03eab18fbb1..a0a133da2f7c6 100644
--- a/x-pack/plugins/observability/public/pages/slos/components/slo_context_menu.tsx
+++ b/x-pack/plugins/observability/public/pages/slos/components/slo_context_menu.tsx
@@ -82,7 +82,7 @@ export function SLOContextMenu({
{label}
-
+
@@ -114,6 +115,7 @@ export function ContextMenuItem({
return (
{
diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list.tsx
index 221c51ed4348f..76ed7992b66cc 100644
--- a/x-pack/plugins/observability/public/pages/slos/components/slo_list.tsx
+++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list.tsx
@@ -11,14 +11,14 @@ import React, { useEffect } from 'react';
import dedent from 'dedent';
import { groupBy as _groupBy, mapValues } from 'lodash';
import { useFetchSloList } from '../../../hooks/slo/use_fetch_slo_list';
-import { SearchState, useUrlSearchState } from '../hooks/use_url_search_state';
+import { useUrlSearchState } from '../hooks/use_url_search_state';
import { SlosView } from './slos_view';
import { ToggleSLOView } from './toggle_slo_view';
import { GroupView } from './grouped_slos/group_view';
import { useKibana } from '../../../utils/kibana_react';
export function SloList() {
- const { state, onStateChange: storeState } = useUrlSearchState();
+ const { state, onStateChange } = useUrlSearchState();
const { view, page, perPage, kqlQuery, filters, tagsFilter, statusFilter, groupBy } = state;
const {
@@ -47,10 +47,6 @@ export function SloList() {
const isDeletingSlo = Boolean(useIsMutating(['deleteSlo']));
- const onStateChange = (newState: Partial) => {
- storeState({ page: 0, ...newState });
- };
-
useEffect(() => {
if (!sloList) {
return;
@@ -67,10 +63,10 @@ export function SloList() {
${
sloList.total >= 1
? `There are ${sloList.total} SLOs. Out of those, ${sloList.results.length} are visible.
-
+
Violating SLOs:
${slosByStatus.VIOLATED}
-
+
Degrading SLOs:
${slosByStatus.DEGRADING}
@@ -79,7 +75,7 @@ export function SloList() {
SLOs without data:
${slosByStatus.NO_DATA}
-
+
`
: ''
}
diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_bar.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_bar.tsx
index 10f471655890f..fb4274642e217 100644
--- a/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_bar.tsx
+++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_bar.tsx
@@ -8,15 +8,16 @@
import { EuiSelectableOption } from '@elastic/eui';
import { EuiSelectableOptionCheckedType } from '@elastic/eui/src/components/selectable/selectable_option';
import { i18n } from '@kbn/i18n';
-import React from 'react';
+import React, { useEffect } from 'react';
import styled from 'styled-components';
-import { useIsMutating } from '@tanstack/react-query';
-import { QuickFilters } from './common/quick_filters';
+import { Query } from '@kbn/es-query';
+import { useSloCrudLoading } from '../hooks/use_crud_loading';
import { useKibana } from '../../../utils/kibana_react';
import { SLO_SUMMARY_DESTINATION_INDEX_NAME } from '../../../../common/slo/constants';
import { useCreateDataView } from '../../../hooks/use_create_data_view';
-import { ObservabilityPublicPluginsStart } from '../../..';
-import { SearchState, useUrlSearchState } from '../hooks/use_url_search_state';
+import { observabilityAppId, ObservabilityPublicPluginsStart } from '../../..';
+import { useUrlSearchState } from '../hooks/use_url_search_state';
+import { QuickFilters } from './common/quick_filters';
export type SortField = 'sli_value' | 'error_budget_consumed' | 'error_budget_remaining' | 'status';
export type SortDirection = 'asc' | 'desc';
@@ -30,53 +31,62 @@ export type Item = EuiSelectableOption & {
export type ViewMode = 'default' | 'compact';
export function SloListSearchBar() {
- const { state, onStateChange: onChange } = useUrlSearchState();
- const { kqlQuery, filters } = state;
-
- const containerRef = React.useRef(null);
+ const {
+ data: { query },
+ unifiedSearch: {
+ ui: { SearchBar },
+ },
+ } = useKibana().services;
- const isDeletingSlo = Boolean(useIsMutating(['deleteSlo']));
- const loading = isDeletingSlo;
+ const { state, onStateChange } = useUrlSearchState();
+ const loading = useSloCrudLoading();
const { dataView } = useCreateDataView({
indexPatternString: SLO_SUMMARY_DESTINATION_INDEX_NAME,
});
- const onStateChange = (newState: Partial) => {
- onChange({ page: 0, ...newState });
- };
+ useEffect(() => {
+ const sub = query.state$.subscribe(() => {
+ const queryState = query.getState();
+ onStateChange({
+ kqlQuery: String((queryState.query as Query).query),
+ filters: queryState.filters,
+ });
+ });
- const {
- unifiedSearch: {
- ui: { SearchBar },
- },
- } = useKibana().services;
+ return () => sub.unsubscribe();
+ }, [onStateChange, query]);
return (
-
+
(
)}
- filters={filters}
+ filters={state.filters}
onFiltersUpdated={(newFilters) => {
onStateChange({ filters: newFilters });
}}
onQuerySubmit={({ query: value }) => {
onStateChange({ kqlQuery: String(value?.query), lastRefresh: Date.now() });
}}
- query={{ query: String(kqlQuery), language: 'kuery' }}
+ query={{ query: String(state.kqlQuery), language: 'kuery' }}
showSubmitButton={true}
showDatePicker={false}
showQueryInput={true}
disableQueryLanguageSwitcher={true}
saveQueryMenuVisibility="globally_managed"
+ onClearSavedQuery={() => {}}
+ onSavedQueryUpdated={(savedQuery) => {
+ onStateChange({
+ filters: savedQuery.attributes.filters,
+ kqlQuery: String(savedQuery.attributes.query.query),
+ });
+ }}
/>
);
@@ -87,3 +97,7 @@ const Container = styled.div`
padding: 0;
}
`;
+
+const PLACEHOLDER = i18n.translate('xpack.observability.slo.list.search', {
+ defaultMessage: 'Search your SLOs ...',
+});
diff --git a/x-pack/plugins/observability/public/pages/slos/hooks/use_crud_loading.ts b/x-pack/plugins/observability/public/pages/slos/hooks/use_crud_loading.ts
new file mode 100644
index 0000000000000..f7186c85337a9
--- /dev/null
+++ b/x-pack/plugins/observability/public/pages/slos/hooks/use_crud_loading.ts
@@ -0,0 +1,16 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { useIsMutating } from '@tanstack/react-query';
+
+export const useSloCrudLoading = () => {
+ const isCreatingSlo = Boolean(useIsMutating(['creatingSlo']));
+ const isUpdatingSlo = Boolean(useIsMutating(['updatingSlo']));
+ const isDeletingSlo = Boolean(useIsMutating(['deleteSlo']));
+
+ return isCreatingSlo || isUpdatingSlo || isDeletingSlo;
+};
diff --git a/x-pack/plugins/observability/public/pages/slos/hooks/use_url_search_state.ts b/x-pack/plugins/observability/public/pages/slos/hooks/use_url_search_state.ts
index 12154ffd49dd0..8a1b639e67f54 100644
--- a/x-pack/plugins/observability/public/pages/slos/hooks/use_url_search_state.ts
+++ b/x-pack/plugins/observability/public/pages/slos/hooks/use_url_search_state.ts
@@ -9,7 +9,7 @@ import { createKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public';
import deepmerge from 'deepmerge';
import { useHistory } from 'react-router-dom';
import { Filter } from '@kbn/es-query';
-import { useEffect, useRef, useState } from 'react';
+import { useCallback, useEffect, useRef, useState } from 'react';
import { DEFAULT_SLO_PAGE_SIZE } from '../../../../common/slo/constants';
import type { SortField, SortDirection } from '../components/slo_list_search_bar';
import type { GroupByField } from '../components/slo_list_group_by';
@@ -46,7 +46,7 @@ export const DEFAULT_STATE = {
export function useUrlSearchState(): {
state: SearchState;
- onStateChange: (state: Partial) => Promise;
+ onStateChange: (state: Partial) => void;
} {
const [state, setState] = useState(DEFAULT_STATE);
const history = useHistory();
@@ -75,15 +75,20 @@ export function useUrlSearchState(): {
sub?.unsubscribe();
};
}, [urlStateStorage]);
+
+ const onStateChange = useCallback(
+ (newState: Partial) => {
+ const updatedState = { ...state, page: 0, ...newState };
+ setState((stateN) => updatedState);
+ urlStateStorage.current?.set(SLO_LIST_SEARCH_URL_STORAGE_KEY, updatedState, {
+ replace: true,
+ });
+ },
+ [state]
+ );
+
return {
state: deepmerge(DEFAULT_STATE, state),
- onStateChange: (newState: Partial) =>
- urlStateStorage.current?.set(
- SLO_LIST_SEARCH_URL_STORAGE_KEY,
- { ...state, ...newState },
- {
- replace: true,
- }
- ),
+ onStateChange,
};
}
diff --git a/x-pack/plugins/observability_ai_assistant/common/functions/visualize_esql.ts b/x-pack/plugins/observability_ai_assistant/common/functions/visualize_esql.ts
index e495f47a552bf..eccb5a4bb7748 100644
--- a/x-pack/plugins/observability_ai_assistant/common/functions/visualize_esql.ts
+++ b/x-pack/plugins/observability_ai_assistant/common/functions/visualize_esql.ts
@@ -14,6 +14,7 @@ export enum VisualizeESQLUserIntention {
visualizeXy = 'visualizeXy',
visualizeBar = 'visualizeBar',
visualizeLine = 'visualizeLine',
+ visualizeArea = 'visualizeArea',
visualizeDonut = 'visualizeDonut',
visualizeTreemap = 'visualizeTreemap',
visualizeHeatmap = 'visualizeHeatmap',
diff --git a/x-pack/plugins/observability_ai_assistant/public/components/action_menu_item/action_menu_item.tsx b/x-pack/plugins/observability_ai_assistant/public/components/action_menu_item/action_menu_item.tsx
index ca8af6956ff36..e0f77f5985949 100644
--- a/x-pack/plugins/observability_ai_assistant/public/components/action_menu_item/action_menu_item.tsx
+++ b/x-pack/plugins/observability_ai_assistant/public/components/action_menu_item/action_menu_item.tsx
@@ -6,8 +6,15 @@
*/
import React, { useEffect, useMemo, useState } from 'react';
import datemath from '@elastic/datemath';
-import { EuiFlexGroup, EuiFlexItem, EuiHeaderLink, EuiLoadingSpinner } from '@elastic/eui';
+import {
+ EuiFlexGroup,
+ EuiFlexItem,
+ EuiHeaderLink,
+ EuiLoadingSpinner,
+ useCurrentEuiBreakpoint,
+} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
+import { css } from '@emotion/css';
import moment from 'moment';
import { ObservabilityAIAssistantChatServiceProvider } from '../../context/observability_ai_assistant_chat_service_provider';
import { useAbortableAsync } from '../../hooks/use_abortable_async';
@@ -16,8 +23,14 @@ import { AssistantAvatar } from '../assistant_avatar';
import { ChatFlyout } from '../chat/chat_flyout';
import { useKibana } from '../../hooks/use_kibana';
+const buttonLabelClassName = css`
+ display: none;
+`;
+
export function ObservabilityAIAssistantActionMenuItem() {
const service = useObservabilityAIAssistant();
+ const breakpoint = useCurrentEuiBreakpoint();
+
const { plugins } = useKibana().services;
const [isOpen, setIsOpen] = useState(false);
@@ -71,7 +84,7 @@ export function ObservabilityAIAssistantActionMenuItem() {
setIsOpen(() => true);
}}
>
-
+
{!isOpen || chatService.value ? (
@@ -79,7 +92,7 @@ export function ObservabilityAIAssistantActionMenuItem() {
)}
-
+
{i18n.translate('xpack.observabilityAiAssistant.actionMenuItemLabel', {
defaultMessage: 'AI Assistant',
})}
diff --git a/x-pack/plugins/observability_ai_assistant/public/components/chat/chat_body.tsx b/x-pack/plugins/observability_ai_assistant/public/components/chat/chat_body.tsx
index 83eae35e59f97..ba155c14ac2a6 100644
--- a/x-pack/plugins/observability_ai_assistant/public/components/chat/chat_body.tsx
+++ b/x-pack/plugins/observability_ai_assistant/public/components/chat/chat_body.tsx
@@ -154,6 +154,7 @@ export function ChatBody({
}
const containerClassName = css`
+ background: white;
min-width: 0;
max-height: 100%;
max-width: ${startedFrom === 'conversationView'
@@ -161,6 +162,10 @@ export function ChatBody({
: '100%'};
`;
+ const headerContainerClassName = css`
+ padding-right: ${showLinkToConversationsApp ? '32px' : '0'};
+ `;
+
const [stickToBottom, setStickToBottom] = useState(true);
const isAtBottom = (parent: HTMLElement) =>
@@ -401,9 +406,10 @@ export function ChatBody({
return (
+
) : null}
-
+
void;
}) {
const { euiTheme } = useEuiTheme();
+ const breakpoint = useCurrentEuiBreakpoint();
const currentUser = useCurrentUser();
@@ -66,6 +68,10 @@ export function ChatFlyout({
const [secondSlotContainer, setSecondSlotContainer] = useState(null);
const [isSecondSlotVisible, setIsSecondSlotVisible] = useState(false);
+ const flyoutClassName = css`
+ max-inline-size: 100% !important;
+ `;
+
const sidebarClass = css`
max-width: ${conversationsExpanded
? CONVERSATIONS_SIDEBAR_WIDTH
@@ -91,12 +97,17 @@ export function ChatFlyout({
const containerClassName = css`
height: 100%;
+ flex-wrap: nowrap;
`;
const chatBodyContainerClassName = css`
min-width: 0;
`;
+ const hideClassName = css`
+ display: none;
+ `;
+
const newChatButtonClassName = css`
position: absolute;
bottom: 31px;
@@ -142,13 +153,18 @@ export function ChatFlyout({
}}
>
{
@@ -160,7 +176,7 @@ export function ChatFlyout({
}}
>
-
+
void;
}) {
const theme = useEuiTheme();
+ const breakpoint = useCurrentEuiBreakpoint();
const router = useObservabilityAIAssistantRouter();
@@ -87,20 +94,24 @@ export function ChatHeader({
return (
- {loading ? : }
+ {loading ? (
+
+ ) : (
+
+ )}
-
+
{flyoutWidthMode && onToggleFlyoutWidthMode ? (
<>
diff --git a/x-pack/plugins/observability_ai_assistant/public/functions/visualize_esql.tsx b/x-pack/plugins/observability_ai_assistant/public/functions/visualize_esql.tsx
index 05ab7890d3951..4ddbd1349461c 100644
--- a/x-pack/plugins/observability_ai_assistant/public/functions/visualize_esql.tsx
+++ b/x-pack/plugins/observability_ai_assistant/public/functions/visualize_esql.tsx
@@ -39,6 +39,18 @@ import type {
} from '../types';
import { type ChatActionClickHandler, ChatActionClickType } from '../components/chat/types';
+enum ChartType {
+ XY = 'XY',
+ Bar = 'Bar',
+ Line = 'Line',
+ Area = 'Area',
+ Donut = 'Donut',
+ Heatmap = 'Heat map',
+ Treemap = 'Treemap',
+ Tagcloud = 'Tag cloud',
+ Waffle = 'Waffle',
+}
+
interface VisualizeLensResponse {
content: DatatableColumn[];
}
@@ -61,7 +73,7 @@ interface VisualizeESQLProps {
*/
userOverrides?: unknown;
/** User's preferation chart type as it comes from the model */
- preferredChartType?: string;
+ preferredChartType?: ChartType;
}
function generateId() {
@@ -127,19 +139,14 @@ export function VisualizeESQL({
},
};
- const chartSuggestions = lensHelpersAsync.value.suggestions(context, dataViewAsync.value);
+ const chartSuggestions = lensHelpersAsync.value.suggestions(
+ context,
+ dataViewAsync.value,
+ [],
+ preferredChartType
+ );
if (chartSuggestions?.length) {
- let [suggestion] = chartSuggestions;
-
- if (chartSuggestions.length > 1 && preferredChartType) {
- const suggestionFromModel = chartSuggestions.find(
- (s) =>
- s.title.includes(preferredChartType) || s.visualizationId.includes(preferredChartType)
- );
- if (suggestionFromModel) {
- suggestion = suggestionFromModel;
- }
- }
+ const [suggestion] = chartSuggestions;
const attrs = getLensAttributesFromSuggestion({
filters: [],
@@ -280,17 +287,6 @@ export function VisualizeESQL({
);
}
-enum ChartType {
- XY = 'XY',
- Bar = 'Bar',
- Line = 'Line',
- Donut = 'Donut',
- Heatmap = 'Heat map',
- Treemap = 'Treemap',
- Tagcloud = 'Tag cloud',
- Waffle = 'Waffle',
-}
-
export function registerVisualizeQueryRenderFunction({
service,
registerRenderFunction,
@@ -309,7 +305,7 @@ export function registerVisualizeQueryRenderFunction({
}: Parameters>[0]) => {
const { content } = response as VisualizeLensResponse;
- let preferredChartType: string | undefined;
+ let preferredChartType: ChartType | undefined;
switch (intention) {
case VisualizeESQLUserIntention.executeAndReturnResults:
@@ -333,6 +329,10 @@ export function registerVisualizeQueryRenderFunction({
preferredChartType = ChartType.Line;
break;
+ case VisualizeESQLUserIntention.visualizeArea:
+ preferredChartType = ChartType.Area;
+ break;
+
case VisualizeESQLUserIntention.visualizeTagcloud:
preferredChartType = ChartType.Tagcloud;
break;
diff --git a/x-pack/plugins/observability_ai_assistant/server/functions/query/index.ts b/x-pack/plugins/observability_ai_assistant/server/functions/query/index.ts
index fb6f89db825e0..409eefb285424 100644
--- a/x-pack/plugins/observability_ai_assistant/server/functions/query/index.ts
+++ b/x-pack/plugins/observability_ai_assistant/server/functions/query/index.ts
@@ -163,6 +163,7 @@ export function registerQueryFunction({
${VisualizeESQLUserIntention.visualizeDonut}
${VisualizeESQLUserIntention.visualizeHeatmap}
${VisualizeESQLUserIntention.visualizeLine}
+ ${VisualizeESQLUserIntention.visualizeArea}
${VisualizeESQLUserIntention.visualizeTagcloud}
${VisualizeESQLUserIntention.visualizeTreemap}
${VisualizeESQLUserIntention.visualizeWaffle}
diff --git a/x-pack/plugins/observability_solution/logs_explorer/common/data_views/models/data_view_descriptor.ts b/x-pack/plugins/observability_solution/logs_explorer/common/data_views/models/data_view_descriptor.ts
index 9b9652301dddd..520c91b55b665 100644
--- a/x-pack/plugins/observability_solution/logs_explorer/common/data_views/models/data_view_descriptor.ts
+++ b/x-pack/plugins/observability_solution/logs_explorer/common/data_views/models/data_view_descriptor.ts
@@ -5,7 +5,6 @@
* 2.0.
*/
-import { DataViewListItem } from '@kbn/data-views-plugin/common';
import { DataViewSpecWithId } from '../../dataset_selection';
import { DataViewDescriptorType } from '../types';
import { buildIndexPatternRegExp } from '../utils';
@@ -17,6 +16,10 @@ const LOGS_ALLOWLIST: Allowlist = [
// Add more strings or regex patterns as needed
];
+type DataViewDescriptorFactoryParams = Omit & {
+ namespaces?: string[];
+};
+
export class DataViewDescriptor {
id: DataViewDescriptorType['id'];
dataType: DataViewDescriptorType['dataType'];
@@ -55,9 +58,9 @@ export class DataViewDescriptor {
};
}
- public static create({ id, namespaces, title, type, name }: DataViewListItem) {
+ public static create({ id, namespaces, title, type, name }: DataViewDescriptorFactoryParams) {
const nameWithFallbackTitle = name ?? title;
- const dataType = DataViewDescriptor.#extractDataType(title);
+ const dataType = title ? DataViewDescriptor.#extractDataType(title) : 'unresolved';
const kibanaSpaces = namespaces;
return new DataViewDescriptor({
@@ -85,6 +88,10 @@ export class DataViewDescriptor {
public isUnknownDataType() {
return this.dataType === 'unknown';
}
+
+ public isUnresolvedDataType() {
+ return this.dataType === 'unresolved';
+ }
}
function isAllowed(value: string, allowList: Allowlist) {
diff --git a/x-pack/plugins/observability_solution/logs_explorer/common/data_views/types.ts b/x-pack/plugins/observability_solution/logs_explorer/common/data_views/types.ts
index 82030bcbef318..75557bf5279c6 100644
--- a/x-pack/plugins/observability_solution/logs_explorer/common/data_views/types.ts
+++ b/x-pack/plugins/observability_solution/logs_explorer/common/data_views/types.ts
@@ -9,18 +9,19 @@ import * as rt from 'io-ts';
const dataTypeRT = rt.keyof({
logs: null,
unknown: null,
+ unresolved: null,
});
export const dataViewDescriptorRT = rt.exact(
rt.intersection([
rt.type({
id: rt.string,
- name: rt.string,
- title: rt.string,
- dataType: dataTypeRT,
}),
rt.partial({
+ dataType: dataTypeRT,
kibanaSpaces: rt.array(rt.string),
+ name: rt.string,
+ title: rt.string,
type: rt.string,
}),
])
diff --git a/x-pack/plugins/observability_solution/logs_explorer/common/index.ts b/x-pack/plugins/observability_solution/logs_explorer/common/index.ts
index 9eb381441cc55..d46b9d2b57f0d 100644
--- a/x-pack/plugins/observability_solution/logs_explorer/common/index.ts
+++ b/x-pack/plugins/observability_solution/logs_explorer/common/index.ts
@@ -14,6 +14,7 @@ export {
export type { AvailableControlPanels, ControlPanels } from './control_panels';
export {
AllDatasetSelection,
+ DataViewSelection,
datasetSelectionPlainRT,
hydrateDatasetSelection,
isDatasetSelection,
diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/state_machine/state_machine.ts b/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/state_machine/state_machine.ts
index 3982933e96fb0..17dc6494d5ce8 100644
--- a/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/state_machine/state_machine.ts
+++ b/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/state_machine/state_machine.ts
@@ -155,7 +155,7 @@ export const createPureDatasetsSelectorStateMachine = (
always: [
{ cond: 'isDataViewSelection', target: 'dataView' },
{ cond: 'isAllDatasetSelection', target: 'all' },
- { cond: 'isSingleDatasetSelection', target: 'single' },
+ { target: 'single' },
],
},
single: {
diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/sub_components/list_status.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/sub_components/list_status.tsx
index 06bacb2f9710d..2a90ed926bf26 100644
--- a/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/sub_components/list_status.tsx
+++ b/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/sub_components/list_status.tsx
@@ -8,14 +8,14 @@
import React from 'react';
import { EuiButton, EuiEmptyPrompt, EuiText, EuiToolTip } from '@elastic/eui';
import { FormattedMessage } from '@kbn/i18n-react';
-import type { DataViewListItem } from '@kbn/data-views-plugin/common';
+import { DataViewDescriptor } from '../../../../common/data_views/models/data_view_descriptor';
import { ReloadDatasets } from '../../../hooks/use_datasets';
import { errorLabel, noDataRetryLabel } from '../constants';
import type { Dataset, Integration } from '../../../../common/datasets';
import { DatasetSkeleton } from './datasets_skeleton';
export interface ListStatusProps {
- data: Dataset[] | Integration[] | DataViewListItem[] | null;
+ data: Dataset[] | Integration[] | DataViewDescriptor[] | null;
description: string;
error: Error | null;
isLoading: boolean;
diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/customizations/custom_control_column.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/customizations/custom_control_column.tsx
index 272c65c2a3dd2..7fe8c0ae7aa7f 100644
--- a/x-pack/plugins/observability_solution/logs_explorer/public/customizations/custom_control_column.tsx
+++ b/x-pack/plugins/observability_solution/logs_explorer/public/customizations/custom_control_column.tsx
@@ -35,10 +35,8 @@ const ConnectedDegradedDocs = ({
service: LogsExplorerControllerStateService;
}) => {
const [state] = useActor(service);
-
- if (state.matches('initialized') && state.context.rows) {
- const row = state.context.rows[rowIndex];
- return ;
+ if (state.matches('initialized') && state.context.rows[rowIndex]) {
+ return ;
}
return null;
@@ -52,17 +50,15 @@ const ConnectedStacktraceDocs = ({
service: LogsExplorerControllerStateService;
}) => {
const [state] = useActor(service);
-
- if (state.matches('initialized') && state.context.rows) {
- const row = state.context.rows[rowIndex];
- return ;
+ if (state.matches('initialized') && state.context.rows[rowIndex]) {
+ return ;
}
return null;
};
const DegradedDocs = ({ row, rowIndex }: { row: DataTableRecord; rowIndex: number }) => {
- const isDegradedDocumentExists = !!row.raw[constants.DEGRADED_DOCS_FIELD];
+ const isDegradedDocumentExists = constants.DEGRADED_DOCS_FIELD in row.raw;
return isDegradedDocumentExists ? (
diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/notifications.ts b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/notifications.ts
index 1a9e287ee50eb..d718a440c761b 100644
--- a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/notifications.ts
+++ b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/notifications.ts
@@ -20,6 +20,18 @@ export const createDatasetSelectionRestoreFailedNotifier = (toasts: IToasts) =>
),
});
+export const createDataViewSelectionRestoreFailedNotifier = (toasts: IToasts) => () =>
+ toasts.addWarning({
+ title: i18n.translate(
+ 'xpack.logsExplorer.datasetSelection.restoreDataViewSelectionFailedToastTitle',
+ { defaultMessage: "We couldn't restore your data view selection." }
+ ),
+ text: i18n.translate(
+ 'xpack.logsExplorer.datasetSelection.restoreDataViewSelectionFailedToastMessage',
+ { defaultMessage: 'We switched to "All log datasets" as the default selection.' }
+ ),
+ });
+
export const createCreateDataViewFailedNotifier = (toasts: IToasts) => () =>
toasts.addWarning({
title: i18n.translate(
diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/data_view_service.ts b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/data_view_service.ts
index 0caa5659ba4b7..0930a134ae657 100644
--- a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/data_view_service.ts
+++ b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/data_view_service.ts
@@ -43,7 +43,7 @@ export const changeDataView =
// when updating the control panels.
const nextDataView = await dataViews.get(context.datasetSelection.toDataviewSpec().id, false);
if (nextDataView.id) {
- await discoverStateContainer.actions.onChangeDataView(nextDataView.id);
+ await discoverStateContainer.actions.onChangeDataView(nextDataView);
}
discoverStateContainer.actions.setDataView(nextDataView);
};
diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/selection_service.ts b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/selection_service.ts
index bcf6bfce7730b..464e7ff2e2d36 100644
--- a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/selection_service.ts
+++ b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/selection_service.ts
@@ -5,10 +5,12 @@
* 2.0.
*/
+import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public';
import { InvokeCreator } from 'xstate';
import { LogsExplorerCustomizations } from '../../../../controller';
import { Dataset } from '../../../../../common/datasets';
import {
+ DataViewSelection,
isDataViewSelection,
isUnresolvedDatasetSelection,
SingleDatasetSelection,
@@ -19,12 +21,14 @@ import { LogsExplorerControllerContext, LogsExplorerControllerEvent } from '../t
interface LogsExplorerControllerSelectionServiceDeps {
datasetsClient: IDatasetsClient;
+ dataViews: DataViewsPublicPluginStart;
events?: LogsExplorerCustomizations['events'];
}
export const initializeSelection =
({
datasetsClient,
+ dataViews,
events,
}: LogsExplorerControllerSelectionServiceDeps): InvokeCreator<
LogsExplorerControllerContext,
@@ -34,27 +38,43 @@ export const initializeSelection =
async (send) => {
/**
* First validation.
- * If the selection is a data view which is not of logs type, redirect to Discover.
- */
- if (
- isDataViewSelection(context.datasetSelection) &&
- context.datasetSelection.selection.dataView.isUnknownDataType() &&
- events?.onUknownDataViewSelection
- ) {
- return events?.onUknownDataViewSelection(context);
- }
-
- /**
- * Second validation.
- * If the selection is a data view, initialize it.
+ * The selection is a data view.
*/
if (isDataViewSelection(context.datasetSelection)) {
- return send('INITIALIZE_DATA_VIEW');
+ let datasetSelection: DataViewSelection | null = context.datasetSelection;
+ /**
+ * If the selection is unresolved, perform a look up to retrieve it.
+ */
+ if (datasetSelection.selection.dataView.isUnresolvedDataType()) {
+ try {
+ datasetSelection = await lookupUnresolvedDataViewSelection(datasetSelection, {
+ dataViews,
+ });
+
+ if (datasetSelection === null) {
+ return send('DATAVIEW_SELECTION_RESTORE_FAILURE');
+ }
+ } catch {
+ return send('DATAVIEW_SELECTION_RESTORE_FAILURE');
+ }
+ }
+
+ /**
+ * If the selection is a data view which is not of logs type, invoke the customization event for unknown data views.
+ */
+ if (
+ datasetSelection.selection.dataView.isUnknownDataType() &&
+ events?.onUknownDataViewSelection
+ ) {
+ return events.onUknownDataViewSelection(context);
+ }
+
+ return send({ type: 'INITIALIZE_DATA_VIEW', data: datasetSelection });
}
/**
- * Third validation.
- * If the selection is an unresolved dataset, perform a look up against integrations..
+ * Second validation.
+ * If the selection is an unresolved dataset, perform a look up against integrations.
*/
if (isUnresolvedDatasetSelection(context.datasetSelection)) {
try {
@@ -105,3 +125,24 @@ const lookupUnresolvedDatasetSelection = async (
const dataset = Dataset.create(targetDataset, installedIntegration);
return SingleDatasetSelection.create(dataset);
};
+
+const lookupUnresolvedDataViewSelection = async (
+ datasetSelection: DataViewSelection,
+ { dataViews }: Pick
+) => {
+ const resolvedDataView = await dataViews.get(datasetSelection.toDataviewSpec().id);
+
+ if (!resolvedDataView) {
+ return null;
+ }
+
+ return DataViewSelection.fromSelection({
+ dataView: {
+ id: resolvedDataView.id ?? '',
+ kibanaSpaces: resolvedDataView.namespaces,
+ name: resolvedDataView.name,
+ title: resolvedDataView.getIndexPattern(),
+ type: resolvedDataView.type,
+ },
+ });
+};
diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/state_machine.ts b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/state_machine.ts
index da393ef99213c..3a4b383e34f69 100644
--- a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/state_machine.ts
+++ b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/state_machine.ts
@@ -21,6 +21,7 @@ import { DEFAULT_CONTEXT } from './defaults';
import {
createCreateDataViewFailedNotifier,
createDatasetSelectionRestoreFailedNotifier,
+ createDataViewSelectionRestoreFailedNotifier,
} from './notifications';
import {
initializeControlPanels,
@@ -50,7 +51,7 @@ import {
export const createPureLogsExplorerControllerStateMachine = (
initialContext: LogsExplorerControllerContext
) =>
- /** @xstate-layout N4IgpgJg5mDOIC5QBkD2VYFEAeAHANqgE5hEDCqAdgC5Gr76kB0ArpQJYfXsCG+7AL0gBiAEqYymAJIA1TABEA+gGUAKgEFVmRWQDyAOQ1T9mUQG0ADAF1EoXKljtuVWyGyIATBYtMAbB4AOABYAZgsAdnCg8N8AVliAGhAAT0QARjSPJhCQjyC0iO9YgE4PEOKAXwqktAwcAmJSCho6BmZOJ15+AU4oZTBGAGNnSmFjKVUpdWQpAC1teU11RRkpTAB1SxskEHtHEdd3BCCIv2KwtOK4gO9zpNTjnKYLL3P-Eo9i2JCqmvQsPCEEjkKi0eiMIhMDrcPiCXr9IYjMb6CZTGbzRSLDTKTCqLauPadFw7I6+IJMYoBTIfNIhXzFIJle6IE7FJgBYoWL5BAI3cJeOm-EC1AENYHNMFtSHQrpwyh9AZgYbsKjCLHqHGqFSYZASSYGRTiNS6cSKABi6ikyAAquJ8TtCQcSYgALRpAKxJh5XKc4qc2L0oKJFKeXwhJixXl+sPu87fXxCkX1IFNUGtCFQriynry+Q8ag8GTsMAAd2EECoYEzADdUABrKtJwGNEEtcHtLOwnNQPMFoulhCcWuDfMqyhbe12BxEyiHRAhcLhiwnXzBcIBk7xZkIcLeZ5R4ppUK73wWH7VYX-ZMtiXpjudLu9XuF4tl0h0SEEfMAM2IAFsmCbMVUzbKVMwfbon3zF8ByHVARxGCdrAJacnVAUkAnCJhGV8DIqXCL4rmDB5Yg8LIuS5cI0nXfxQnPP46mbcU03baVO0g3NoNgMBqHLSsa3rRsryYkDJQzGVH04gtuOoQdKGHUcqCQ7Yp32Mc5wQF0yKYGILG+KiQndMj8nCbddx8CwOQselOUXXJYkTYTgNbMT7xhDiey4njhHfYgmC-ahfyIACgJTFy7zYiC5U86SeLkhTEOsSddlQ9TnU02NsL5SkTkiTk6W3AIF2eWJqOKKiPF8d4EwvUKbxYsCJI8296AABR4SgBlgPjOoEhtAKcsKWsa9jouG9rOvwWB4vgxTxyS5CHVS4l0MQAyKXKor8g8eJ+VMkMEACMlnmXXlylCXwT0cxjnOG8TRu7caOq6nyiA-fz8B-f8BpuoaGvuqLHoaiaupmhCx2UlC1JWtw1qPPxrkyQybipDxCr07CohyXDDK5Dw0mu0U-tAgH3MEERxEkWQFikZQ9DkURFHUVrWpUDQtGSx00tWhBIx8fIuUM09KvOAJt1pXJsNCWkCnOmIPEJ69mJJtzswpiRpDkRRJgAWUwM0rS0RndcwTnltndLTzZMpMNifI0kui5xfdcNYmsj1FxOB2aoYon6pVyKyaECAxA16ntakPWDeQI3DX1o0AAlFGMI2ZGmM3oYtnn4nDBc7dPAiLG9-aHgKHl2SpYIj0+eIPHCRWRPC1jwKDyAmAgLzqARJURihCBGGEa1WqxBYlk1bVdTIfV9AzmcNMyKqIxKMk9M+Hbom3Bc2SuDIQmiQ9i4b27-tVrs2472Ku8VZUqD7geh5HzEx9xCe9SkAwzDSFSUsz+fDNd2kpEqpfGolVbcbssgEVynXLkcZKi1UGv7Vygc1YQHbp3buN9KB3zAIPYemhR7YhfjiSe08zAeG-lzGGRw0ikTSH4Iq7pSrY1KGjA6kQfCHhuCEEolk6HwN9krUSEUW6oPQZfTBvdBgAAsOpQCgn2V8PUqxwX6nVZWyDRFnzQRfHgMlJFjiYDIuRCiYIljBnNSGS1f7pSRmyf+VJ6RF1KhvA67xsi7nOLuS4QR6QEwQb9JBIimrkx0Rg6+UjZHylMf2N8b0-IBSCiFRBGjgkPXPuExEhjjHRKkmYixiUrCzzQrDBAdjsKrnyG7M8+MghmS8EwXeVIF48g9A5AJftUnNxCcHcReieIGNvoMEgo55TqAgAneCz5YnKL6kJQJXSRqAwyRIiJ2SRncDGRMqZ0FYkFIhgtSh5s-7FQ+DEXIDs6JsIeJyAIEZAjY18d7Q8R9iaaJ6Ss-pV8slDI2b0cZkzBjTKUb5T8n1ArfXUcI7p6SwmrJ+dg4ZYBRlQABTsxRsF5KzUKcU7mpSJZ3MqhEXIVI3YcjFgdAopxeRcn8IXVeQRXlBJhcstBgwGoAHE6AsFwLAVgHBYXIlRNMOY2g9CGFELoZAigOWSqHkzVqUhcXUPSGETh+MjxFXiJdcIFLS5lE9LyS6NxVwmvxkyxZpMxHstAly1APK+XsH7rg9UKw1jrEUA-Ah8hlVZ3xZkNksRdV7R5LuUIer0guOwqRUlQQ415BiBa6FSzW5ss5dy3lOC8GP3FaoSV0rWrqBMMgZQvq-7+AjBcMMkRIwRrKVGoMgRaFxsZNEeil4FnJqtdoox6b7WZp5RfXoT1JrdQrL1VR8zOldtPt0NuNrJR2odawXAQ75QjtBnBcGSlDlQznrY8o4Z-DBACDtKikYCqUpCMECkvIdrBC+Ne-ISam4putX25dg6UUbqmq9d6iTIUpJnSgntC7WhLoHau79wNnpTX2Tuopi1VL7p5rSBkXoriNuoi8E4dSr2VXZIESyR00NRAVkKSgqAIBwFcFC19EI90lKOFpYqPIIg5QiIXS9Dw8jslyJuai5RqKBBfXdZgbAPkQEY3i5jwmspUW8AUHap5MLix4dkSy5V+R0j3uVdtdGxMgY8oMv1VC-VHDIlhdey4chUSuEdXw24670JyMuMM1lSpUiDKJk+RnorAtLNJlVxwXgMNpJROkcbIzgOiM8LwVVsanqDPXDpQj6Ozv853IL5n5zkndMeaI-JLJVOIogfO7JLqVS858K4+mgPpb80DUCIMprZY0te3wfGaJ7xyM065iASO3qPEEL4Z4RsOx8wHLRc6pPWJQ-il44Y9OVR4UXCIp7nZZB3hLKIR5-CXUm+82FfT9FrJhmZ+eEQsgFFXJ8a9646Ql08KUCpGQ15knGz7Dt06GvTdCSdgZZ3sFOsYG12xmQfA3dPaLB7l1twnGu8uINtCdo8IyIdtJrKAffJ7tkqJ8i8mxLB6h5LFIeFPtKKUfI25-C52iKVRcNLOT+MEY3Qzf3em6NOwioxfytmAoCyWYn+LIzki8adCIVVhbbk5J1t2n2iovGZxjllqbe22ozfAObTH0gRHoctsMbsCi6v62UzV2QHPeGc4ydprPj5Tck+rxdmv+WSeFzQzIdztWwLDGGfIIRxb3oq7Z9cdtyj8hV2+0DH7M0g7AO79IZJPSlDs-SwTanT0UjJGdG7lUdqR+7TNp34GXdfs2VAH9WvkM67N5cCki4VtG-W6b2kNwvTeHwpZfkgR4FVCAA */
+ /** @xstate-layout N4IgpgJg5mDOIC5QBkD2VYFEAeAHANqgE5hEDCqAdgC5Gr76kB0ArpQJYfXsCG+7AL0gBiAEqYymAJIA1TABEA+gGUAKgEFVmRWQDyAOQ1T9mUQG0ADAF1EoXKljtuVWyGyIAzABYvTAOwAjABsFgCcAKxefhYAHLF+ADQgAJ6IoUFMoVHhMeEBwaHBFn4AviVJaBg4BMSkFDR0DMycTrz8ApxQymCMAMbOlMLGUqpS6shSAFra8prqijJSmADqljZIIPaOA67uCEEhTF4xPqEATOER0WdeSakIXh4eTBZnARYW4Wehn0EnXmUKugsHhCCRyFRaPRGEQmC1uHxBJ1un0BkN9CMxhNpopZhplJhVGtXFtWi4Nnsgr5QjEAjdjuEPH5AhYgndEI9nq93p9vr9-oCQJUQTVwfUoU1YfC2kjKF0emB+uwqMI8eoCaoVJhkBJRgZFOI1LpxIoAGLqKTIACq4mJG1JOwpiAAtGdiv4-GcngEvEEPDEgnkPOyEB43Uwvk8sl5Qv74oLhdUwXVIY0YXCuDKOnKUYq0WrFistTqyHr9AbMEaTebLTbMHa7A4yZRdi63mcmDFcjkfcUAh4aeEQwEYn5-NzGXSvY9QgngUnahCGtDmpnEdmoPIeNQeDJ2GAAO7CCBUMAZgBuqAA1mfE6DF+K06vWuvOlud3vDwhOJfetvlZQawNpsTaOqAezhK8LzHB4xRvHEXgjiG0QWC8MQ-EEoQ-H4TwXHOVT3mKqYrlKa7tG+267vuR6kHQsIENuABmxAALZMHeoopsukoZi+5Fyu+VFfj+qB-gMQHWCSoEAa2oZMkwAThH4xy+mcXpqU8IaQTERxBO8HgBLGHyxAC5RCvOhFcRK6bSq+AmUbAYDUMep4Xtet4WZxS7Wc+CL8ZuDlOd+lC-v+VASesjbbDJToIK6HZ+CEjKBAZMRqYhiQpIgKFoRhWHFLh4T4SKybeU+pF8bKAU7o5zm0cQTAMdQzFEGxHGlY+JG8X5VWCbVwWheJ1jAQ6MXgS6I6hEccR+DSXjFLNFgeGyWUIDE8mfAEs2BGcBwXEExULkR3E2WRVWdfgAAKPCUD0sAubdbk3uxnkdcRPG2f5F3Xbd+CwANolhYBw2Sfa0nkuNCCeh2gZBGc6H0q8vohrSGRMjcYQnH4aVZIdlllV1n3ne9P13cI9X0fgTGsS9BFeRdp2VRu303XdANiQBEVSdFENuNlXpMGGXgXD6TKJaEIYYUwfrhHkSmxD8sZ4-T72Mz1QgQGIEjSHIuJSMoehyKIijqJdl0qBoWgjeDLaxTkqGIWEBkhLtWTDrBU2MvDVK7RY-YHMrb0nb5WYiOIkiyDM+uG6YuJzBbmj1qDUXNrJSnhJ2fpZHk5zC8OSnPFhzKspcBysgdZntQ+qsh+uYfa5HigAIpWqYACaCdW8nIE87bkPhH8EYskEOFbQPfzDj41Jul4eQXMUftFZXr3V8HFXq-XEe66MACymCmpaWjG7vSeRT3qexSEU1eqO4v9kyMbDltY7y4EjInJB8OB6vPnr6Hmvhx1toE+B9kBHwrKaQ0AAJRQxgj4yHGNbXuadGSCz8JEEIi1ggj2HBYY4nZaQnB9N8WWZxSjLzpkHX+3V-5MAgIFaguYlRUDhBARgwgrSXTxDMOYGpiy6ikAYJBF9IZ0gOBGUu80vjnEiJle4TIprpHyN4Wa+QDjkKBJQn+5UaF1wgHQhhTCBisPYZw7hcd8SEn4aWQR+gzABDPqNXmex+z9gjP2L4BwIhbQOFpKCs15qemiFhDwlxv7HWoUTDWBiapOSMQBExYAOFcMThY9UViCQljLGYM4jibayUUm8aW60RxBmWucM4yFoiZBHEtS4sQviGXCVZHRUTIAxJ4LVeJLDegAAsbpQAoh+aiD0zwiWelXCJrSzrRPobExhCpmGUCYH0gZQyhIHnZkDLmYNkGxTpAOQW-ZUY-EUj6ORiA4YZyZE7aIhlfSFGaQTD6Mz2lzM6XExZxjVlynWZ+GiRA6KNSps1GmkyWmE1efo95XSvkJJ+YM+ywzhIhUBkNKwwiwJ8wQAcqavoiGQSWm8W4q1PSoWUbSMRxxuxPIZrXdobzDFwp6SQf8cp1AQCgaJQS-zRlPQ8loqZkKmaMvmd05ZvRWXcHZZy7llF-lbPRZisa2L74v3OIlMMwROSVNWj8HSXx1rLV9Ngx5FCSraOFRvaFTLUTwqlZ0DlXLeg8pGRTYF1NWq0wtUKl5IqbViuZRKh1MrnWupRYNTmIM8l7NEU8HSvscLw0UgrGIuD3RdjCHDRavJTKaJ9RCv11qVnvQAOJ0BYLgWArAOBQvRJicYUxtB6EMKIXQyBFClrbZwk2l0pDKucYgfsHxMhvB9OtWWI9sbDi9BnLsI84h-EXW8WlNc-56JLdxctqBK3VvYGwpJaoFhLGWIoMxid5ADr7qqukntsZBOONER4abVpnN8LPZNkQfA3ESquteuiGX6N6GWitVbEnJPMS21QbaO2XXUCYZAygr0FOWh2Rkfs-TMhyC++4b6jiGsUlPH9Hg-2RKhZuiU27d2sFwHMzoLNfr3RPI9cZAqC3PLVrQ4DW7QPVsrXRuUDG2YiQ5uFaN3MRGqoHM8OGJw0pKUUutFauH-TUi7BcE4ERVMBFI9M-1FHGhUbA-xtlUAhN-XJoChqTUWptRXr6zjG7uOUd4zRgTZmSasz+oqqNGLu5OOvS4gcvhvhUkadceaJKVO7U7PDWIAZ+yhGUmcMoZlKCoAgHAVw4KOOkAk1ivYrpDhdllrSQJiXcghmdKhd+o49KizdHEP2umupsDaRAfLKrCtuimu8eGY74boK9BcnFhlR2IV9AEgckEK75qOoWxz-lxWdcHaGQMgtPgao9nEMMIZQtMBuH6dCk6-jZxa0WrMfzqIrcC5c2WRwgl-EDAGC4EtVoYMzp6ZarwwxfDzeZQVC36W9QYTd2S3gFInAfsyRriFZZaV9J93aZXvjpBI+a+buX11fU84xsHsVQmoQiM++aSWBxwxRojshbo-iNdwjEc7i3BCQHx6In7mQk0yz9sUNKKMMhKLpK-fSdJGfA9mbavMKqAsFLggpVkON-ToOWiN74HYTW9iwukbGDOMf4zpdj5nAaPkLLtSw-djBWc3vDO8WnsZRyMhwateaHZ3izzfhcUJ+RRcG-F4G03Er+m-KRRsy3Li3eZFCap84ucAghjhs8FReQcKZtOd7gDhuOmwv9yskNUAnVyuRQeUPQ6cjUhuccYoBwXaS1ZBGPBhQ-iwT5Dp3XKt-3tYM-QIz8BdmSZcX2DnYYufvGxrq3D47BYBlpKcv0I408d+c4Z1zbWoXF9G-DCRV80d+kQsGV9GnM5PCw5EAcnp5-kcX131z5uwBr+1RnDVhkc1bT3yptKmQqRdgMqyXaeFW9UL02LUv3wG7zc1M3Mx7xTgKyHXyEUU50JxH151fTjAOw+FpGiFHDUnQlSxKCAA */
createMachine<
LogsExplorerControllerContext,
LogsExplorerControllerEvent,
@@ -75,7 +76,10 @@ export const createPureLogsExplorerControllerStateMachine = (
src: 'initializeSelection',
},
on: {
- INITIALIZE_DATA_VIEW: 'initializingDataView',
+ INITIALIZE_DATA_VIEW: {
+ target: 'initializingDataView',
+ actions: ['storeDatasetSelection'],
+ },
INITIALIZE_DATASET: {
target: 'initializingDataset',
actions: ['storeDatasetSelection'],
@@ -84,6 +88,10 @@ export const createPureLogsExplorerControllerStateMachine = (
target: 'initializingDataset',
actions: ['storeDefaultSelection', 'notifyDatasetSelectionRestoreFailed'],
},
+ DATAVIEW_SELECTION_RESTORE_FAILURE: {
+ target: 'initializingDataset',
+ actions: ['storeDefaultSelection', 'notifyDataViewSelectionRestoreFailed'],
+ },
},
},
initializingDataView: {
@@ -94,8 +102,9 @@ export const createPureLogsExplorerControllerStateMachine = (
actions: ['updateDiscoverAppStateFromContext', 'updateTimefilterFromContext'],
},
onError: {
- target: 'initialized',
+ target: 'initializingDataset',
actions: [
+ 'storeDefaultSelection',
'notifyCreateDataViewFailed',
'updateDiscoverAppStateFromContext',
'updateTimefilterFromContext',
@@ -339,6 +348,7 @@ export const createLogsExplorerControllerStateMachine = ({
actions: {
notifyCreateDataViewFailed: createCreateDataViewFailedNotifier(toasts),
notifyDatasetSelectionRestoreFailed: createDatasetSelectionRestoreFailedNotifier(toasts),
+ notifyDataViewSelectionRestoreFailed: createDataViewSelectionRestoreFailedNotifier(toasts),
redirectToDiscover: redirectToDiscover(events),
updateTimefilterFromContext: updateTimefilterFromContext(query),
},
@@ -346,7 +356,7 @@ export const createLogsExplorerControllerStateMachine = ({
changeDataView: changeDataView({ dataViews }),
createAdHocDataView: createAdHocDataView(),
initializeControlPanels: initializeControlPanels(),
- initializeSelection: initializeSelection({ datasetsClient, events }),
+ initializeSelection: initializeSelection({ datasetsClient, dataViews, events }),
subscribeControlGroup: subscribeControlGroup(),
updateControlPanels: updateControlPanels(),
discoverStateService: subscribeToDiscoverState(),
diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/types.ts b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/types.ts
index a72b1700fce43..de54be4f26f83 100644
--- a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/types.ts
+++ b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/types.ts
@@ -169,6 +169,7 @@ export type LogsExplorerControllerEvent =
}
| {
type: 'INITIALIZE_DATA_VIEW';
+ data?: DataViewSelection;
}
| {
type: 'INITIALIZE_DATASET';
diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/utils/get_data_view_test_subj.ts b/x-pack/plugins/observability_solution/logs_explorer/public/utils/get_data_view_test_subj.ts
index 0beda0992aacf..a5ac9301662f7 100644
--- a/x-pack/plugins/observability_solution/logs_explorer/public/utils/get_data_view_test_subj.ts
+++ b/x-pack/plugins/observability_solution/logs_explorer/public/utils/get_data_view_test_subj.ts
@@ -9,7 +9,7 @@ const BASE_DATA_VIEW_TEST_SUBJ = 'logsExplorerDataView';
const publicDataViewPatternsSet = new Set(['logs-*', 'logstash-*', 'filebeat-*']);
-export const getDataViewTestSubj = (title: string) => {
+export const getDataViewTestSubj = (title: string = '') => {
if (publicDataViewPatternsSet.has(title)) {
return [BASE_DATA_VIEW_TEST_SUBJ, cleanTitle(title)].join('_');
}
diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets/index.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets/index.ts
deleted file mode 100644
index 078549b8593b1..0000000000000
--- a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets/index.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-export * from './all_datasets_locator';
diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets/all_datasets_locator.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets_locator.ts
similarity index 84%
rename from x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets/all_datasets_locator.ts
rename to x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets_locator.ts
index aec30d4b6762c..c9aef93f4c2a0 100644
--- a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets/all_datasets_locator.ts
+++ b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/all_datasets_locator.ts
@@ -11,15 +11,15 @@ import {
AllDatasetsLocatorParams,
ALL_DATASETS_LOCATOR_ID,
} from '@kbn/deeplinks-observability/locators';
-import { DatasetLocatorDependencies } from '../types';
-import { constructLocatorPath } from '../utils';
+import { ObsLogsExplorerLocatorDependencies } from './types';
+import { constructLocatorPath } from './utils';
export type AllDatasetsLocator = LocatorPublic;
export class AllDatasetsLocatorDefinition implements LocatorDefinition {
public readonly id = ALL_DATASETS_LOCATOR_ID;
- constructor(protected readonly deps: DatasetLocatorDependencies) {}
+ constructor(protected readonly deps: ObsLogsExplorerLocatorDependencies) {}
public readonly getLocation = (params: AllDatasetsLocatorParams) => {
const { useHash } = this.deps;
diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/data_view_locator.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/data_view_locator.ts
new file mode 100644
index 0000000000000..f498313558d43
--- /dev/null
+++ b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/data_view_locator.ts
@@ -0,0 +1,40 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { LocatorDefinition, LocatorPublic } from '@kbn/share-plugin/public';
+import { DataViewSelection } from '@kbn/logs-explorer-plugin/common';
+import {
+ ObsLogsExplorerDataViewLocatorParams,
+ OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR_ID,
+} from '@kbn/deeplinks-observability/locators';
+import { constructLocatorPath } from './utils';
+import { ObsLogsExplorerLocatorDependencies } from './types';
+
+export type DataViewLocator = LocatorPublic;
+
+export class DataViewLocatorDefinition
+ implements LocatorDefinition
+{
+ public readonly id = OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR_ID;
+
+ constructor(protected readonly deps: ObsLogsExplorerLocatorDependencies) {}
+
+ public readonly getLocation = (params: ObsLogsExplorerDataViewLocatorParams) => {
+ const { useHash } = this.deps;
+ const { id, ...locatorParams } = params;
+
+ const dataViewSelection = DataViewSelection.fromSelection({
+ dataView: { id },
+ });
+
+ return constructLocatorPath({
+ datasetSelection: dataViewSelection.toPlainSelection(),
+ locatorParams,
+ useHash,
+ });
+ };
+}
diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/index.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/index.ts
index cfacceac18b7a..6692c6d30cea9 100644
--- a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/index.ts
+++ b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/index.ts
@@ -6,14 +6,16 @@
*/
export type { ObservabilityLogsExplorerLocationState } from '@kbn/deeplinks-observability/locators';
-import { AllDatasetsLocator } from './all_datasets';
-import { SingleDatasetLocator } from './single_dataset';
+import { AllDatasetsLocator } from './all_datasets_locator';
+import { DataViewLocator } from './data_view_locator';
+import { SingleDatasetLocator } from './single_dataset_locator';
-export * from './single_dataset';
-export * from './all_datasets';
+export * from './single_dataset_locator';
+export * from './all_datasets_locator';
export * from './utils';
export interface ObservabilityLogsExplorerLocators {
allDatasetsLocator: AllDatasetsLocator;
+ dataViewLocator: DataViewLocator;
singleDatasetLocator: SingleDatasetLocator;
}
diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/locators.test.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/locators.test.ts
index 9da7b798c50b3..902d7fd936e8d 100644
--- a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/locators.test.ts
+++ b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/locators.test.ts
@@ -8,21 +8,25 @@
import { OBSERVABILITY_LOGS_EXPLORER_APP_ID } from '@kbn/deeplinks-observability';
import {
AllDatasetsLocatorParams,
+ ObsLogsExplorerDataViewLocatorParams,
SingleDatasetLocatorParams,
} from '@kbn/deeplinks-observability/locators';
-import { AllDatasetsLocatorDefinition } from './all_datasets/all_datasets_locator';
-import { SingleDatasetLocatorDefinition } from './single_dataset';
-import { DatasetLocatorDependencies } from './types';
+import { AllDatasetsLocatorDefinition } from './all_datasets_locator';
+import { DataViewLocatorDefinition } from './data_view_locator';
+import { SingleDatasetLocatorDefinition } from './single_dataset_locator';
+import { ObsLogsExplorerLocatorDependencies } from './types';
const setup = async () => {
- const dep: DatasetLocatorDependencies = {
+ const dep: ObsLogsExplorerLocatorDependencies = {
useHash: false,
};
const allDatasetsLocator = new AllDatasetsLocatorDefinition(dep);
+ const dataViewLocator = new DataViewLocatorDefinition(dep);
const singleDatasetLocator = new SingleDatasetLocatorDefinition(dep);
return {
allDatasetsLocator,
+ dataViewLocator,
singleDatasetLocator,
};
};
@@ -42,7 +46,7 @@ describe('Observability Logs Explorer Locators', () => {
});
});
- it('should allow specifiying time range', async () => {
+ it('should allow specifying time range', async () => {
const params: AllDatasetsLocatorParams = {
timeRange,
};
@@ -56,7 +60,7 @@ describe('Observability Logs Explorer Locators', () => {
state: {},
});
});
- it('should allow specifiying query', async () => {
+ it('should allow specifying query', async () => {
const params: AllDatasetsLocatorParams = {
query: {
language: 'kuery',
@@ -74,7 +78,7 @@ describe('Observability Logs Explorer Locators', () => {
});
});
- it('should allow specifiying refresh interval', async () => {
+ it('should allow specifying refresh interval', async () => {
const params: AllDatasetsLocatorParams = {
refreshInterval: {
pause: false,
@@ -136,6 +140,120 @@ describe('Observability Logs Explorer Locators', () => {
});
});
+ describe('Data View Locator', () => {
+ it('should create a link with correct index', async () => {
+ const { dataViewLocator } = await setup();
+ const location = await dataViewLocator.getLocation({
+ id: 'data-view-id',
+ });
+
+ expect(location).toMatchObject({
+ app: OBSERVABILITY_LOGS_EXPLORER_APP_ID,
+ path: `/?pageState=(datasetSelection:(selection:(dataView:(dataType:unresolved,id:data-view-id)),selectionType:dataView),v:1)`,
+ state: {},
+ });
+ });
+
+ it('should allow specifying time range', async () => {
+ const params: ObsLogsExplorerDataViewLocatorParams = {
+ id: 'data-view-id',
+ timeRange,
+ };
+
+ const { dataViewLocator } = await setup();
+ const location = await dataViewLocator.getLocation(params);
+
+ expect(location).toMatchObject({
+ app: OBSERVABILITY_LOGS_EXPLORER_APP_ID,
+ path: `/?pageState=(datasetSelection:(selection:(dataView:(dataType:unresolved,id:data-view-id)),selectionType:dataView),time:(from:now-30m,to:now),v:1)`,
+ state: {},
+ });
+ });
+
+ it('should allow specifying query', async () => {
+ const params: ObsLogsExplorerDataViewLocatorParams = {
+ id: 'data-view-id',
+ query: {
+ language: 'kuery',
+ query: 'foo',
+ },
+ };
+
+ const { dataViewLocator } = await setup();
+ const location = await dataViewLocator.getLocation(params);
+
+ expect(location).toMatchObject({
+ app: OBSERVABILITY_LOGS_EXPLORER_APP_ID,
+ path: `/?pageState=(datasetSelection:(selection:(dataView:(dataType:unresolved,id:data-view-id)),selectionType:dataView),query:(language:kuery,query:foo),v:1)`,
+ state: {},
+ });
+ });
+
+ it('should allow specifying refresh interval', async () => {
+ const params: ObsLogsExplorerDataViewLocatorParams = {
+ id: 'data-view-id',
+ refreshInterval: {
+ pause: false,
+ value: 666,
+ },
+ };
+
+ const { dataViewLocator } = await setup();
+ const location = await dataViewLocator.getLocation(params);
+
+ expect(location).toMatchObject({
+ app: OBSERVABILITY_LOGS_EXPLORER_APP_ID,
+ path: `/?pageState=(datasetSelection:(selection:(dataView:(dataType:unresolved,id:data-view-id)),selectionType:dataView),refreshInterval:(pause:!f,value:666),v:1)`,
+ state: {},
+ });
+ });
+
+ it('should allow specifying columns', async () => {
+ const params: ObsLogsExplorerDataViewLocatorParams = {
+ id: 'data-view-id',
+ columns: [{ field: '_source', type: 'document-field' }],
+ };
+
+ const { dataViewLocator } = await setup();
+ const location = await dataViewLocator.getLocation(params);
+
+ expect(location).toMatchObject({
+ app: OBSERVABILITY_LOGS_EXPLORER_APP_ID,
+ path: `/?pageState=(columns:!((field:_source,type:document-field)),datasetSelection:(selection:(dataView:(dataType:unresolved,id:data-view-id)),selectionType:dataView),v:1)`,
+ state: {},
+ });
+ });
+
+ it('should allow specifying filters', async () => {
+ const params: ObsLogsExplorerDataViewLocatorParams = {
+ id: 'data-view-id',
+ filters: [
+ {
+ meta: {
+ alias: 'foo',
+ disabled: false,
+ negate: false,
+ },
+ },
+ {
+ meta: {
+ alias: 'bar',
+ disabled: false,
+ negate: false,
+ },
+ },
+ ],
+ };
+
+ const { dataViewLocator } = await setup();
+ const location = await dataViewLocator.getLocation(params);
+
+ expect(location.path).toMatchInlineSnapshot(
+ `"/?pageState=(datasetSelection:(selection:(dataView:(dataType:unresolved,id:data-view-id)),selectionType:dataView),filters:!((meta:(alias:foo,disabled:!f,negate:!f)),(meta:(alias:bar,disabled:!f,negate:!f))),v:1)"`
+ );
+ });
+ });
+
describe('Single Dataset Locator', () => {
const integration = 'Test';
const dataset = 'test-*';
@@ -153,7 +271,7 @@ describe('Observability Logs Explorer Locators', () => {
});
});
- it('should allow specifiying time range', async () => {
+ it('should allow specifying time range', async () => {
const params: SingleDatasetLocatorParams = {
integration,
dataset,
@@ -170,7 +288,7 @@ describe('Observability Logs Explorer Locators', () => {
});
});
- it('should allow specifiying query', async () => {
+ it('should allow specifying query', async () => {
const params: SingleDatasetLocatorParams = {
integration,
dataset,
@@ -190,7 +308,7 @@ describe('Observability Logs Explorer Locators', () => {
});
});
- it('should allow specifiying refresh interval', async () => {
+ it('should allow specifying refresh interval', async () => {
const params: SingleDatasetLocatorParams = {
integration,
dataset,
@@ -210,7 +328,7 @@ describe('Observability Logs Explorer Locators', () => {
});
});
- it('should allow specifiying columns', async () => {
+ it('should allow specifying columns', async () => {
const params: SingleDatasetLocatorParams = {
integration,
dataset,
@@ -227,7 +345,7 @@ describe('Observability Logs Explorer Locators', () => {
});
});
- it('should allow specifiying filters', async () => {
+ it('should allow specifying filters', async () => {
const params: SingleDatasetLocatorParams = {
integration,
dataset,
diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset/index.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset/index.ts
deleted file mode 100644
index ae8e21e7c8296..0000000000000
--- a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset/index.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-export * from './single_dataset_locator';
diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset/single_dataset_locator.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset_locator.ts
similarity index 88%
rename from x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset/single_dataset_locator.ts
rename to x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset_locator.ts
index 7e731e3aaf7a8..3b7a8dfe0b0f6 100644
--- a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset/single_dataset_locator.ts
+++ b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/single_dataset_locator.ts
@@ -12,8 +12,8 @@ import {
SingleDatasetLocatorParams,
SINGLE_DATASET_LOCATOR_ID,
} from '@kbn/deeplinks-observability/locators';
-import { DatasetLocatorDependencies } from '../types';
-import { constructLocatorPath } from '../utils';
+import { ObsLogsExplorerLocatorDependencies } from './types';
+import { constructLocatorPath } from './utils';
export type SingleDatasetLocator = LocatorPublic;
@@ -22,7 +22,7 @@ export class SingleDatasetLocatorDefinition
{
public readonly id = SINGLE_DATASET_LOCATOR_ID;
- constructor(protected readonly deps: DatasetLocatorDependencies) {}
+ constructor(protected readonly deps: ObsLogsExplorerLocatorDependencies) {}
public readonly getLocation = (params: SingleDatasetLocatorParams) => {
const { useHash } = this.deps;
diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/types.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/types.ts
index 25228c1f56c04..4c80bcf31c2a6 100644
--- a/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/types.ts
+++ b/x-pack/plugins/observability_solution/observability_logs_explorer/common/locators/types.ts
@@ -4,7 +4,6 @@
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
-
-export interface DatasetLocatorDependencies {
+export interface ObsLogsExplorerLocatorDependencies {
useHash: boolean;
}
diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/common/url_schema/dataset_quality/url_schema_v1.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/common/url_schema/dataset_quality/url_schema_v1.ts
index 8633bb160bde5..2925056ad178d 100644
--- a/x-pack/plugins/observability_solution/observability_logs_explorer/common/url_schema/dataset_quality/url_schema_v1.ts
+++ b/x-pack/plugins/observability_solution/observability_logs_explorer/common/url_schema/dataset_quality/url_schema_v1.ts
@@ -56,6 +56,16 @@ export const filtersRT = rt.exact(
rt.partial({
inactive: rt.boolean,
fullNames: rt.boolean,
+ timeRange: rt.strict({
+ from: rt.string,
+ to: rt.string,
+ refresh: rt.strict({
+ isPaused: rt.boolean,
+ interval: rt.number,
+ }),
+ }),
+ integrations: rt.array(rt.string),
+ query: rt.string,
})
);
diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/public/components/logs_explorer_top_nav_menu.tsx b/x-pack/plugins/observability_solution/observability_logs_explorer/public/components/logs_explorer_top_nav_menu.tsx
index 0f64f586ab3fd..74c6347477ec6 100644
--- a/x-pack/plugins/observability_solution/observability_logs_explorer/public/components/logs_explorer_top_nav_menu.tsx
+++ b/x-pack/plugins/observability_solution/observability_logs_explorer/public/components/logs_explorer_top_nav_menu.tsx
@@ -70,15 +70,17 @@ const ServerlessTopNav = () => {
- {ObservabilityAIAssistantActionMenuItem ? (
-
- ) : null}
+ {ObservabilityAIAssistantActionMenuItem ? (
+
+
+
+ ) : null}
);
};
@@ -148,12 +150,14 @@ const StatefulTopNav = () => {
- {ObservabilityAIAssistantActionMenuItem ? (
-
- ) : null}
+ {ObservabilityAIAssistantActionMenuItem ? (
+
+
+
+ ) : null}
);
diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/public/plugin.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/public/plugin.ts
index c77ac6f534677..c5042590e6e01 100644
--- a/x-pack/plugins/observability_solution/observability_logs_explorer/public/plugin.ts
+++ b/x-pack/plugins/observability_solution/observability_logs_explorer/public/plugin.ts
@@ -19,6 +19,7 @@ import {
ObservabilityLogsExplorerLocators,
SingleDatasetLocatorDefinition,
} from '../common/locators';
+import { DataViewLocatorDefinition } from '../common/locators/data_view_locator';
import { type ObservabilityLogsExplorerConfig } from '../common/plugin_config';
import { logsExplorerAppTitle } from '../common/translations';
import type {
@@ -89,20 +90,26 @@ export class ObservabilityLogsExplorerPlugin
}
// Register Locators
- const singleDatasetLocator = share.url.locators.create(
- new SingleDatasetLocatorDefinition({
+ const allDatasetsLocator = share.url.locators.create(
+ new AllDatasetsLocatorDefinition({
useHash,
})
);
- const allDatasetsLocator = share.url.locators.create(
- new AllDatasetsLocatorDefinition({
+ const dataViewLocator = share.url.locators.create(
+ new DataViewLocatorDefinition({
+ useHash,
+ })
+ );
+ const singleDatasetLocator = share.url.locators.create(
+ new SingleDatasetLocatorDefinition({
useHash,
})
);
this.locators = {
- singleDatasetLocator,
allDatasetsLocator,
+ dataViewLocator,
+ singleDatasetLocator,
};
return {
diff --git a/x-pack/plugins/profiling/public/app.tsx b/x-pack/plugins/profiling/public/app.tsx
index e91c2eef4ec72..8600d4db602f2 100644
--- a/x-pack/plugins/profiling/public/app.tsx
+++ b/x-pack/plugins/profiling/public/app.tsx
@@ -8,6 +8,7 @@
import { AppMountParameters, CoreSetup, CoreStart } from '@kbn/core/public';
import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public';
import { Storage } from '@kbn/kibana-utils-plugin/public';
+import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
import { RouteRenderer, RouterProvider } from '@kbn/typed-react-router-config';
import React, { useMemo } from 'react';
@@ -25,6 +26,7 @@ import { ProfilingHeaderActionMenu } from './components/profiling_header_action_
import { RouterErrorBoundary } from './routing/router_error_boundary';
import { LicenseProvider } from './components/contexts/license/license_context';
import { ProfilingSetupStatusContextProvider } from './components/contexts/profiling_setup_status/profiling_setup_status_context';
+import { useProfilingDependencies } from './components/contexts/profiling_dependencies/use_profiling_dependencies';
interface Props {
profilingFetchServices: Services;
@@ -46,9 +48,24 @@ function MountProfilingActionMenu({
theme$: AppMountParameters['theme$'];
setHeaderActionMenu: AppMountParameters['setHeaderActionMenu'];
}) {
+ const {
+ start: {
+ observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem },
+ },
+ } = useProfilingDependencies();
+
return (
-
+
+
+
+
+ {ObservabilityAIAssistantActionMenuItem ? (
+
+
+
+ ) : null}
+
);
}
diff --git a/x-pack/plugins/profiling/public/components/profiling_header_action_menu.tsx b/x-pack/plugins/profiling/public/components/profiling_header_action_menu.tsx
index 5c0189a35c5f8..dc8d7123c9a58 100644
--- a/x-pack/plugins/profiling/public/components/profiling_header_action_menu.tsx
+++ b/x-pack/plugins/profiling/public/components/profiling_header_action_menu.tsx
@@ -19,16 +19,11 @@ import { useHistory } from 'react-router-dom';
import url from 'url';
import { useProfilingRouter } from '../hooks/use_profiling_router';
import { AddDataTabs } from '../views/add_data_view';
-import { useProfilingDependencies } from './contexts/profiling_dependencies/use_profiling_dependencies';
export function ProfilingHeaderActionMenu() {
const router = useProfilingRouter();
const history = useHistory();
- const {
- observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem },
- } = useProfilingDependencies().start;
-
return (
- {ObservabilityAIAssistantActionMenuItem ? : null}
);
}
diff --git a/x-pack/plugins/security/public/account_management/user_profile/user_profile.test.tsx b/x-pack/plugins/security/public/account_management/user_profile/user_profile.test.tsx
index aa8371ac46e32..a3327ba8ce89d 100644
--- a/x-pack/plugins/security/public/account_management/user_profile/user_profile.test.tsx
+++ b/x-pack/plugins/security/public/account_management/user_profile/user_profile.test.tsx
@@ -324,7 +324,7 @@ describe('useUserProfileForm', () => {
const data: UserProfileData = {};
const nonCloudUser = mockAuthenticatedUser({ elastic_cloud_user: false });
- coreStart.settings.client.get.mockReturnValue(true);
+ coreStart.theme.getTheme.mockReturnValue({ darkMode: true });
coreStart.settings.client.isOverridden.mockReturnValue(true);
const testWrapper = mount(
@@ -361,7 +361,7 @@ describe('useUserProfileForm', () => {
const data: UserProfileData = {};
const nonCloudUser = mockAuthenticatedUser({ elastic_cloud_user: false });
- coreStart.settings.client.get.mockReturnValue(false);
+ coreStart.theme.getTheme.mockReturnValue({ darkMode: false });
coreStart.settings.client.isOverridden.mockReturnValue(true);
const testWrapper = mount(
diff --git a/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx b/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx
index 601e13c8bb16e..c9ae85dcda634 100644
--- a/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx
+++ b/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx
@@ -34,7 +34,7 @@ import type { FunctionComponent } from 'react';
import React, { useRef, useState } from 'react';
import useUpdateEffect from 'react-use/lib/useUpdateEffect';
-import type { CoreStart, IUiSettingsClient } from '@kbn/core/public';
+import type { CoreStart, IUiSettingsClient, ThemeServiceStart } from '@kbn/core/public';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import { useKibana } from '@kbn/kibana-react-plugin/public';
@@ -656,7 +656,8 @@ export const UserProfile: FunctionComponent = ({ user, data })
const isCloudUser = user.elastic_cloud_user;
const { isThemeOverridden, isOverriddenThemeDarkMode } = determineIfThemeOverridden(
- services.settings.client
+ services.settings.client,
+ services.theme
);
const rightSideItems = [
@@ -998,12 +999,15 @@ export const SaveChangesBottomBar: FunctionComponent = () => {
);
};
-function determineIfThemeOverridden(settingsClient: IUiSettingsClient): {
+function determineIfThemeOverridden(
+ settingsClient: IUiSettingsClient,
+ theme: ThemeServiceStart
+): {
isThemeOverridden: boolean;
isOverriddenThemeDarkMode: boolean;
} {
return {
isThemeOverridden: settingsClient.isOverridden('theme:darkMode'),
- isOverriddenThemeDarkMode: settingsClient.get('theme:darkMode'),
+ isOverriddenThemeDarkMode: theme.getTheme().darkMode,
};
}
diff --git a/x-pack/plugins/security_solution/public/common/components/inspect/use_inspect.tsx b/x-pack/plugins/security_solution/public/common/components/inspect/use_inspect.tsx
index 23a81288908c1..d0f92dd0db144 100644
--- a/x-pack/plugins/security_solution/public/common/components/inspect/use_inspect.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/inspect/use_inspect.tsx
@@ -33,8 +33,8 @@ export const useInspect = ({
}: UseInspectModalProps) => {
const dispatch = useDispatch();
- const getGlobalQuery = inputsSelectors.globalQueryByIdSelector();
- const getTimelineQuery = inputsSelectors.timelineQueryByIdSelector();
+ const getGlobalQuery = useMemo(() => inputsSelectors.globalQueryByIdSelector(), []);
+ const getTimelineQuery = useMemo(() => inputsSelectors.timelineQueryByIdSelector(), []);
const { loading, inspect, selectedInspectIndex, isInspected, searchSessionId } =
useDeepEqualSelector((state) =>
inputId === InputsModelId.global
@@ -72,25 +72,43 @@ export const useInspect = ({
);
}, [onCloseInspect, dispatch, queryId, inputId, inspectIndex, searchSessionId]);
- let request: string | null = null;
- let additionalRequests: string[] | null = null;
- if (inspect != null && inspect.dsl.length > 0) {
+ const request = useMemo(() => {
+ if (inspect != null && inspect.dsl.length > 0) {
+ if (multiple) {
+ return inspect.dsl[0];
+ } else {
+ return inspect.dsl[inspectIndex];
+ }
+ }
+ return null;
+ }, [inspectIndex, multiple, inspect]);
+
+ const additionalRequests = useMemo(() => {
if (multiple) {
- [request, ...additionalRequests] = inspect.dsl;
+ return inspect?.dsl.slice(1);
} else {
- request = inspect.dsl[inspectIndex];
+ return null;
+ }
+ }, [multiple, inspect]);
+
+ const response = useMemo(() => {
+ if (inspect != null && inspect.response.length > 0) {
+ if (multiple) {
+ return inspect.response[0];
+ } else {
+ return inspect.response[inspectIndex];
+ }
}
- }
+ return null;
+ }, [inspectIndex, multiple, inspect]);
- let response: string | null = null;
- let additionalResponses: string[] | null = null;
- if (inspect != null && inspect.response.length > 0) {
+ const additionalResponses = useMemo(() => {
if (multiple) {
- [response, ...additionalResponses] = inspect.response;
+ return inspect?.response.slice(1);
} else {
- response = inspect.response[inspectIndex];
+ return null;
}
- }
+ }, [multiple, inspect]);
const isShowingModal = useMemo(
() => !loading && selectedInspectIndex === inspectIndex && isInspected,
diff --git a/x-pack/plugins/security_solution/public/common/components/page/use_refetch_by_session.tsx b/x-pack/plugins/security_solution/public/common/components/page/use_refetch_by_session.tsx
index 85ff4940f37b6..862014ba3e16e 100644
--- a/x-pack/plugins/security_solution/public/common/components/page/use_refetch_by_session.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/page/use_refetch_by_session.tsx
@@ -6,7 +6,7 @@
*/
import type { MutableRefObject } from 'react';
-import { useCallback, useRef } from 'react';
+import { useCallback, useRef, useMemo } from 'react';
import { useDispatch } from 'react-redux';
import type { ISessionService } from '@kbn/data-plugin/public';
import { useDeepEqualSelector } from '../../hooks/use_selector';
@@ -36,8 +36,8 @@ export const useRefetchByRestartingSession = ({
const session = useRef(data.search.session);
- const getGlobalQuery = inputsSelectors.globalQueryByIdSelector();
- const getTimelineQuery = inputsSelectors.timelineQueryByIdSelector();
+ const getGlobalQuery = useMemo(() => inputsSelectors.globalQueryByIdSelector(), []);
+ const getTimelineQuery = useMemo(() => inputsSelectors.timelineQueryByIdSelector(), []);
const { selectedInspectIndex } = useDeepEqualSelector((state) =>
inputId === InputsModelId.global
? getGlobalQuery(state, queryId)
diff --git a/x-pack/plugins/security_solution/public/common/components/super_date_picker/index.tsx b/x-pack/plugins/security_solution/public/common/components/super_date_picker/index.tsx
index d37e0c0515ae9..c86cf9556741b 100644
--- a/x-pack/plugins/security_solution/public/common/components/super_date_picker/index.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/super_date_picker/index.tsx
@@ -87,6 +87,10 @@ interface OwnProps {
export type SuperDatePickerProps = OwnProps & PropsFromRedux;
+const refetchQuery = (newQueries: inputsModel.GlobalQuery[]) => {
+ newQueries.forEach((q) => q.refetch && (q.refetch as inputsModel.Refetch)());
+};
+
export const SuperDatePickerComponent = React.memo(
({
duration,
@@ -161,10 +165,6 @@ export const SuperDatePickerComponent = React.memo(
[fromStr, toStr, duration, policy, setDuration, id, stopAutoReload, startAutoReload, queries]
);
- const refetchQuery = (newQueries: inputsModel.GlobalQuery[]) => {
- newQueries.forEach((q) => q.refetch && (q.refetch as inputsModel.Refetch)());
- };
-
const onTimeChange = useCallback(
({ start: newStart, end: newEnd, isInvalid }: OnTimeChangeProps) => {
const isQuickSelection = newStart.includes('now') || newEnd.includes('now');
diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_actions.tsx b/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_actions.tsx
index 777b0d32306fa..c586fbe88ac02 100644
--- a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_actions.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_actions.tsx
@@ -67,7 +67,7 @@ export const AlertBulkActionsComponent = React.memo inputsSelectors.globalQuery(), []);
const globalQueries = useDeepEqualSelector(getGlobalQuerySelector);
const refetchQuery = useCallback(() => {
globalQueries.forEach((q) => q.refetch && (q.refetch as inputsModel.Refetch)());
diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_visualization_response.tsx b/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_visualization_response.tsx
index 601059cab2c2a..a9cabc5cf40f8 100644
--- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_visualization_response.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_visualization_response.tsx
@@ -13,7 +13,7 @@ import { inputsSelectors } from '../../store';
import type { VisualizationResponse } from './types';
export const useVisualizationResponse = ({ visualizationId }: { visualizationId: string }) => {
- const getGlobalQuery = inputsSelectors.globalQueryByIdSelector();
+ const getGlobalQuery = useMemo(() => inputsSelectors.globalQueryByIdSelector(), []);
const { inspect, loading, searchSessionId } = useDeepEqualSelector((state) =>
getGlobalQuery(state, visualizationId)
);
diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.tsx b/x-pack/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.tsx
index a5845b9bb0fc8..187cff890f1e8 100644
--- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.tsx
@@ -5,7 +5,7 @@
* 2.0.
*/
-import React, { useCallback, useEffect, useRef } from 'react';
+import React, { useCallback, useEffect, useRef, useMemo } from 'react';
import { useDispatch } from 'react-redux';
import { css } from 'styled-components';
import { ChartLabel } from '../../../overview/components/detection_response/alerts_by_status/chart_label';
@@ -38,7 +38,7 @@ const VisualizationEmbeddableComponent: React.FC =
const { indicesExist } = useSourcererDataView(lensProps.scopeId);
const memorizedTimerange = useRef(lensProps.timerange);
- const getGlobalQuery = inputsSelectors.globalQueryByIdSelector();
+ const getGlobalQuery = useMemo(() => inputsSelectors.globalQueryByIdSelector(), []);
const { searchSessionId } = useDeepEqualSelector((state) => getGlobalQuery(state, id));
const { responses: visualizationData } = useVisualizationResponse({ visualizationId: id });
const dataExists = visualizationData != null && visualizationData[0]?.hits?.total !== 0;
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/json_diff.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/json_diff.test.tsx
new file mode 100644
index 0000000000000..84779ccb91b00
--- /dev/null
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/json_diff.test.tsx
@@ -0,0 +1,332 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React from 'react';
+import { EuiThemeProvider } from '@elastic/eui';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { uniq, sortBy, isEqual } from 'lodash';
+
+import { RuleDiffTab } from '../rule_diff_tab';
+import { savedRuleMock } from '../../../logic/mock';
+import type { RuleResponse } from '../../../../../../common/api/detection_engine/model/rule_schema/rule_schemas.gen';
+import { COLORS } from './constants';
+
+/*
+ Finds an element with a text content that exactly matches the passed argument.
+ Handly because React Testing Library's doesn't provide an easy way to search by
+ text if the text is split into multiple DOM elements.
+*/
+function findChildByTextContent(parent: Element, textContent: string): HTMLElement {
+ return Array.from(parent.querySelectorAll('*')).find(
+ (childElement) => childElement.textContent === textContent
+ ) as HTMLElement;
+}
+
+/*
+ Finds a diff line element (".diff-line") that contains a particular text content.
+ Match doesn't have to be exact, it's enough for the line to include the text.
+*/
+function findDiffLineContaining(text: string): Element | null {
+ const foundLine = Array.from(document.querySelectorAll('.diff-line')).find((element) =>
+ (element.textContent || '').includes(text)
+ );
+
+ return foundLine || null;
+}
+
+describe('Rule upgrade workflow: viewing rule changes in JSON diff view', () => {
+ it.each(['light', 'dark'] as const)(
+ 'User can see precisely how property values would change after upgrade - %s theme',
+ (colorMode) => {
+ const oldRule: RuleResponse = {
+ ...savedRuleMock,
+ };
+
+ const newRule: RuleResponse = {
+ ...savedRuleMock,
+ };
+
+ /* Changes to test line update */
+ oldRule.version = 1;
+ newRule.version = 2;
+
+ /* Changes to test line removal */
+ oldRule.author = ['Alice', 'Bob', 'Charlie'];
+ newRule.author = ['Alice', 'Charlie'];
+
+ /* Changes to test line addition */
+ delete oldRule.license;
+ newRule.license = 'GPLv3';
+
+ const ThemeWrapper: React.FC<{}> = ({ children }) => (
+ {children}
+ );
+
+ const { container } = render(, {
+ wrapper: ThemeWrapper,
+ });
+
+ /* LINE UPDATE */
+ const updatedLine = findChildByTextContent(container, '- "version": 1+ "version": 2');
+
+ const updatedLineBefore = findChildByTextContent(updatedLine, ' "version": 1');
+ expect(updatedLineBefore).toHaveStyle(
+ `background: ${COLORS[colorMode].lineBackground.deletion}`
+ );
+
+ const updatedWordBefore = findChildByTextContent(updatedLineBefore, '1');
+ expect(updatedWordBefore).toHaveStyle(
+ `background: ${COLORS[colorMode].characterBackground.deletion}`
+ );
+
+ const updatedLineAfter = findChildByTextContent(updatedLine, ' "version": 2');
+ expect(updatedLineAfter).toHaveStyle(
+ `background: ${COLORS[colorMode].lineBackground.insertion}`
+ );
+
+ const updatedWordAfter = findChildByTextContent(updatedLineAfter, '2');
+ expect(updatedWordAfter).toHaveStyle(
+ `background: ${COLORS[colorMode].characterBackground.insertion}`
+ );
+
+ /* LINE REMOVAL */
+ const removedLine = findChildByTextContent(container, '- "Bob",');
+
+ const removedLineBefore = findChildByTextContent(removedLine, ' "Bob",');
+ expect(removedLineBefore).toHaveStyle(
+ `background: ${COLORS[colorMode].lineBackground.deletion}`
+ );
+
+ const removedLineAfter = findChildByTextContent(removedLine, '');
+ expect(window.getComputedStyle(removedLineAfter).backgroundColor).toBe('');
+
+ /* LINE ADDITION */
+ const addedLine = findChildByTextContent(container, '+ "license": "GPLv3",');
+
+ const addedLineBefore = findChildByTextContent(addedLine, '');
+ expect(window.getComputedStyle(addedLineBefore).backgroundColor).toBe('');
+
+ const addedLineAfter = findChildByTextContent(addedLine, ' "license": "GPLv3",');
+ expect(addedLineAfter).toHaveStyle(
+ `background: ${COLORS[colorMode].lineBackground.insertion}`
+ );
+ }
+ );
+
+ it('Rule actions and exception lists should not be shown as modified', () => {
+ const testAction = {
+ group: 'default',
+ id: 'my-action-id',
+ params: { body: '{"test": true}' },
+ action_type_id: '.webhook',
+ uuid: '1ef8f105-7d0d-434c-9ba1-2e053edddea8',
+ frequency: {
+ summary: true,
+ notifyWhen: 'onActiveAlert',
+ throttle: null,
+ },
+ } as const;
+
+ const testExceptionListItem = {
+ id: 'acbbbd86-7973-40a4-bc83-9e926c7f1e59',
+ list_id: '1e51e9b9-b7c0-4a11-8785-55f740b9938a',
+ type: 'rule_default',
+ namespace_type: 'single',
+ } as const;
+
+ const oldRule: RuleResponse = {
+ ...savedRuleMock,
+ version: 1,
+ actions: [testAction],
+ };
+
+ const newRule: RuleResponse = {
+ ...savedRuleMock,
+ version: 2,
+ };
+
+ /* Case: rule update doesn't have "actions" or "exception_list" properties */
+ const { rerender } = render();
+ expect(screen.queryAllByText('"actions":', { exact: false })).toHaveLength(0);
+
+ /* Case: rule update has "actions" and "exception_list" equal to empty arrays */
+ rerender(
+
+ );
+ expect(screen.queryAllByText('"actions":', { exact: false })).toHaveLength(0);
+
+ /* Case: rule update has an action and an exception list item */
+ rerender(
+
+ );
+ expect(screen.queryAllByText('"actions":', { exact: false })).toHaveLength(0);
+ });
+
+ describe('Technical properties should not be included in preview', () => {
+ it.each(['revision', 'created_at', 'created_by', 'updated_at', 'updated_by'])(
+ 'Should not include "%s" in preview',
+ (property) => {
+ const oldRule: RuleResponse = {
+ ...savedRuleMock,
+ version: 1,
+ revision: 100,
+ created_at: '12/31/2023T23:59:000z',
+ created_by: 'mockUserOne',
+ updated_at: '01/01/2024T00:00:000z',
+ updated_by: 'mockUserTwo',
+ };
+
+ const newRule: RuleResponse = {
+ ...savedRuleMock,
+ version: 2,
+ revision: 1,
+ created_at: '12/31/2023T23:59:999z',
+ created_by: 'mockUserOne',
+ updated_at: '02/02/2024T00:00:001z',
+ updated_by: 'mockUserThree',
+ };
+
+ render();
+ expect(screen.queryAllByText(property, { exact: false })).toHaveLength(0);
+ }
+ );
+ });
+
+ it('Properties with semantically equal values should not be shown as modified', () => {
+ const oldRule: RuleResponse = {
+ ...savedRuleMock,
+ version: 1,
+ };
+
+ const newRule: RuleResponse = {
+ ...savedRuleMock,
+ version: 2,
+ };
+
+ /* DURATION */
+ /* Semantically equal durations should not be shown as modified */
+ const { rerender } = render(
+
+ );
+ expect(findDiffLineContaining('"from":')).toBeNull();
+
+ rerender(
+
+ );
+ expect(findDiffLineContaining('"from":')).toBeNull();
+
+ rerender(
+
+ );
+ expect(findDiffLineContaining('"from":')).toBeNull();
+
+ /* Semantically different durations should generate diff */
+ rerender(
+
+ );
+ expect(findDiffLineContaining('- "from": "now-7260s",+ "from": "now-7200s",')).not.toBeNull();
+
+ /* NOTE - Investigation guide */
+ rerender();
+ expect(findDiffLineContaining('"note":')).toBeNull();
+
+ rerender(
+
+ );
+ expect(findDiffLineContaining('"note":')).toBeNull();
+
+ rerender();
+ expect(findDiffLineContaining('"note":')).toBeNull();
+
+ rerender();
+ expect(findDiffLineContaining('- "note": "",+ "note": "abc",')).not.toBeNull();
+ });
+
+ it('Unchanged sections of a rule should be hidden by default', () => {
+ const oldRule: RuleResponse = {
+ ...savedRuleMock,
+ version: 1,
+ };
+
+ const newRule: RuleResponse = {
+ ...savedRuleMock,
+ version: 2,
+ };
+
+ render();
+ expect(screen.queryAllByText('"author":', { exact: false })).toHaveLength(0);
+ expect(screen.queryAllByText('Expand 44 unchanged lines')).toHaveLength(1);
+
+ userEvent.click(screen.getByText('Expand 44 unchanged lines'));
+
+ expect(screen.queryAllByText('Expand 44 unchanged lines')).toHaveLength(0);
+ expect(screen.queryAllByText('"author":', { exact: false })).toHaveLength(2);
+ });
+
+ it('Properties should be sorted alphabetically', () => {
+ const oldRule: RuleResponse = {
+ ...savedRuleMock,
+ version: 1,
+ };
+
+ const newRule: RuleResponse = {
+ ...savedRuleMock,
+ version: 2,
+ };
+
+ function checkRenderedPropertyNamesAreSorted(): boolean {
+ /* Find all lines which contain property names in the diff */
+ const matchedElements = screen.queryAllByText(/\s".*?":/, { trim: false });
+
+ /* Extract property names from the matched elements */
+ const propertyNames = matchedElements.map((element) => {
+ const matches = element.textContent?.match(/\s"(.*?)":/);
+ return matches ? matches[1] : '';
+ });
+
+ /* Remove duplicates */
+ const uniquePropertyNames = uniq(propertyNames);
+
+ /* Check that displayed property names are sorted alphabetically */
+ const isArraySortedAlphabetically = (array: string[]): boolean =>
+ isEqual(array, sortBy(array));
+
+ return isArraySortedAlphabetically(uniquePropertyNames);
+ }
+
+ render();
+ const arePropertiesSortedInConciseView = checkRenderedPropertyNamesAreSorted();
+ expect(arePropertiesSortedInConciseView).toBe(true);
+
+ userEvent.click(screen.getByText('Expand 44 unchanged lines'));
+ const arePropertiesSortedInExpandedView = checkRenderedPropertyNamesAreSorted();
+ expect(arePropertiesSortedInExpandedView).toBe(true);
+ });
+});
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.styles.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.styles.ts
new file mode 100644
index 0000000000000..30439722cd18b
--- /dev/null
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.styles.ts
@@ -0,0 +1,45 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { useEuiTheme } from '@elastic/eui';
+import { css } from '@emotion/css';
+import { useMemo } from 'react';
+
+export const useFiltersStyles = () => {
+ return useMemo(
+ () => ({
+ flexGroup: css`
+ max-width: 600px;
+ `,
+ }),
+ []
+ );
+};
+
+export const useQueryStyles = () => {
+ return useMemo(
+ () => ({
+ content: css`
+ white-space: pre-wrap;
+ `,
+ }),
+ []
+ );
+};
+
+export const useRequiredFieldsStyles = () => {
+ const { euiTheme } = useEuiTheme();
+ return useMemo(
+ () => ({
+ fieldTypeText: css({
+ fontFamily: euiTheme.font.familyCode,
+ display: 'inline',
+ }),
+ }),
+ [euiTheme.font.familyCode]
+ );
+};
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx
index 601432513fbb8..56781726317fa 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx
@@ -7,7 +7,6 @@
import React from 'react';
import { isEmpty } from 'lodash/fp';
-import styled from 'styled-components';
import {
EuiDescriptionList,
EuiText,
@@ -15,7 +14,6 @@ import {
EuiFlexItem,
EuiFlexGroup,
EuiLoadingSpinner,
- EuiBadge,
} from '@elastic/eui';
import type { EuiDescriptionListProps } from '@elastic/eui';
import type {
@@ -25,9 +23,10 @@ import type {
import type { Filter } from '@kbn/es-query';
import type { SavedQuery } from '@kbn/data-plugin/public';
import { mapAndFlattenFilters } from '@kbn/data-plugin/public';
+import type { DataView } from '@kbn/data-views-plugin/public';
import { FieldIcon } from '@kbn/react-field';
import { castEsToKbnFieldTypeName } from '@kbn/field-types';
-import { FilterBadgeGroup } from '@kbn/unified-search-plugin/public';
+import { FilterItems } from '@kbn/unified-search-plugin/public';
import type {
AlertSuppressionMissingFieldsStrategy,
RequiredFieldArray,
@@ -55,6 +54,11 @@ import { BadgeList } from './badge_list';
import { DEFAULT_DESCRIPTION_LIST_COLUMN_WIDTHS } from './constants';
import * as i18n from './translations';
import { useAlertSuppression } from '../../logic/use_alert_suppression';
+import {
+ useFiltersStyles,
+ useQueryStyles,
+ useRequiredFieldsStyles,
+} from './rule_definition_section.styles';
interface SavedQueryNameProps {
savedQueryName: string;
@@ -66,12 +70,6 @@ const SavedQueryName = ({ savedQueryName }: SavedQueryNameProps) => (
);
-const EuiBadgeWrap = styled(EuiBadge)`
- .euiBadge__text {
- white-space: pre-wrap !important;
- }
-`;
-
interface FiltersProps {
filters: Filter[];
dataViewId?: string;
@@ -80,51 +78,42 @@ interface FiltersProps {
}
const Filters = ({ filters, dataViewId, index, 'data-test-subj': dataTestSubj }: FiltersProps) => {
+ const flattenedFilters = mapAndFlattenFilters(filters);
+
const { indexPattern } = useRuleIndexPattern({
dataSourceType: dataViewId ? DataSourceType.DataView : DataSourceType.IndexPatterns,
index: index ?? [],
dataViewId,
});
- const flattenedFilters = mapAndFlattenFilters(filters);
+ const styles = useFiltersStyles();
return (
-
- {flattenedFilters.map((filter, idx) => {
- const displayContent = filter.meta.alias ? (
- filter.meta.alias
- ) : (
-
- );
- return (
-
-
- {indexPattern != null ? displayContent : }
-
-
- );
- })}
+
+
);
};
-const QueryContent = styled.div`
- white-space: pre-wrap;
-`;
-
interface QueryProps {
query: string;
'data-test-subj'?: string;
}
-const Query = ({ query, 'data-test-subj': dataTestSubj = 'query' }: QueryProps) => (
- {query}
-);
+const Query = ({ query, 'data-test-subj': dataTestSubj = 'query' }: QueryProps) => {
+ const styles = useQueryStyles();
+ return (
+
+ {query}
+
+ );
+};
interface IndexProps {
index: string[];
@@ -260,42 +249,40 @@ const RuleType = ({ type }: RuleTypeProps) => (
{getRuleTypeDescription(type)}
);
-const StyledFieldTypeText = styled(EuiText)`
- font-size: ${({ theme }) => theme.eui.euiFontSizeXS};
- font-family: ${({ theme }) => theme.eui.euiCodeFontFamily};
- display: inline;
-`;
-
interface RequiredFieldsProps {
requiredFields: RequiredFieldArray;
}
-const RequiredFields = ({ requiredFields }: RequiredFieldsProps) => (
-
- {requiredFields.map((rF, index) => (
-
-
-
-
-
-
-
- {` ${rF.name}${index + 1 !== requiredFields.length ? ', ' : ''}`}
-
-
-
-
- ))}
-
-);
+const RequiredFields = ({ requiredFields }: RequiredFieldsProps) => {
+ const styles = useRequiredFieldsStyles();
+ return (
+
+ {requiredFields.map((rF, index) => (
+
+
+
+
+
+
+
+ {` ${rF.name}${index + 1 !== requiredFields.length ? ', ' : ''}`}
+
+
+
+
+ ))}
+
+ );
+};
interface TimelineTitleProps {
timelineTitle: string;
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_diff_tab.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_diff_tab.tsx
index 52277d1cbad15..b22fc1b73bbe6 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_diff_tab.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_diff_tab.tsx
@@ -48,6 +48,15 @@ const HIDDEN_PROPERTIES = [
and will therefore always show a diff. It adds no value to display it to the user.
*/
'updated_at',
+
+ /*
+ These values make sense only for installed prebuilt rules.
+ They are not present in the prebuilt rule package.
+ So, showing them in the diff doesn't add value.
+ */
+ 'updated_by',
+ 'created_at',
+ 'created_by',
];
const sortAndStringifyJson = (jsObject: Record): string =>
diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx
index 3382a94d6c70c..db2562f4a3b8a 100644
--- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx
+++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx
@@ -116,8 +116,8 @@ const GroupedAlertsTableComponent: React.FC = (props)
onOptionsChange,
tracker: track,
});
-
- const groupInRedux = useDeepEqualSelector((state) => groupIdSelector()(state, props.tableId));
+ const groupId = useMemo(() => groupIdSelector(), []);
+ const groupInRedux = useDeepEqualSelector((state) => groupId(state, props.tableId));
useEffect(() => {
// only ever set to `none` - siem only handles group selector when `none` is selected
if (isNoneGroup(selectedGroups)) {
diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_take_action_items.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_take_action_items.tsx
index 655faae1e3efa..6a7b11ee0e192 100644
--- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_take_action_items.tsx
+++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_take_action_items.tsx
@@ -42,7 +42,7 @@ export const useGroupTakeActionsItems = ({
}: TakeActionsProps) => {
const { addSuccess, addError, addWarning } = useAppToasts();
const { startTransaction } = useStartTransaction();
- const getGlobalQuerySelector = inputsSelectors.globalQuery();
+ const getGlobalQuerySelector = useMemo(() => inputsSelectors.globalQuery(), []);
const globalQueries = useDeepEqualSelector(getGlobalQuerySelector);
const refetchQuery = useCallback(() => {
globalQueries.forEach((q) => q.refetch && (q.refetch as inputsModel.Refetch)());
diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx
index c5c5b95abbccd..2aa984314bd78 100644
--- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx
+++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx
@@ -144,11 +144,10 @@ const AlertContextMenuComponent: React.FC = ({
);
}, [disabled, onButtonClick, ariaLabel, isPopoverOpen]);
- const refetchQuery = (newQueries: inputsModel.GlobalQuery[]) => {
- newQueries.forEach((q) => q.refetch && (q.refetch as inputsModel.Refetch)());
- };
-
const refetchAll = useCallback(() => {
+ const refetchQuery = (newQueries: inputsModel.GlobalQuery[]) => {
+ newQueries.forEach((q) => q.refetch && (q.refetch as inputsModel.Refetch)());
+ };
if (isActiveTimeline(scopeId ?? '')) {
refetchQuery([timelineQuery]);
} else {
diff --git a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_bulk_actions.tsx b/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_bulk_actions.tsx
index d468f5b05d869..0ea04d0df93f2 100644
--- a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_bulk_actions.tsx
+++ b/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_bulk_actions.tsx
@@ -10,7 +10,7 @@ import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/type
import type { SerializableRecord } from '@kbn/utility-types';
import { isEqual } from 'lodash';
import type { Filter } from '@kbn/es-query';
-import { useCallback } from 'react';
+import { useCallback, useMemo } from 'react';
import type { TableId } from '@kbn/securitysolution-data-table';
import { useBulkAlertAssigneesItems } from '../../../common/components/toolbar/bulk_actions/use_bulk_alert_assignees_items';
import { useBulkAlertTagsItems } from '../../../common/components/toolbar/bulk_actions/use_bulk_alert_tags_items';
@@ -65,7 +65,7 @@ export const getBulkActionHook =
(query) => {
const { from, to } = useGlobalTime();
const filters = getFiltersForDSLQuery(query);
- const getGlobalQueries = inputsSelectors.globalQuery();
+ const getGlobalQueries = useMemo(() => inputsSelectors.globalQuery(), []);
const globalQuery = useShallowEqualSelector((state: State) => getGlobalQueries(state));
diff --git a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_persistent_controls.tsx b/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_persistent_controls.tsx
index 24671d8bebdae..4f4db100f0d05 100644
--- a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_persistent_controls.tsx
+++ b/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_persistent_controls.tsx
@@ -36,7 +36,8 @@ export const getPersistentControlsHook = (tableId: TableId) => {
} = useKibana();
const { indexPattern } = useSourcererDataView(SourcererScopeName.detections);
- const { options } = useDeepEqualSelector((state) => groupIdSelector()(state, tableId)) ?? {
+ const groupId = useMemo(() => groupIdSelector(), []);
+ const { options } = useDeepEqualSelector((state) => groupId(state, tableId)) ?? {
options: [],
};
diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_asset_criticality_privileges.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_asset_criticality_privileges.ts
deleted file mode 100644
index afed24ac49e63..0000000000000
--- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_asset_criticality_privileges.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-import { useQuery } from '@tanstack/react-query';
-import { useEntityAnalyticsRoutes } from '../api';
-
-export const useAssetCriticalityPrivileges = () => {
- const { fetchAssetCriticalityPrivileges } = useEntityAnalyticsRoutes();
- return useQuery(['GET', 'FETCH_ASSET_CRITICALITY_PRIVILEGES'], fetchAssetCriticalityPrivileges);
-};
diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.test.ts b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.test.ts
new file mode 100644
index 0000000000000..36fd7be746393
--- /dev/null
+++ b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.test.ts
@@ -0,0 +1,64 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { renderQuery } from '../../../management/hooks/test_utils';
+import { useAssetCriticalityPrivileges } from './use_asset_criticality';
+
+const mockFetchAssetCriticalityPrivileges = jest.fn().mockResolvedValue({});
+jest.mock('../../api/api', () => ({
+ useEntityAnalyticsRoutes: () => ({
+ fetchAssetCriticalityPrivileges: mockFetchAssetCriticalityPrivileges,
+ }),
+}));
+
+const mockUseHasSecurityCapability = jest.fn().mockReturnValue(false);
+jest.mock('../../../helper_hooks', () => ({
+ useHasSecurityCapability: () => mockUseHasSecurityCapability(),
+}));
+
+const mockUseUiSettings = jest.fn().mockReturnValue([false]);
+jest.mock('@kbn/kibana-react-plugin/public', () => {
+ const original = jest.requireActual('@kbn/kibana-react-plugin/public');
+
+ return {
+ ...original,
+ useUiSetting$: () => mockUseUiSettings(),
+ };
+});
+
+describe('useAssetCriticality', () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it('does not call privileges API when hasEntityAnalyticsCapability is false', async () => {
+ mockUseHasSecurityCapability.mockReturnValue(false);
+ mockUseUiSettings.mockReturnValue([true]);
+
+ await renderQuery(() => useAssetCriticalityPrivileges('test_entity_name'), 'isSuccess');
+
+ expect(mockFetchAssetCriticalityPrivileges).not.toHaveBeenCalled();
+ });
+
+ it('calls privileges API when hasEntityAnalyticsCapability and UiSettings are enabled', async () => {
+ mockUseHasSecurityCapability.mockReturnValue(true);
+ mockUseUiSettings.mockReturnValue([true]);
+
+ await renderQuery(() => useAssetCriticalityPrivileges('test_entity_name'), 'isSuccess');
+
+ expect(mockFetchAssetCriticalityPrivileges).toHaveBeenCalled();
+ });
+
+ it('does not call privileges API when UI Settings is disabled', async () => {
+ mockUseHasSecurityCapability.mockReturnValue(true);
+ mockUseUiSettings.mockReturnValue([false]);
+
+ await renderQuery(() => useAssetCriticalityPrivileges('test_entity_name'), 'isSuccess');
+
+ expect(mockFetchAssetCriticalityPrivileges).not.toHaveBeenCalled();
+ });
+});
diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.ts b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.ts
index 1d43ec6dacde4..b8f1176a5eb5c 100644
--- a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.ts
+++ b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.ts
@@ -7,6 +7,9 @@
import type { UseMutationResult, UseQueryResult } from '@tanstack/react-query';
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
+import { useUiSetting$ } from '@kbn/kibana-react-plugin/public';
+import { ENABLE_ASSET_CRITICALITY_SETTING } from '../../../../common/constants';
+import { useHasSecurityCapability } from '../../../helper_hooks';
import type { AssetCriticalityRecord } from '../../../../common/api/entity_analytics/asset_criticality';
import type { EntityAnalyticsPrivileges } from '../../../../common/api/entity_analytics/common';
import type { AssetCriticality } from '../../api/api';
@@ -15,14 +18,24 @@ import { useEntityAnalyticsRoutes } from '../../api/api';
const ASSET_CRITICALITY_KEY = 'ASSET_CRITICALITY';
const PRIVILEGES_KEY = 'PRIVILEGES';
+const nonAuthorizedResponse: Promise = Promise.resolve({
+ has_all_required: false,
+ privileges: {
+ elasticsearch: {},
+ },
+});
+
export const useAssetCriticalityPrivileges = (
entityName: string
): UseQueryResult => {
const { fetchAssetCriticalityPrivileges } = useEntityAnalyticsRoutes();
+ const hasEntityAnalyticsCapability = useHasSecurityCapability('entity-analytics');
+ const [isAssetCriticalityEnabled] = useUiSetting$(ENABLE_ASSET_CRITICALITY_SETTING);
+ const isEnabled = isAssetCriticalityEnabled && hasEntityAnalyticsCapability;
return useQuery({
- queryKey: [ASSET_CRITICALITY_KEY, PRIVILEGES_KEY, entityName],
- queryFn: fetchAssetCriticalityPrivileges,
+ queryKey: [ASSET_CRITICALITY_KEY, PRIVILEGES_KEY, entityName, isEnabled],
+ queryFn: isEnabled ? fetchAssetCriticalityPrivileges : () => nonAuthorizedResponse,
});
};
diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/index.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/index.tsx
index 9a251b87fc187..a73fd2e57dc4e 100644
--- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/index.tsx
+++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/index.tsx
@@ -6,7 +6,9 @@
*/
import { Routes, Route } from '@kbn/shared-ux-router';
-import React, { memo } from 'react';
+import React, { memo, useEffect } from 'react';
+import { useDispatch } from 'react-redux';
+import type { EndpointAction } from './store/action';
import { EndpointList } from './view';
import { MANAGEMENT_ROUTING_ENDPOINTS_PATH } from '../../common/constants';
import { NotFoundPage } from '../../../app/404';
@@ -15,6 +17,12 @@ import { NotFoundPage } from '../../../app/404';
* Provides the routing container for the hosts related views
*/
export const EndpointsContainer = memo(() => {
+ const dispatch = useDispatch<(a: EndpointAction) => void>();
+
+ useEffect(() => {
+ return () => dispatch({ type: 'serverFinishedInitialization', payload: false });
+ }, [dispatch]);
+
return (
diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts
index 73461d1665542..5837578063526 100644
--- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts
+++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts
@@ -78,6 +78,11 @@ export interface ServerReturnedEndpointAgentPolicies {
payload: EndpointState['agentPolicies'];
}
+export interface ServerFinishedInitialization {
+ type: 'serverFinishedInitialization';
+ payload: boolean;
+}
+
export interface ServerReturnedEndpointExistValue {
type: 'serverReturnedEndpointExistValue';
payload: boolean;
@@ -170,4 +175,5 @@ export type EndpointAction =
| EndpointIsolationRequestStateChange
| EndpointPendingActionsStateChanged
| LoadMetadataTransformStats
- | MetadataTransformStatsChanged;
+ | MetadataTransformStatsChanged
+ | ServerFinishedInitialization;
diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/builders.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/builders.ts
index 260cb90ed172f..fe8255960dea4 100644
--- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/builders.ts
+++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/builders.ts
@@ -43,5 +43,6 @@ export const initialEndpointPageState = (): Immutable => {
isolationRequestState: createUninitialisedResourceState(),
endpointPendingActions: createLoadedResourceState(new Map()),
metadataTransformStats: createUninitialisedResourceState(),
+ isInitialized: false,
};
};
diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/index.test.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/index.test.ts
index 5cefbe2fa5588..dd81b3d2759a3 100644
--- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/index.test.ts
+++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/index.test.ts
@@ -42,6 +42,7 @@ describe('EndpointList store concerns', () => {
test('it creates default state', () => {
expect(store.getState()).toEqual({
hosts: [],
+ isInitialized: false,
pageSize: 10,
pageIndex: 0,
sortField: ENDPOINT_DEFAULT_SORT_FIELD,
diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts
index c3572b38d40ea..bf3e14a5fe68b 100644
--- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts
+++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts
@@ -416,6 +416,10 @@ async function endpointListMiddleware({
// so we check first if endpoints actually do exist before pulling in data for the onboarding
// messages.
if (await doEndpointsExist(http)) {
+ dispatch({
+ type: 'serverFinishedInitialization',
+ payload: true,
+ });
return;
}
@@ -455,6 +459,11 @@ async function endpointListMiddleware({
payload: true,
});
}
+
+ dispatch({
+ type: 'serverFinishedInitialization',
+ payload: true,
+ });
}
export async function handleLoadMetadataTransformStats(http: HttpStart, store: EndpointPageStore) {
diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/reducer.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/reducer.ts
index de1bb7b834e0f..dab1961ac0e8e 100644
--- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/reducer.ts
+++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/reducer.ts
@@ -138,6 +138,11 @@ export const endpointListReducer: StateReducer = (state = initialEndpointPageSta
...state,
policyItemsLoading: false,
};
+ } else if (action.type === 'serverFinishedInitialization') {
+ return {
+ ...state,
+ isInitialized: action.payload,
+ };
} else if (action.type === 'endpointPackageInfoStateChanged') {
return handleEndpointPackageInfoStateChanged(state, action);
} else if (action.type === 'serverReturnedEndpointExistValue') {
diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts
index c33407b36515d..612c7f770dffa 100644
--- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts
+++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts
@@ -55,6 +55,8 @@ export const policyItems = (state: Immutable) => state.policyItem
export const policyItemsLoading = (state: Immutable) => state.policyItemsLoading;
+export const isInitialized = (state: Immutable) => state.isInitialized;
+
export const selectedPolicyId = (state: Immutable) => state.selectedPolicyId;
export const endpointPackageInfo = (state: Immutable) => state.endpointPackageInfo;
export const getIsEndpointPackageInfoUninitialized: (state: Immutable) => boolean =
diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts
index 0528c8a5ad572..dddccede82536 100644
--- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts
+++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts
@@ -79,6 +79,7 @@ export interface EndpointState {
endpointPendingActions: AsyncResourceState;
// Metadata transform stats to checking transform state
metadataTransformStats: AsyncResourceState;
+ isInitialized: boolean;
}
export type AgentIdsPendingActions = Map;
diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx
index 0c9d989ad0571..4fc2757b9f10d 100644
--- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx
+++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx
@@ -748,6 +748,8 @@ describe('when on the endpoint list page', () => {
});
const renderResult = await render();
+ await middlewareSpy.waitForAction('serverFinishedInitialization');
+
const detailsTab = renderResult.getByTestId('endpoint-details-flyout-tab-details');
const activityLogTab = renderResult.queryByTestId(
'endpoint-details-flyout-tab-activity_log'
@@ -846,6 +848,8 @@ describe('when on the endpoint list page', () => {
history.push(`${MANAGEMENT_PATH}/endpoints?selected_endpoint=1&show=isolate`);
});
renderResult = render();
+ await middlewareSpy.waitForAction('serverFinishedInitialization');
+
// Need to reset `http.post` and adjust it so that the mock for http host
// isolation api does not output error noise to the console
coreStart.http.post.mockReset();
diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx
index b1e8b4925a2c2..d049eb6ab9e57 100644
--- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx
+++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx
@@ -10,6 +10,8 @@ import styled from 'styled-components';
import type { CriteriaWithPagination } from '@elastic/eui';
import {
EuiBasicTable,
+ EuiEmptyPrompt,
+ EuiLoadingLogo,
type EuiBasicTableColumn,
EuiFlexGroup,
EuiFlexItem,
@@ -360,6 +362,7 @@ export const EndpointList = () => {
isAutoRefreshEnabled,
patternsError,
metadataTransformStats,
+ isInitialized,
} = useEndpointSelector(selector);
const getHostPendingActions = useEndpointSelector(getEndpointPendingActionsCallback);
const {
@@ -550,15 +553,39 @@ export const EndpointList = () => {
);
const mutableListData = useMemo(() => [...listData], [listData]);
-
const renderTableOrEmptyState = useMemo(() => {
- if (endpointsExist) {
+ if (!isInitialized) {
+ return (
+
+ }
+ title={
+
+ {i18n.translate('xpack.securitySolution.endpoint.list.loadingEndpointManagement', {
+ defaultMessage: 'Loading Endpoint Management',
+ })}
+
+ }
+ />
+
+ );
+ } else if (listError) {
+ return (
+
+ {listError.error}}
+ body={{listError.message}
}
+ />
+
+ );
+ } else if (endpointsExist) {
return (
{
);
}
}, [
- canAccessFleet,
- canReadEndpointList,
- columns,
+ isInitialized,
+ listError,
endpointsExist,
- endpointPrivilegesLoading,
- handleCreatePolicyClick,
- handleDeployEndpointsClick,
- handleSelectableOnChange,
+ canReadEndpointList,
+ canAccessFleet,
+ policyItemsLoading,
hasPolicyData,
- listError?.message,
- loading,
mutableListData,
- onTableChange,
+ columns,
paginationSetup,
- policyItemsLoading,
- policyItems,
- selectedPolicyId,
+ onTableChange,
+ loading,
setTableRowProps,
sorting,
+ endpointPrivilegesLoading,
+ policyItems,
+ handleDeployEndpointsClick,
+ selectedPolicyId,
+ handleSelectableOnChange,
+ handleCreatePolicyClick,
]);
+ const hideHeader = !(endpointsExist && isInitialized && !listError);
+
return (
{
headerBackComponent={}
>
{hasSelectedEndpoint && }
- <>
-
-
- {shouldShowKQLBar && (
-
-
+ {isInitialized && !listError && (
+ <>
+
+
+ {shouldShowKQLBar && (
+
+
+
+ )}
+
+
+
+
- )}
-
-
-
-
-
-
-
- >
+
+
+ >
+ )}
{hasListData && (
<>
diff --git a/x-pack/plugins/security_solution/public/management/pages/index.tsx b/x-pack/plugins/security_solution/public/management/pages/index.tsx
index 942d34b2a0d1d..144ae26815f18 100644
--- a/x-pack/plugins/security_solution/public/management/pages/index.tsx
+++ b/x-pack/plugins/security_solution/public/management/pages/index.tsx
@@ -8,8 +8,10 @@
import React, { memo } from 'react';
import { Redirect } from 'react-router-dom';
import { Routes, Route } from '@kbn/shared-ux-router';
-import { EuiLoadingSpinner } from '@elastic/eui';
import { TrackApplicationView } from '@kbn/usage-collection-plugin/public';
+import { EuiEmptyPrompt, EuiLoadingLogo } from '@elastic/eui';
+import { i18n } from '@kbn/i18n';
+import { ManagementEmptyStateWrapper } from '../components/management_empty_state_wrapper';
import {
MANAGEMENT_ROUTING_ENDPOINTS_PATH,
MANAGEMENT_ROUTING_EVENT_FILTERS_PATH,
@@ -89,7 +91,23 @@ export const ManagementContainer = memo(() => {
// Lets wait until we can verify permissions
if (loading) {
- return ;
+ return (
+
+ }
+ title={
+
+ {i18n.translate(
+ 'xpack.securitySolution.endpoint.managementContainer.loadingEndpointManagement',
+ {
+ defaultMessage: 'Loading Endpoint Management',
+ }
+ )}
+
+ }
+ />
+
+ );
}
return (
diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts b/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts
index a9d97d96ee748..016a6e5b1b559 100644
--- a/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts
+++ b/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts
@@ -911,7 +911,7 @@ export const AdvancedPolicySchema: AdvancedPolicySchemaType[] = [
documentation: i18n.translate(
'xpack.securitySolution.endpoint.policy.advanced.windows.advanced.events.etw',
{
- defaultMessage: 'Enable collection of ETW events. Default: true',
+ defaultMessage: 'Deprecated.',
}
),
},
@@ -1578,4 +1578,15 @@ export const AdvancedPolicySchema: AdvancedPolicySchemaType[] = [
}
),
},
+ {
+ key: 'windows.advanced.events.process.creation_flags',
+ first_supported_version: '8.13.0',
+ documentation: i18n.translate(
+ 'xpack.securitySolution.endpoint.policy.advanced.windows.advanced.events.process.creation_flags',
+ {
+ defaultMessage:
+ 'Enables an additional enrichment for process events. Use this setting only for troubleshooting if process events are not functioning as expected. Default: true',
+ }
+ ),
+ },
];
diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/use_refetch_by_scope.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/use_refetch_by_scope.tsx
index efb7c19ba687f..96a416ed5691c 100644
--- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/use_refetch_by_scope.tsx
+++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/use_refetch_by_scope.tsx
@@ -5,7 +5,7 @@
* 2.0.
*/
-import { useCallback } from 'react';
+import { useCallback, useMemo } from 'react';
import { useDeepEqualSelector } from '../../../../../common/hooks/use_selector';
import { isActiveTimeline } from '../../../../../helpers';
import type { inputsModel } from '../../../../../common/store';
@@ -22,18 +22,17 @@ export interface UseRefetchScopeQueryParams {
* Hook to refetch data within specified scope
*/
export const useRefetchByScope = ({ scopeId }: UseRefetchScopeQueryParams) => {
- const getGlobalQueries = inputsSelectors.globalQuery();
- const getTimelineQuery = inputsSelectors.timelineQueryByIdSelector();
+ const getGlobalQueries = useMemo(() => inputsSelectors.globalQuery(), []);
+ const getTimelineQuery = useMemo(() => inputsSelectors.timelineQueryByIdSelector(), []);
const { globalQuery, timelineQuery } = useDeepEqualSelector((state) => ({
globalQuery: getGlobalQueries(state),
timelineQuery: getTimelineQuery(state, scopeId),
}));
- const refetchQuery = (newQueries: inputsModel.GlobalQuery[]) => {
- newQueries.forEach((q) => q.refetch && (q.refetch as inputsModel.Refetch)());
- };
-
const refetchAll = useCallback(() => {
+ const refetchQuery = (newQueries: inputsModel.GlobalQuery[]) => {
+ newQueries.forEach((q) => q.refetch && (q.refetch as inputsModel.Refetch)());
+ };
if (isActiveTimeline(scopeId)) {
refetchQuery([timelineQuery]);
} else {
diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/header/selectors.ts b/x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/header/selectors.ts
deleted file mode 100644
index 62c0134b96612..0000000000000
--- a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/header/selectors.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { createSelector } from 'reselect';
-
-import { timelineSelectors } from '../../../../store';
-
-export const getTimelineSaveModalByIdSelector = () =>
- createSelector(timelineSelectors.selectTimeline, (timeline) => ({
- showSaveModal: timeline?.showSaveModal ?? false,
- status: timeline?.status,
- }));
diff --git a/x-pack/plugins/serverless_search/server/plugin.ts b/x-pack/plugins/serverless_search/server/plugin.ts
index e533ae6023380..710191c13ce13 100644
--- a/x-pack/plugins/serverless_search/server/plugin.ts
+++ b/x-pack/plugins/serverless_search/server/plugin.ts
@@ -69,7 +69,7 @@ export class ServerlessSearchPlugin
await dataViewsService.createAndSave({
allowNoIndex: false,
name: 'default:all-data',
- title: '*',
+ title: '*,-.*',
id: 'default_all_data_id',
});
}
diff --git a/x-pack/plugins/synthetics/kibana.jsonc b/x-pack/plugins/synthetics/kibana.jsonc
index 9e85c2ec6c604..f76ac53a42455 100644
--- a/x-pack/plugins/synthetics/kibana.jsonc
+++ b/x-pack/plugins/synthetics/kibana.jsonc
@@ -33,7 +33,16 @@
"usageCollection",
"bfetch"
],
- "optionalPlugins": ["cloud", "data", "fleet", "home", "ml", "spaces", "telemetry"],
+ "optionalPlugins": [
+ "cloud",
+ "data",
+ "fleet",
+ "home",
+ "ml",
+ "serverless",
+ "spaces",
+ "telemetry"
+ ],
"requiredBundles": [
"data",
"fleet",
diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx
index 4f166211057ea..7054ff53fd4e8 100644
--- a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx
+++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx
@@ -8,13 +8,29 @@
import React from 'react';
import { HeaderMenuPortal } from '@kbn/observability-shared-plugin/public';
import { AppMountParameters } from '@kbn/core/public';
+import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
+import { useKibana } from '@kbn/kibana-react-plugin/public';
+import { ClientPluginsStart } from '../../../../../plugin';
import { ActionMenuContent } from './action_menu_content';
-export const ActionMenu = ({ appMountParameters }: { appMountParameters: AppMountParameters }) => (
-
-
-
-);
+export const ActionMenu = ({ appMountParameters }: { appMountParameters: AppMountParameters }) => {
+ const {
+ observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem },
+ } = useKibana().services;
+
+ return (
+
+
+
+
+
+
+
+ {ObservabilityAIAssistantActionMenuItem ? : null}
+
+
+ );
+};
diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx
index c9a0118815eca..090eeea83cc9c 100644
--- a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx
+++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx
@@ -13,7 +13,7 @@ import { useHistory, useRouteMatch } from 'react-router-dom';
import { createExploratoryViewUrl } from '@kbn/exploratory-view-plugin/public';
import { LastRefreshed } from '../components/last_refreshed';
import { AutoRefreshButton } from '../components/auto_refresh_button';
-import { useSyntheticsSettingsContext, useSyntheticsStartPlugins } from '../../../contexts';
+import { useSyntheticsSettingsContext } from '../../../contexts';
import { useGetUrlParams } from '../../../hooks';
import { MONITOR_ROUTE, SETTINGS_ROUTE } from '../../../../../../common/constants';
import { stringifyUrlParams } from '../../../utils/url_params';
@@ -32,8 +32,6 @@ const ANALYZE_MESSAGE = i18n.translate('xpack.synthetics.analyzeDataButtonLabel.
export function ActionMenuContent(): React.ReactElement {
const { basePath } = useSyntheticsSettingsContext();
- const { observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem } = {} } =
- useSyntheticsStartPlugins();
const params = useGetUrlParams();
const { dateRangeStart, dateRangeEnd } = params;
const history = useHistory();
@@ -106,9 +104,6 @@ export function ActionMenuContent(): React.ReactElement {
- {ObservabilityAIAssistantActionMenuItem && ObservabilityAIAssistantActionMenuItem ? (
-
- ) : null}
);
}
diff --git a/x-pack/plugins/synthetics/public/plugin.ts b/x-pack/plugins/synthetics/public/plugin.ts
index 9a65b9cd76148..6f87336a4daef 100644
--- a/x-pack/plugins/synthetics/public/plugin.ts
+++ b/x-pack/plugins/synthetics/public/plugin.ts
@@ -11,6 +11,7 @@ import {
Plugin,
PluginInitializerContext,
AppMountParameters,
+ PackageInfo,
} from '@kbn/core/public';
import { from } from 'rxjs';
import { map } from 'rxjs/operators';
@@ -53,6 +54,7 @@ import {
ObservabilityAIAssistantPluginStart,
ObservabilityAIAssistantPluginSetup,
} from '@kbn/observability-ai-assistant-plugin/public';
+import { ServerlessPluginSetup } from '@kbn/serverless/public';
import { PLUGIN } from '../common/constants/plugin';
import { OVERVIEW_ROUTE } from '../common/constants/ui';
import { locators } from './apps/locators';
@@ -69,6 +71,7 @@ export interface ClientPluginsSetup {
share: SharePluginSetup;
triggersActionsUi: TriggersAndActionsUIPublicPluginSetup;
cloud?: CloudSetup;
+ serverless?: ServerlessPluginSetup;
}
export interface ClientPluginsStart {
@@ -111,7 +114,11 @@ export type ClientStart = void;
export class UptimePlugin
implements Plugin
{
- constructor(private readonly initContext: PluginInitializerContext) {}
+ private readonly _packageInfo: Readonly;
+
+ constructor(private readonly initContext: PluginInitializerContext) {
+ this._packageInfo = initContext.env.packageInfo;
+ }
public setup(core: CoreSetup, plugins: ClientPluginsSetup): void {
locators.forEach((locator) => {
@@ -153,7 +160,7 @@ export class UptimePlugin
defaultMessage: 'Overview',
}),
path: '/',
- visibleIn: ['globalSearch', 'sideNav'],
+ visibleIn: this._isServerless ? ['globalSearch', 'sideNav'] : [],
},
{
id: 'management',
@@ -161,7 +168,7 @@ export class UptimePlugin
defaultMessage: 'Management',
}),
path: '/monitors',
- visibleIn: ['globalSearch', 'sideNav'],
+ visibleIn: this._isServerless ? ['globalSearch', 'sideNav'] : [],
},
],
mount: async (params: AppMountParameters) => {
@@ -192,6 +199,10 @@ export class UptimePlugin
}
public stop(): void {}
+
+ private get _isServerless(): boolean {
+ return this._packageInfo.buildFlavor === 'serverless';
+ }
}
function registerSyntheticsRoutesWithNavigation(
diff --git a/x-pack/plugins/synthetics/server/routes/create_route_with_auth.test.ts b/x-pack/plugins/synthetics/server/routes/create_route_with_auth.test.ts
index 36262e2402b8e..30b69e0b95e4b 100644
--- a/x-pack/plugins/synthetics/server/routes/create_route_with_auth.test.ts
+++ b/x-pack/plugins/synthetics/server/routes/create_route_with_auth.test.ts
@@ -6,9 +6,37 @@
*/
import { createSyntheticsRouteWithAuth } from './create_route_with_auth';
+import { SupportedMethod } from './types';
+
+const methods: SupportedMethod[][] = [['GET'], ['POST'], ['PUT'], ['DELETE']];
describe('createSyntheticsRouteWithAuth', () => {
- it('should create a route with auth', () => {
+ it.each(
+ methods
+ .map<[SupportedMethod, boolean]>((m) => [m[0], true])
+ .concat(methods.map((m) => [m[0], false]))
+ )('%s methods continues to support the writeAccess %s flag', (mStr, writeAccess) => {
+ const method: SupportedMethod = mStr as SupportedMethod;
+ const route = createSyntheticsRouteWithAuth(() => ({
+ method,
+ path: '/foo',
+ validate: {},
+ writeAccess,
+ handler: async () => {
+ return { success: true };
+ },
+ }));
+
+ expect(route).toEqual({
+ method,
+ path: '/foo',
+ validate: {},
+ handler: expect.any(Function),
+ writeAccess,
+ });
+ });
+
+ it('by default allows read access for GET by default', () => {
const route = createSyntheticsRouteWithAuth(() => ({
method: 'GET',
path: '/foo',
@@ -27,11 +55,9 @@ describe('createSyntheticsRouteWithAuth', () => {
});
});
- it.each([['POST'], ['PUT'], ['DELETE']])(
- 'requires write permissions for %s requests',
+ it.each(methods.filter((m) => m[0] !== 'GET'))(
+ 'by default requires write access for %s route requests',
(method) => {
- if (method !== 'POST' && method !== 'PUT' && method !== 'DELETE')
- throw Error('Invalid method');
const route = createSyntheticsRouteWithAuth(() => ({
method,
path: '/foo',
@@ -50,29 +76,4 @@ describe('createSyntheticsRouteWithAuth', () => {
});
}
);
-
- it.each([['POST'], ['PUT'], ['DELETE']])(
- 'allows write access override for %s requests',
- (method) => {
- if (method !== 'POST' && method !== 'PUT' && method !== 'DELETE')
- throw Error('Invalid method');
- const route = createSyntheticsRouteWithAuth(() => ({
- method,
- path: '/foo',
- validate: {},
- handler: async () => {
- return { success: true };
- },
- writeAccessOverride: true,
- }));
-
- expect(route).toEqual({
- method,
- path: '/foo',
- validate: {},
- handler: expect.any(Function),
- writeAccess: undefined,
- });
- }
- );
});
diff --git a/x-pack/plugins/synthetics/server/routes/create_route_with_auth.ts b/x-pack/plugins/synthetics/server/routes/create_route_with_auth.ts
index f4fb413011614..d9b6f672eb3e0 100644
--- a/x-pack/plugins/synthetics/server/routes/create_route_with_auth.ts
+++ b/x-pack/plugins/synthetics/server/routes/create_route_with_auth.ts
@@ -11,20 +11,23 @@ import {
LICENSE_NOT_ACTIVE_ERROR,
LICENSE_NOT_SUPPORTED_ERROR,
} from '../../common/constants';
-import { SyntheticsRestApiRouteFactory, SyntheticsRoute, SyntheticsRouteHandler } from './types';
+import {
+ SupportedMethod,
+ SyntheticsRestApiRouteFactory,
+ SyntheticsRoute,
+ SyntheticsRouteHandler,
+} from './types';
-function getWriteAccessFlag(method: string, writeAccessOverride?: boolean, writeAccess?: boolean) {
- // if route includes an override, skip write-only access with `undefined`
- // otherwise, if route is not a GET, require write access
- // if route is get, use writeAccess value with `false` as default
- return writeAccessOverride === true ? undefined : method !== 'GET' ? true : writeAccess ?? false;
+function getDefaultWriteAccessFlag(method: SupportedMethod) {
+ // if the method is not GET, it defaults to requiring write access
+ return method !== 'GET';
}
export const createSyntheticsRouteWithAuth = (
routeCreator: SyntheticsRestApiRouteFactory
): SyntheticsRoute => {
const restRoute = routeCreator();
- const { handler, method, path, options, writeAccess, writeAccessOverride, ...rest } = restRoute;
+ const { handler, method, path, options, writeAccess, ...rest } = restRoute;
const licenseCheckHandler: SyntheticsRouteHandler = async ({
context,
response,
@@ -56,7 +59,7 @@ export const createSyntheticsRouteWithAuth = (
options,
handler: licenseCheckHandler,
...rest,
- writeAccess: getWriteAccessFlag(method, writeAccessOverride, writeAccess),
+ writeAccess: writeAccess ?? getDefaultWriteAccessFlag(method),
};
};
diff --git a/x-pack/plugins/synthetics/server/routes/pings/journey_screenshot_blocks.ts b/x-pack/plugins/synthetics/server/routes/pings/journey_screenshot_blocks.ts
index f75a92ea555d8..8d6c62d20b7fc 100644
--- a/x-pack/plugins/synthetics/server/routes/pings/journey_screenshot_blocks.ts
+++ b/x-pack/plugins/synthetics/server/routes/pings/journey_screenshot_blocks.ts
@@ -22,7 +22,7 @@ export const createJourneyScreenshotBlocksRoute: SyntheticsRestApiRouteFactory =
hashes: schema.arrayOf(schema.string()),
}),
},
- writeAccessOverride: true,
+ writeAccess: false,
handler: async (routeProps) => {
return await journeyScreenshotBlocksHandler(routeProps);
},
diff --git a/x-pack/plugins/synthetics/server/routes/synthetics_service/enablement.ts b/x-pack/plugins/synthetics/server/routes/synthetics_service/enablement.ts
index 5124df7af6ce0..4c29cb300d6fa 100644
--- a/x-pack/plugins/synthetics/server/routes/synthetics_service/enablement.ts
+++ b/x-pack/plugins/synthetics/server/routes/synthetics_service/enablement.ts
@@ -16,7 +16,7 @@ import {
export const getSyntheticsEnablementRoute: SyntheticsRestApiRouteFactory = () => ({
method: 'PUT',
path: SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT,
- writeAccessOverride: true,
+ writeAccess: false,
validate: {},
handler: async ({ savedObjectsClient, request, server }): Promise => {
try {
diff --git a/x-pack/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts b/x-pack/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts
index 08c4f8dbebb3c..c2569153ce94d 100644
--- a/x-pack/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts
+++ b/x-pack/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts
@@ -27,6 +27,7 @@ export const testNowMonitorRoute: SyntheticsRestApiRouteFactory
const { monitorId } = routeContext.request.params;
return triggerTestNow(monitorId, routeContext);
},
+ writeAccess: true,
});
export const triggerTestNow = async (
diff --git a/x-pack/plugins/synthetics/server/routes/types.ts b/x-pack/plugins/synthetics/server/routes/types.ts
index 4d27206a16f0e..aa3f161675ae8 100644
--- a/x-pack/plugins/synthetics/server/routes/types.ts
+++ b/x-pack/plugins/synthetics/server/routes/types.ts
@@ -26,13 +26,14 @@ export type SyntheticsRequest = KibanaRequest<
Record
>;
+export type SupportedMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
+
/**
* Defines the basic properties employed by Uptime routes.
*/
export interface UMServerRoute {
- method: 'GET' | 'PUT' | 'POST' | 'DELETE';
+ method: SupportedMethod;
writeAccess?: boolean;
- writeAccessOverride?: boolean;
handler: T;
validation?: FullValidationConfig;
streamHandler?: (
diff --git a/x-pack/plugins/synthetics/tsconfig.json b/x-pack/plugins/synthetics/tsconfig.json
index c342936455b0b..aea6accb4d235 100644
--- a/x-pack/plugins/synthetics/tsconfig.json
+++ b/x-pack/plugins/synthetics/tsconfig.json
@@ -82,6 +82,7 @@
"@kbn/shared-ux-link-redirect-app",
"@kbn/code-editor",
"@kbn/code-editor-mock",
+ "@kbn/serverless",
],
"exclude": [
"target/**/*",
diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json
index 05aff9e3894de..7f0a2cfc30adb 100644
--- a/x-pack/plugins/translations/translations/fr-FR.json
+++ b/x-pack/plugins/translations/translations/fr-FR.json
@@ -566,7 +566,6 @@
"core.euiTableHeaderCell.titleTextWithDesc": "{innerText}; {description}",
"core.euiTablePagination.rowsPerPageOption": "{rowsPerPage} lignes",
"core.euiTourStepIndicator.ariaLabel": "Étape {number} {status}",
- "core.euiTreeView.ariaLabel": "{nodeLabel} enfant de {ariaLabel}",
"core.savedObjects.deprecations.unknownTypes.message": "{objectCount, plural, one {# objet} many {# objets} other {# objets}} avec des types inconnus {objectCount, plural, one {a été trouvé} many {sont introuvables} other {ont été trouvés}} dans les index système Kibana. La mise à niveau avec des types savedObject inconnus n'est plus compatible. Pour assurer la réussite des mises à niveau à l'avenir, réactivez les plug-ins ou supprimez ces documents dans les indices de Kibana",
"core.statusPage.loadStatus.serverStatusCodeErrorMessage": "Échec de requête du statut du serveur avec le code de statut {responseStatus}",
"core.statusPage.metricsTiles.columns.heapUsedHeader": "Tas utilisé sur {heapTotal}",
@@ -16429,7 +16428,6 @@
"xpack.fleet.settings.editOutputFlyout.defaultMontoringOutputSwitchLabel": "Définissez cette sortie par défaut pour {boldAgentMonitoring}.",
"xpack.fleet.settings.editOutputFlyout.defaultOutputSwitchLabel": "Définissez cette sortie par défaut pour {boldAgentIntegrations}.",
"xpack.fleet.settings.editOutputFlyout.kafkaHostsInputDescription": "Précisez les URL que vos agents doivent utiliser pour se connecter à Kafka. {guideLink}.",
- "xpack.fleet.settings.editOutputFlyout.kafkaTopicsProcessorsHelpText": "Pour en savoir plus, consultez {link}.",
"xpack.fleet.settings.editOutputFlyout.logstashHostsInputDescription": "Spécifiez les adresses que vos agents utiliseront pour se connecter à Logstash. {guideLink}.",
"xpack.fleet.settings.fleetServerHostSectionSubtitle": "Précisez les URL que vos agents doivent utiliser pour se connecter à un serveur Fleet. Si plusieurs URL existent, Fleet affichera la première URL fournie à des fins d'enregistrement. Pour en savoir plus, consultez {guideLink}.",
"xpack.fleet.settings.fleetServerHostsFlyout.description": "Spécifiez plusieurs URL pour scaler votre déploiement et fournir un basculement automatique. Si plusieurs URL existent, Fleet affiche la première URL fournie à des fins d'enregistrement. Les agents Elastic enregistrés se connecteront aux URL dans l'ordre round-robin jusqu'à la réussite de leur connexion. Pour en savoir plus, consultez {link}.",
@@ -17334,7 +17332,6 @@
"xpack.fleet.integrationsHeaderTitle": "Intégrations",
"xpack.fleet.kafkaHeadersInput.addRow": "Ajouter un en-tête",
"xpack.fleet.kafkaHeadersInput.deleteButton": "Supprimer la ligne",
- "xpack.fleet.kafkaTopics.addTopicProcessor": "Ajouter un processeur de sujet",
"xpack.fleet.missingEncryptionKeyCallout.dismiss": "Rejeter",
"xpack.fleet.missingEncryptionKeyCallout.helpLink": "ici",
"xpack.fleet.missingEncryptionKeyCallout.title": "Configurer la clé de chiffrement",
@@ -17435,7 +17432,6 @@
"xpack.fleet.serverError.returnedIncorrectKey": "La commande find enrollmentKeyById a renvoyé une clé erronée",
"xpack.fleet.serverError.unableToCreateEnrollmentKey": "Impossible de créer une clé d'API d'enregistrement",
"xpack.fleet.serverPlugin.privilegesTooltip": "Tous les espaces sont requis pour l’accès à Fleet.",
- "xpack.fleet.settings.betaBadgeLabel": "Bêta",
"xpack.fleet.settings.confirmModal.cancelButtonText": "Annuler",
"xpack.fleet.settings.confirmModal.confirmButtonText": "Enregistrer et déployer",
"xpack.fleet.settings.deleteDowloadSource.confirmModalTitle": "Supprimer et déployer les modifications ?",
@@ -17529,7 +17525,6 @@
"xpack.fleet.settings.editOutputFlyout.kafkaSaslInputLabel": "Mécanisme SASL",
"xpack.fleet.settings.editOutputFlyout.kafkaTopcisTitle": "Sujets",
"xpack.fleet.settings.editOutputFlyout.kafkaTopicsDefaultTopicLabel": "Sujet par défaut",
- "xpack.fleet.settings.editOutputFlyout.kafkaTopicsProcessorsLabel": "Processeurs",
"xpack.fleet.settings.editOutputFlyout.kafkaUsernameInputLabel": "Nom d'utilisateur",
"xpack.fleet.settings.editOutputFlyout.kafkaVerificationModeInputLabel": "Mode de vérification",
"xpack.fleet.settings.editOutputFlyout.kafkaVerificationModeInputPlaceholder": "Préciser le mode de vérification",
@@ -42474,7 +42469,6 @@
"searchConnectors.nativeConnectors.usernameLabel": "Nom d'utilisateur",
"searchConnectors.server.connectors.configuration.error": "Connecteur introuvable",
"searchConnectors.server.connectors.scheduling.error": "Document introuvable",
- "searchConnectors.server.connectors.serviceType.error": "Document introuvable",
"searchConnectors.syncJobType.full": "Contenu entier",
"searchConnectors.syncJobType.incremental": "Contenu progressif",
"searchConnectors.syncStatus.canceled": "Annulation de la synchronisation",
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index ae652805fe475..be25abee7f2d3 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -580,7 +580,6 @@
"core.euiTableHeaderCell.titleTextWithDesc": "{innerText}; {description}",
"core.euiTablePagination.rowsPerPageOption": "{rowsPerPage}行",
"core.euiTourStepIndicator.ariaLabel": "ステップ{number}{status}",
- "core.euiTreeView.ariaLabel": "{ariaLabel}の{nodeLabel}子",
"core.savedObjects.deprecations.unknownTypes.message": "Kibanaシステムインデックスで不明なタイプの{objectCount, plural, other {#個のオブジェクト}}{objectCount, plural, other {が}}見つかりました。不明なsavedObject型のアップグレードはサポートされていません。今後アップグレードが成功することを保証するには、プラグインを再有効化するか、これらのドキュメントをKibanaインデックスから削除してください",
"core.statusPage.loadStatus.serverStatusCodeErrorMessage": "サーバーステータスのリクエストに失敗しました。ステータスコード:{responseStatus}",
"core.statusPage.metricsTiles.columns.heapUsedHeader": "{heapTotal}中使用済みのヒープ",
@@ -16442,7 +16441,6 @@
"xpack.fleet.settings.editOutputFlyout.defaultMontoringOutputSwitchLabel": "この出力を{boldAgentMonitoring}のデフォルトにします。",
"xpack.fleet.settings.editOutputFlyout.defaultOutputSwitchLabel": "この出力を{boldAgentIntegrations}のデフォルトにします。",
"xpack.fleet.settings.editOutputFlyout.kafkaHostsInputDescription": "エージェントがKafkaに接続するために使用するURLを指定します。{guideLink}",
- "xpack.fleet.settings.editOutputFlyout.kafkaTopicsProcessorsHelpText": "詳細については、{link}をお読みください。",
"xpack.fleet.settings.editOutputFlyout.logstashHostsInputDescription": "エージェントがLogstashに接続するために使用するアドレスを指定します。{guideLink}。",
"xpack.fleet.settings.fleetServerHostSectionSubtitle": "エージェントがFleetサーバーに接続するために使用するURLを指定します。複数のURLが存在する場合、Fleetは登録目的で最初に指定されたURLを表示します。詳細は{guideLink}をご覧ください。",
"xpack.fleet.settings.fleetServerHostsFlyout.description": "デプロイをスケールし、自動フェイルオーバーを導入するための複数のURLを指定します。複数のURLが存在する場合、Fleetは登録目的で最初に指定されたURLを表示します。登録されたElasticエージェントは、正常に接続されるまで、ラウンドロビン方式でURLに接続します。詳細は{link}をご覧ください。",
@@ -17347,7 +17345,6 @@
"xpack.fleet.integrationsHeaderTitle": "統合",
"xpack.fleet.kafkaHeadersInput.addRow": "ヘッダーを追加",
"xpack.fleet.kafkaHeadersInput.deleteButton": "行の削除",
- "xpack.fleet.kafkaTopics.addTopicProcessor": "トピックプロセッサーを追加",
"xpack.fleet.missingEncryptionKeyCallout.dismiss": "閉じる",
"xpack.fleet.missingEncryptionKeyCallout.helpLink": "こちら",
"xpack.fleet.missingEncryptionKeyCallout.title": "暗号化鍵を設定",
@@ -17448,7 +17445,6 @@
"xpack.fleet.serverError.returnedIncorrectKey": "find enrollmentKeyByIdで正しくないキーが返されました",
"xpack.fleet.serverError.unableToCreateEnrollmentKey": "登録APIキーを作成できません",
"xpack.fleet.serverPlugin.privilegesTooltip": "Fleetアクセスには、すべてのSpacesが必要です。",
- "xpack.fleet.settings.betaBadgeLabel": "ベータ",
"xpack.fleet.settings.confirmModal.cancelButtonText": "キャンセル",
"xpack.fleet.settings.confirmModal.confirmButtonText": "保存してデプロイ",
"xpack.fleet.settings.deleteDowloadSource.confirmModalTitle": "変更を保存してデプロイしますか?",
@@ -17542,7 +17538,6 @@
"xpack.fleet.settings.editOutputFlyout.kafkaSaslInputLabel": "SASLメカニズム",
"xpack.fleet.settings.editOutputFlyout.kafkaTopcisTitle": "トピック",
"xpack.fleet.settings.editOutputFlyout.kafkaTopicsDefaultTopicLabel": "デフォルトトピック",
- "xpack.fleet.settings.editOutputFlyout.kafkaTopicsProcessorsLabel": "プロセッサー",
"xpack.fleet.settings.editOutputFlyout.kafkaUsernameInputLabel": "ユーザー名",
"xpack.fleet.settings.editOutputFlyout.kafkaVerificationModeInputLabel": "認証モード",
"xpack.fleet.settings.editOutputFlyout.kafkaVerificationModeInputPlaceholder": "認証モードを指定",
@@ -42466,7 +42461,6 @@
"searchConnectors.nativeConnectors.usernameLabel": "ユーザー名",
"searchConnectors.server.connectors.configuration.error": "コネクターが見つかりませんでした",
"searchConnectors.server.connectors.scheduling.error": "ドキュメントが見つかりませんでした",
- "searchConnectors.server.connectors.serviceType.error": "ドキュメントが見つかりませんでした",
"searchConnectors.syncJobType.full": "完全なコンテンツ",
"searchConnectors.syncJobType.incremental": "増分コンテンツ",
"searchConnectors.syncStatus.canceled": "同期のキャンセル中",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index f51c0039ff8c9..db0c7d682ba7b 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -580,7 +580,6 @@
"core.euiTableHeaderCell.titleTextWithDesc": "{innerText}; {description}",
"core.euiTablePagination.rowsPerPageOption": "{rowsPerPage} 行",
"core.euiTourStepIndicator.ariaLabel": "第 {number} 步{status}",
- "core.euiTreeView.ariaLabel": "{ariaLabel} 的 {nodeLabel} 子对象",
"core.savedObjects.deprecations.unknownTypes.message": "在 Kibana 系统索引中有{objectCount, plural, other {有}}{objectCount, plural, other {# 个对象}}的类型未知。不再支持使用未知的已保存对象类型进行升级。为确保未来成功升级,请重新启用插件,或从 Kibana 索引中删除这些文档",
"core.statusPage.loadStatus.serverStatusCodeErrorMessage": "无法使用状态代码 {responseStatus} 请求服务器状态",
"core.statusPage.metricsTiles.columns.heapUsedHeader": "已使用堆数(共 {heapTotal} 个)",
@@ -16536,7 +16535,6 @@
"xpack.fleet.settings.editOutputFlyout.defaultMontoringOutputSwitchLabel": "将此输出设为 {boldAgentMonitoring} 的默认值。",
"xpack.fleet.settings.editOutputFlyout.defaultOutputSwitchLabel": "将此输出设为 {boldAgentIntegrations} 的默认值。",
"xpack.fleet.settings.editOutputFlyout.kafkaHostsInputDescription": "指定代理用于连接到 Kafka 的 URL。{guideLink}。",
- "xpack.fleet.settings.editOutputFlyout.kafkaTopicsProcessorsHelpText": "有关更多信息,请阅读 {link}。",
"xpack.fleet.settings.editOutputFlyout.logstashHostsInputDescription": "指定代理将用于连接到 Logstash 的地址。{guideLink}。",
"xpack.fleet.settings.fleetServerHostSectionSubtitle": "指定代理用于连接 Fleet 服务器的 URL。如果存在多个 URL,Fleet 将显示提供的第一个 URL 用于注册。有关更多信息,请参见 {guideLink}。",
"xpack.fleet.settings.fleetServerHostsFlyout.description": "指定多个 URL 以横向扩展您的部署并提供自动故障切换。如果多个 URL 存在,Fleet 显示提供的第一个 URL 用于注册。已注册的 Elastic 代理将以循环顺序连接到这些 RUL,直接成功连接。有关更多信息,请参见 {link}。",
@@ -17441,7 +17439,6 @@
"xpack.fleet.integrationsHeaderTitle": "集成",
"xpack.fleet.kafkaHeadersInput.addRow": "添加标头",
"xpack.fleet.kafkaHeadersInput.deleteButton": "删除行",
- "xpack.fleet.kafkaTopics.addTopicProcessor": "添加主题处理器",
"xpack.fleet.missingEncryptionKeyCallout.dismiss": "关闭",
"xpack.fleet.missingEncryptionKeyCallout.helpLink": "此处",
"xpack.fleet.missingEncryptionKeyCallout.title": "设置加密密钥",
@@ -17542,7 +17539,6 @@
"xpack.fleet.serverError.returnedIncorrectKey": "find enrollmentKeyById 返回错误的密钥",
"xpack.fleet.serverError.unableToCreateEnrollmentKey": "无法创建注册 api 密钥",
"xpack.fleet.serverPlugin.privilegesTooltip": "访问 Fleet 需要所有工作区。",
- "xpack.fleet.settings.betaBadgeLabel": "公测版",
"xpack.fleet.settings.confirmModal.cancelButtonText": "取消",
"xpack.fleet.settings.confirmModal.confirmButtonText": "保存并部署",
"xpack.fleet.settings.deleteDowloadSource.confirmModalTitle": "删除并部署更改?",
@@ -17636,7 +17632,6 @@
"xpack.fleet.settings.editOutputFlyout.kafkaSaslInputLabel": "SASL 机制",
"xpack.fleet.settings.editOutputFlyout.kafkaTopcisTitle": "主题",
"xpack.fleet.settings.editOutputFlyout.kafkaTopicsDefaultTopicLabel": "默认主题",
- "xpack.fleet.settings.editOutputFlyout.kafkaTopicsProcessorsLabel": "处理器",
"xpack.fleet.settings.editOutputFlyout.kafkaUsernameInputLabel": "用户名",
"xpack.fleet.settings.editOutputFlyout.kafkaVerificationModeInputLabel": "验证模式",
"xpack.fleet.settings.editOutputFlyout.kafkaVerificationModeInputPlaceholder": "指定验证模式",
@@ -42446,7 +42441,6 @@
"searchConnectors.nativeConnectors.usernameLabel": "用户名",
"searchConnectors.server.connectors.configuration.error": "找不到连接器",
"searchConnectors.server.connectors.scheduling.error": "无法找到文档",
- "searchConnectors.server.connectors.serviceType.error": "无法找到文档",
"searchConnectors.syncJobType.full": "完整内容",
"searchConnectors.syncJobType.incremental": "增量同步",
"searchConnectors.syncStatus.canceled": "正在取消同步",
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx b/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx
index c82ac50a72594..41a18cebdb1cc 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx
@@ -143,7 +143,10 @@ const Application = (props: UptimeAppProps) => {
-
+
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/common/header/action_menu.tsx b/x-pack/plugins/uptime/public/legacy_uptime/components/common/header/action_menu.tsx
index 4f166211057ea..937cacaab165d 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/components/common/header/action_menu.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/components/common/header/action_menu.tsx
@@ -8,13 +8,28 @@
import React from 'react';
import { HeaderMenuPortal } from '@kbn/observability-shared-plugin/public';
import { AppMountParameters } from '@kbn/core/public';
+import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
+import type { ObservabilityAIAssistantPluginStart } from '@kbn/observability-ai-assistant-plugin/public';
import { ActionMenuContent } from './action_menu_content';
-export const ActionMenu = ({ appMountParameters }: { appMountParameters: AppMountParameters }) => (
+export const ActionMenu = ({
+ appMountParameters,
+ observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem },
+}: {
+ appMountParameters: AppMountParameters;
+ observabilityAIAssistant: ObservabilityAIAssistantPluginStart;
+}) => (
-
+
+
+
+
+
+ {ObservabilityAIAssistantActionMenuItem ? : null}
+
+
);
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/common/header/action_menu_content.tsx b/x-pack/plugins/uptime/public/legacy_uptime/components/common/header/action_menu_content.tsx
index 58756b4a5669a..11c59ea7ccbdd 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/components/common/header/action_menu_content.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/components/common/header/action_menu_content.tsx
@@ -22,7 +22,6 @@ import { MONITOR_ROUTE, SETTINGS_ROUTE } from '../../../../../common/constants';
import { InspectorHeaderLink } from './inspector_header_link';
import { monitorStatusSelector } from '../../../state/selectors';
import { ManageMonitorsBtn } from './manage_monitors_btn';
-import { useUptimeStartPlugins } from '../../../contexts/uptime_startup_plugins_context';
const ADD_DATA_LABEL = i18n.translate('xpack.uptime.addDataButtonLabel', {
defaultMessage: 'Add data',
@@ -41,8 +40,6 @@ export function ActionMenuContent(): React.ReactElement {
const kibana = useKibana();
const { basePath } = useUptimeSettingsContext();
- const { observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem } = {} } =
- useUptimeStartPlugins();
const params = useGetUrlParams();
const { dateRangeStart, dateRangeEnd } = params;
const history = useHistory();
@@ -121,7 +118,6 @@ export function ActionMenuContent(): React.ReactElement {
{ADD_DATA_LABEL}
- {ObservabilityAIAssistantActionMenuItem ? : null}
);
}
diff --git a/x-pack/plugins/ux/public/components/app/rum_dashboard/action_menu/index.tsx b/x-pack/plugins/ux/public/components/app/rum_dashboard/action_menu/index.tsx
index da0cc4f8cfc7e..83350afcf8ac2 100644
--- a/x-pack/plugins/ux/public/components/app/rum_dashboard/action_menu/index.tsx
+++ b/x-pack/plugins/ux/public/components/app/rum_dashboard/action_menu/index.tsx
@@ -6,7 +6,13 @@
*/
import React from 'react';
-import { EuiHeaderLinks, EuiHeaderLink, EuiToolTip } from '@elastic/eui';
+import {
+ EuiHeaderLinks,
+ EuiHeaderLink,
+ EuiToolTip,
+ EuiFlexGroup,
+ EuiFlexItem,
+} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { HeaderMenuPortal } from '@kbn/observability-shared-plugin/public';
import {
@@ -70,32 +76,38 @@ export function UXActionMenu({
setHeaderActionMenu={appMountParameters.setHeaderActionMenu}
theme$={appMountParameters.theme$}
>
-
- {ANALYZE_MESSAGE}
}>
-
- {ANALYZE_DATA}
-
-
-
- {i18n.translate('xpack.ux.addDataButtonLabel', {
- defaultMessage: 'Add data',
- })}
-
-
+
+
+
+ {ANALYZE_MESSAGE}}>
+
+ {ANALYZE_DATA}
+
+
+
+ {i18n.translate('xpack.ux.addDataButtonLabel', {
+ defaultMessage: 'Add data',
+ })}
+
+
+
+
{ObservabilityAIAssistantActionMenuItem ? (
-
+
+
+
) : null}
-
+
);
}
diff --git a/x-pack/test/api_integration/apis/aiops/log_rate_analysis_full_analysis.ts b/x-pack/test/api_integration/apis/aiops/log_rate_analysis_full_analysis.ts
index ee70d3bf314f7..352282b4ba41f 100644
--- a/x-pack/test/api_integration/apis/aiops/log_rate_analysis_full_analysis.ts
+++ b/x-pack/test/api_integration/apis/aiops/log_rate_analysis_full_analysis.ts
@@ -31,8 +31,7 @@ export default ({ getService }: FtrProviderContext) => {
const kibanaServerUrl = formatUrl(config.get('servers.kibana'));
const esArchiver = getService('esArchiver');
- // FLAKY: https://github.com/elastic/kibana/issues/176053
- describe.skip('POST /internal/aiops/log_rate_analysis - full analysis', () => {
+ describe('POST /internal/aiops/log_rate_analysis - full analysis', () => {
API_VERSIONS.forEach((apiVersion) => {
getLogRateAnalysisTestData().forEach((testData) => {
describe(`with v${apiVersion} - ${testData.testName}`, () => {
diff --git a/x-pack/test/api_integration/apis/cases/files.ts b/x-pack/test/api_integration/apis/cases/files.ts
index 236408390c2f0..0c0effbfafd9a 100644
--- a/x-pack/test/api_integration/apis/cases/files.ts
+++ b/x-pack/test/api_integration/apis/cases/files.ts
@@ -310,7 +310,7 @@ export default ({ getService }: FtrProviderContext): void => {
});
expect(header['content-type']).to.eql('image/png');
- expect(header['content-disposition']).to.eql('attachment; filename="test.png"');
+ expect(header['content-disposition']).to.eql('attachment; filename=test.png');
expect(buffer.toString('utf8')).to.eql('abc');
});
diff --git a/x-pack/test/api_integration/apis/ml/jobs/index.ts b/x-pack/test/api_integration/apis/ml/jobs/index.ts
index 465c13a4eb6f7..561199b4e743d 100644
--- a/x-pack/test/api_integration/apis/ml/jobs/index.ts
+++ b/x-pack/test/api_integration/apis/ml/jobs/index.ts
@@ -27,5 +27,6 @@ export default function ({ loadTestFile }: FtrProviderContext) {
loadTestFile(require.resolve('./reset'));
loadTestFile(require.resolve('./update_groups'));
loadTestFile(require.resolve('./category_results'));
+ loadTestFile(require.resolve('./jobs_with_time_range'));
});
}
diff --git a/x-pack/test/api_integration/apis/ml/jobs/jobs_with_time_range.ts b/x-pack/test/api_integration/apis/ml/jobs/jobs_with_time_range.ts
new file mode 100644
index 0000000000000..4d4ff0975fa56
--- /dev/null
+++ b/x-pack/test/api_integration/apis/ml/jobs/jobs_with_time_range.ts
@@ -0,0 +1,76 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import expect from '@kbn/expect';
+import type { Group } from '@kbn/ml-plugin/common/types/groups';
+import { FtrProviderContext } from '../../../ftr_provider_context';
+import { getCommonRequestHeader } from '../../../../functional/services/ml/common_api';
+import { USER } from '../../../../functional/services/ml/security_common';
+import { SINGLE_METRIC_JOB_CONFIG, DATAFEED_CONFIG } from './common_jobs';
+
+export default ({ getService }: FtrProviderContext) => {
+ const esArchiver = getService('esArchiver');
+ const supertest = getService('supertestWithoutAuth');
+ const ml = getService('ml');
+
+ async function runGetJobsRequest(user: USER, expectedResponsecode: number): Promise {
+ const { body, status } = await supertest
+ .post('/internal/ml/jobs/jobs_with_time_range')
+ .auth(user, ml.securityCommon.getPasswordForUser(user))
+ .set(getCommonRequestHeader('1'));
+ ml.api.assertResponseStatusCode(expectedResponsecode, status, body);
+
+ return body;
+ }
+
+ const expectedResponse = {
+ jobs: [
+ {
+ id: SINGLE_METRIC_JOB_CONFIG.job_id,
+ job_id: SINGLE_METRIC_JOB_CONFIG.job_id,
+ groups: ['automated', 'farequote', 'single-metric'],
+ isRunning: false,
+ isSingleMetricViewerJob: true,
+ timeRange: {
+ from: 1454803200000,
+ to: 1455235194000,
+ },
+ },
+ ],
+ jobsMap: {
+ [SINGLE_METRIC_JOB_CONFIG.job_id]: ['automated', 'farequote', 'single-metric'],
+ },
+ };
+
+ describe('jobs with time range', function () {
+ before(async () => {
+ await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/farequote');
+ await ml.testResources.setKibanaTimeZoneToUTC();
+ const job = SINGLE_METRIC_JOB_CONFIG;
+ const jobId = job.job_id;
+ const datafeedId = `datafeed-${jobId}`;
+ await ml.api.createAndRunAnomalyDetectionLookbackJob(job, {
+ ...DATAFEED_CONFIG,
+ datafeed_id: datafeedId,
+ job_id: jobId,
+ });
+ });
+
+ after(async () => {
+ await ml.api.cleanMlIndices();
+ });
+
+ it('returns expected list of jobs with correct time range', async () => {
+ const response = await runGetJobsRequest(USER.ML_VIEWER, 200);
+
+ expect(response).to.eql(
+ expectedResponse,
+ `response should equal the expected jobs ${JSON.stringify(expectedResponse)})`
+ );
+ });
+ });
+};
diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/cases/push_case.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/cases/push_case.ts
index 2507700be6fef..67b501a784462 100644
--- a/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/cases/push_case.ts
+++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/cases/push_case.ts
@@ -515,8 +515,7 @@ export default ({ getService }: FtrProviderContext): void => {
});
});
- // FLAKY: https://github.com/elastic/kibana/issues/157588
- describe.skip('user profile uid', () => {
+ describe('user profile uid', () => {
let headers: Record;
let superUserWithProfile: User;
let superUserInfo: User;
diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts b/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts
index 5b457c9ff7714..f797e3503a092 100644
--- a/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts
+++ b/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts
@@ -106,7 +106,7 @@ export function FindingsPageProvider({ getService, getPageObjects }: FtrProvider
const createNotInstalledObject = (notInstalledSubject: string) => ({
getElement() {
- return testSubjects.find(notInstalledSubject);
+ return testSubjects.find(notInstalledSubject, 15 * 1000);
},
async navigateToAction(actionTestSubject: string) {
diff --git a/x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts b/x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts
index 765dc7fae1370..c9285fdd7b775 100644
--- a/x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts
+++ b/x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts
@@ -12,8 +12,7 @@ import { FtrProviderContext } from '../ftr_provider_context';
export default ({ getPageObjects }: FtrProviderContext) => {
const PageObjects = getPageObjects(['common', 'findings', 'header']);
- // FLAKY: https://github.com/elastic/kibana/issues/163950
- describe.skip('Findings Page onboarding', function () {
+ describe('Findings Page onboarding', function () {
this.tags(['cloud_security_posture_findings_onboarding']);
let findings: typeof PageObjects.findings;
let notInstalledVulnerabilities: typeof findings.notInstalledVulnerabilities;
diff --git a/x-pack/test/functional/apps/infra/home_page.ts b/x-pack/test/functional/apps/infra/home_page.ts
index a41c12e0d833d..e8ec102eef397 100644
--- a/x-pack/test/functional/apps/infra/home_page.ts
+++ b/x-pack/test/functional/apps/infra/home_page.ts
@@ -238,12 +238,12 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
await retry.try(async () => {
const nodesWithValue = await pageObjects.infraHome.getNodesWithValues();
expect(nodesWithValue).to.eql([
- { name: 'demo-stack-apache-01', value: 1.2, color: '#6092c0' },
- { name: 'demo-stack-mysql-01', value: 1, color: '#93b1d3' },
- { name: 'demo-stack-nginx-01', value: 0.9, color: '#b2c7df' },
- { name: 'demo-stack-redis-01', value: 0.8, color: '#b2c7df' },
+ { name: 'demo-stack-apache-01', value: 1.4, color: '#6092c0' },
+ { name: 'demo-stack-mysql-01', value: 1.2, color: '#82a7cd' },
+ { name: 'demo-stack-nginx-01', value: 1.1, color: '#93b1d3' },
+ { name: 'demo-stack-redis-01', value: 1, color: '#a2bcd9' },
{ name: 'demo-stack-haproxy-01', value: 0.8, color: '#c2d2e6' },
- { name: 'demo-stack-client-01', value: 0.5, color: '#f0f4f9' },
+ { name: 'demo-stack-client-01', value: 0.6, color: '#f0f4f9' },
]);
});
});
@@ -256,12 +256,12 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
await retry.try(async () => {
const nodesWithValue = await pageObjects.infraHome.getNodesWithValues();
expect(nodesWithValue).to.eql([
- { name: 'demo-stack-client-01', value: 0.5, color: '#f0f4f9' },
+ { name: 'demo-stack-client-01', value: 0.6, color: '#f0f4f9' },
{ name: 'demo-stack-haproxy-01', value: 0.8, color: '#c2d2e6' },
- { name: 'demo-stack-redis-01', value: 0.8, color: '#b2c7df' },
- { name: 'demo-stack-nginx-01', value: 0.9, color: '#b2c7df' },
- { name: 'demo-stack-mysql-01', value: 1, color: '#93b1d3' },
- { name: 'demo-stack-apache-01', value: 1.2, color: '#6092c0' },
+ { name: 'demo-stack-redis-01', value: 1, color: '#a2bcd9' },
+ { name: 'demo-stack-nginx-01', value: 1.1, color: '#93b1d3' },
+ { name: 'demo-stack-mysql-01', value: 1.2, color: '#82a7cd' },
+ { name: 'demo-stack-apache-01', value: 1.4, color: '#6092c0' },
]);
});
});
@@ -282,7 +282,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
await retry.try(async () => {
const nodesWithValue = await pageObjects.infraHome.getNodesWithValues();
expect(nodesWithValue).to.eql([
- { name: 'demo-stack-apache-01', value: 1.2, color: '#6092c0' },
+ { name: 'demo-stack-apache-01', value: 1.4, color: '#6092c0' },
]);
});
await pageObjects.infraHome.clearSearchTerm();
@@ -295,12 +295,12 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
await retry.try(async () => {
const nodesWithValue = await pageObjects.infraHome.getNodesWithValues();
expect(nodesWithValue).to.eql([
- { name: 'demo-stack-client-01', value: 0.5, color: '#6092c0' },
+ { name: 'demo-stack-client-01', value: 0.6, color: '#6092c0' },
{ name: 'demo-stack-haproxy-01', value: 0.8, color: '#b5c9df' },
- { name: 'demo-stack-redis-01', value: 0.8, color: '#d0dcea' },
- { name: 'demo-stack-nginx-01', value: 0.9, color: '#d0dcea' },
- { name: 'demo-stack-mysql-01', value: 1, color: '#eec096' },
- { name: 'demo-stack-apache-01', value: 1.2, color: '#e7664c' },
+ { name: 'demo-stack-redis-01', value: 1, color: '#f1d9b9' },
+ { name: 'demo-stack-nginx-01', value: 1.1, color: '#eec096' },
+ { name: 'demo-stack-mysql-01', value: 1.2, color: '#eba47a' },
+ { name: 'demo-stack-apache-01', value: 1.4, color: '#e7664c' },
]);
});
});
diff --git a/x-pack/test/functional/apps/user_profiles/user_profiles.ts b/x-pack/test/functional/apps/user_profiles/user_profiles.ts
index cd41155707d68..53823cf3b3b1a 100644
--- a/x-pack/test/functional/apps/user_profiles/user_profiles.ts
+++ b/x-pack/test/functional/apps/user_profiles/user_profiles.ts
@@ -119,14 +119,12 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
shouldUseHashForSubUrl: false,
});
- let advancedSetting = await pageObjects.settings.getAdvancedSettingCheckbox(
- 'theme:darkMode'
- );
- expect(advancedSetting).to.be(null);
+ let advancedSetting = await pageObjects.settings.getAdvancedSettings('theme:darkMode');
+ expect(advancedSetting).to.be('disabled');
- await pageObjects.settings.toggleAdvancedSettingCheckbox('theme:darkMode', true);
- advancedSetting = await pageObjects.settings.getAdvancedSettingCheckbox('theme:darkMode');
- expect(advancedSetting).to.be('true');
+ await pageObjects.settings.setAdvancedSettingsSelect('theme:darkMode', 'enabled');
+ advancedSetting = await pageObjects.settings.getAdvancedSettings('theme:darkMode');
+ expect(advancedSetting).to.be('enabled');
await pageObjects.common.navigateToApp('security_account');
@@ -152,9 +150,9 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
shouldUseHashForSubUrl: false,
});
- await pageObjects.settings.toggleAdvancedSettingCheckbox('theme:darkMode', false);
- advancedSetting = await pageObjects.settings.getAdvancedSettingCheckbox('theme:darkMode');
- expect(advancedSetting).to.be(null);
+ await pageObjects.settings.setAdvancedSettingsSelect('theme:darkMode', 'disabled');
+ advancedSetting = await pageObjects.settings.getAdvancedSettings('theme:darkMode');
+ expect(advancedSetting).to.be('disabled');
});
});
});
diff --git a/x-pack/test/functional/es_archives/fleet/agents/data.json b/x-pack/test/functional/es_archives/fleet/agents/data.json
index 257dbb2003f69..6f6f4522413c8 100644
--- a/x-pack/test/functional/es_archives/fleet/agents/data.json
+++ b/x-pack/test/functional/es_archives/fleet/agents/data.json
@@ -107,28 +107,11 @@
}
}
-{
- "type": "doc",
- "value": {
- "id": "fleet-agent-actions:b400439c-bbbf-43d5-83cb-cf8b7e32506f",
- "index": ".kibana",
- "source": {
- "type": "fleet-agent-actions",
- "fleet-agent-actions": {
- "agent_id": "agent1",
- "type": "PAUSE",
- "created_at": "2019-09-04T15:01:07+0000",
- "sent_at": "2019-09-04T15:03:07+0000"
- }
- }
- }
-}
-
{
"type": "doc",
"value": {
"id": "ingest-agent-policies:policy1",
- "index": ".kibana",
+ "index": ".kibana_ingest",
"source": {
"type": "ingest-agent-policies",
"ingest-agent-policies": {
@@ -136,7 +119,6 @@
"namespace": "default",
"description": "Policy 1",
"status": "active",
- "package_policies": [],
"is_default": true,
"monitoring_enabled": [
"logs",
@@ -145,9 +127,6 @@
"revision": 2,
"updated_at": "2020-05-07T19:34:42.533Z",
"updated_by": "system"
- },
- "migrationVersion": {
- "ingest-agent-policies": "7.10.0"
}
}
}
@@ -157,7 +136,7 @@
"type": "doc",
"value": {
"id": "ingest-agent-policies:policy2",
- "index": ".kibana",
+ "index": ".kibana_ingest",
"source": {
"type": "ingest-agent-policies",
"ingest-agent-policies": {
@@ -165,7 +144,6 @@
"namespace": "default",
"description": "Policy 2",
"status": "active",
- "package_policies": [],
"is_default": true,
"monitoring_enabled": [
"logs",
@@ -174,9 +152,6 @@
"revision": 2,
"updated_at": "2020-05-07T19:34:42.533Z",
"updated_by": "system"
- },
- "migrationVersion": {
- "ingest-agent-policies": "7.10.0"
}
}
}
diff --git a/x-pack/test/functional/es_archives/fleet/agents/mappings.json b/x-pack/test/functional/es_archives/fleet/agents/mappings.json
index 1f2df04713c4b..a345f97f54166 100644
--- a/x-pack/test/functional/es_archives/fleet/agents/mappings.json
+++ b/x-pack/test/functional/es_archives/fleet/agents/mappings.json
@@ -1,3040 +1,3 @@
-{
- "type": "index",
- "value": {
- "aliases": {
- ".kibana": {}
- },
- "index": ".kibana_1",
- "mappings": {
- "dynamic": "strict",
- "_meta": {
- "migrationMappingPropertyHashes": {
- "ml-telemetry": "257fd1d4b4fdbb9cb4b8a3b27da201e9",
- "visualization": "52d7a13ad68a150c4525b292d23e12cc",
- "references": "7997cf5a56cc02bdc9c93361bde732b0",
- "graph-workspace": "cd7ba1330e6682e9cc00b78850874be1",
- "epm-packages": "92b4b1899b887b090d01c033f3118a85",
- "type": "2f4316de49999235636386fe51dc06c1",
- "space": "c5ca8acafa0beaa4d08d014a97b6bc6b",
- "infrastructure-ui-source": "ddc0ecb18383f6b26101a2fadb2dab0c",
- "ingest_manager_settings": "c5b0749b4ab03c582efd4c14cb8f132c",
- "application_usage_totals": "c897e4310c5f24b07caaff3db53ae2c1",
- "action": "6e96ac5e648f57523879661ea72525b7",
- "dashboard": "d00f614b29a80360e1190193fd333bab",
- "metrics-explorer-view": "428e319af3e822c80a84cf87123ca35c",
- "siem-detection-engine-rule-actions": "6569b288c169539db10cb262bf79de18",
- "query": "11aaeb7f5f7fa5bb43f25e18ce26e7d9",
- "file-upload-telemetry": "0ed4d3e1983d1217a30982630897092e",
- "application_usage_transactional": "965839e75f809fefe04f92dc4d99722a",
- "action_task_params": "a9d49f184ee89641044be0ca2950fa3a",
- "fleet-agent-events": "3231653fafe4ef3196fe3b32ab774bf2",
- "ingest-package-policies": "2346514df03316001d56ed4c8d46fa94",
- "apm-indices": "9bb9b2bf1fa636ed8619cbab5ce6a1dd",
- "inventory-view": "5299b67717e96502c77babf1c16fd4d3",
- "upgrade-assistant-reindex-operation": "296a89039fc4260292be36b1b005d8f2",
- "cases-comments": "c2061fb929f585df57425102fa928b4b",
- "fleet-enrollment-api-keys": "28b91e20b105b6f928e2012600085d8f",
- "canvas-element": "7390014e1091044523666d97247392fc",
- "ingest-outputs": "0e57221778a7153c8292edf154099036",
- "telemetry": "36a616f7026dfa617d6655df850fe16d",
- "upgrade-assistant-telemetry": "56702cec857e0a9dacfb696655b4ff7b",
- "lens-ui-telemetry": "509bfa5978586998e05f9e303c07a327",
- "namespaces": "2f4316de49999235636386fe51dc06c1",
- "server": "ec97f1c5da1a19609a60874e5af1100c",
- "siem-ui-timeline-note": "8874706eedc49059d4cf0f5094559084",
- "lens": "21c3ea0763beb1ecb0162529706b88c5",
- "sample-data-telemetry": "7d3cfeb915303c9641c59681967ffeb4",
- "fleet-agent-actions": "e520c855577170c24481be05c3ae14ec",
- "search": "181661168bbadd1eff5902361e2a0d5c",
- "updated_at": "00da57df13e94e9d98437d13ace4bfe0",
- "cases-configure": "42711cbb311976c0687853f4c1354572",
- "canvas-workpad": "b0a1706d356228dbdcb4a17e6b9eb231",
- "alert": "7b44fba6773e37c806ce290ea9b7024e",
- "siem-detection-engine-rule-status": "ae783f41c6937db6b7a2ef5c93a9e9b0",
- "uptime-dynamic-settings": "fcdb453a30092f022f2642db29523d80",
- "cases": "32aa96a6d3855ddda53010ae2048ac22",
- "apm-telemetry": "3525d7c22c42bc80f5e6e9cb3f2b26a2",
- "siem-ui-timeline": "f2d929253ecd06ffbac78b4047f45a86",
- "kql-telemetry": "d12a98a6f19a2d273696597547e064ee",
- "ui-metric": "0d409297dc5ebe1e3a1da691c6ee32e3",
- "ingest-agent-policies": "f4bdc17427437537ca1754d5d5057ad5",
- "url": "b675c3be8d76ecf029294d51dc7ec65d",
- "migrationVersion": "4a1746014a75ade3a714e1db5763276f",
- "index-pattern": "66eccb05066c5a89924f48a9e9736499",
- "fleet-agents": "864760267df6c970f629bd4458506c53",
- "maps-telemetry": "bfd39d88aadadb4be597ea984d433dbe",
- "namespace": "2f4316de49999235636386fe51dc06c1",
- "cases-user-actions": "32277330ec6b721abe3b846cfd939a71",
- "siem-ui-timeline-pinned-event": "20638091112f0e14f0e443d512301c29",
- "config": "ae24d22d5986d04124cc6568f771066f",
- "tsvb-validation-telemetry": "3a37ef6c8700ae6fc97d5c7da00e9215"
- }
- },
- "properties": {
- "action": {
- "properties": {
- "actionTypeId": {
- "type": "keyword"
- },
- "config": {
- "type": "object",
- "enabled": false
- },
- "name": {
- "type": "text",
- "fields": {
- "keyword": {
- "type": "keyword"
- }
- }
- },
- "secrets": {
- "type": "binary"
- }
- }
- },
- "action_task_params": {
- "properties": {
- "actionId": {
- "type": "keyword"
- },
- "apiKey": {
- "type": "binary"
- },
- "params": {
- "type": "object",
- "enabled": false
- }
- }
- },
- "alert": {
- "properties": {
- "actions": {
- "type": "nested",
- "properties": {
- "actionRef": {
- "type": "keyword"
- },
- "actionTypeId": {
- "type": "keyword"
- },
- "group": {
- "type": "keyword"
- },
- "params": {
- "type": "object",
- "enabled": false
- }
- }
- },
- "alertTypeId": {
- "type": "keyword"
- },
- "apiKey": {
- "type": "binary"
- },
- "apiKeyOwner": {
- "type": "keyword"
- },
- "consumer": {
- "type": "keyword"
- },
- "createdAt": {
- "type": "date"
- },
- "createdBy": {
- "type": "keyword"
- },
- "enabled": {
- "type": "boolean"
- },
- "muteAll": {
- "type": "boolean"
- },
- "mutedInstanceIds": {
- "type": "keyword"
- },
- "name": {
- "type": "text",
- "fields": {
- "keyword": {
- "type": "keyword"
- }
- }
- },
- "params": {
- "type": "object",
- "enabled": false
- },
- "schedule": {
- "properties": {
- "interval": {
- "type": "keyword"
- }
- }
- },
- "scheduledTaskId": {
- "type": "keyword"
- },
- "tags": {
- "type": "keyword"
- },
- "throttle": {
- "type": "keyword"
- },
- "updatedBy": {
- "type": "keyword"
- }
- }
- },
- "apm-indices": {
- "properties": {
- "error": {
- "type": "keyword"
- },
- "metric": {
- "type": "keyword"
- },
- "onboarding": {
- "type": "keyword"
- },
- "sourcemap": {
- "type": "keyword"
- },
- "span": {
- "type": "keyword"
- },
- "transaction": {
- "type": "keyword"
- }
- }
- },
- "apm-telemetry": {
- "properties": {
- "agents": {
- "properties": {
- "dotnet": {
- "properties": {
- "agent": {
- "properties": {
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "service": {
- "properties": {
- "framework": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "language": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "runtime": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- }
- }
- }
- }
- },
- "go": {
- "properties": {
- "agent": {
- "properties": {
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "service": {
- "properties": {
- "framework": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "language": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "runtime": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- }
- }
- }
- }
- },
- "java": {
- "properties": {
- "agent": {
- "properties": {
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "service": {
- "properties": {
- "framework": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "language": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "runtime": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- }
- }
- }
- }
- },
- "js-base": {
- "properties": {
- "agent": {
- "properties": {
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "service": {
- "properties": {
- "framework": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "language": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "runtime": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- }
- }
- }
- }
- },
- "nodejs": {
- "properties": {
- "agent": {
- "properties": {
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "service": {
- "properties": {
- "framework": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "language": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "runtime": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- }
- }
- }
- }
- },
- "python": {
- "properties": {
- "agent": {
- "properties": {
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "service": {
- "properties": {
- "framework": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "language": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "runtime": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- }
- }
- }
- }
- },
- "ruby": {
- "properties": {
- "agent": {
- "properties": {
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "service": {
- "properties": {
- "framework": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "language": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "runtime": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- }
- }
- }
- }
- },
- "rum-js": {
- "properties": {
- "agent": {
- "properties": {
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "service": {
- "properties": {
- "framework": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "language": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- },
- "runtime": {
- "properties": {
- "composite": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "name": {
- "type": "keyword",
- "ignore_above": 1024
- },
- "version": {
- "type": "keyword",
- "ignore_above": 1024
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "cardinality": {
- "properties": {
- "transaction": {
- "properties": {
- "name": {
- "properties": {
- "all_agents": {
- "properties": {
- "1d": {
- "type": "long"
- }
- }
- },
- "rum": {
- "properties": {
- "1d": {
- "type": "long"
- }
- }
- }
- }
- }
- }
- },
- "user_agent": {
- "properties": {
- "original": {
- "properties": {
- "all_agents": {
- "properties": {
- "1d": {
- "type": "long"
- }
- }
- },
- "rum": {
- "properties": {
- "1d": {
- "type": "long"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "counts": {
- "properties": {
- "agent_configuration": {
- "properties": {
- "all": {
- "type": "long"
- }
- }
- },
- "error": {
- "properties": {
- "1d": {
- "type": "long"
- },
- "all": {
- "type": "long"
- }
- }
- },
- "max_error_groups_per_service": {
- "properties": {
- "1d": {
- "type": "long"
- }
- }
- },
- "max_transaction_groups_per_service": {
- "properties": {
- "1d": {
- "type": "long"
- }
- }
- },
- "metric": {
- "properties": {
- "1d": {
- "type": "long"
- },
- "all": {
- "type": "long"
- }
- }
- },
- "onboarding": {
- "properties": {
- "1d": {
- "type": "long"
- },
- "all": {
- "type": "long"
- }
- }
- },
- "services": {
- "properties": {
- "1d": {
- "type": "long"
- }
- }
- },
- "sourcemap": {
- "properties": {
- "1d": {
- "type": "long"
- },
- "all": {
- "type": "long"
- }
- }
- },
- "span": {
- "properties": {
- "1d": {
- "type": "long"
- },
- "all": {
- "type": "long"
- }
- }
- },
- "traces": {
- "properties": {
- "1d": {
- "type": "long"
- }
- }
- },
- "transaction": {
- "properties": {
- "1d": {
- "type": "long"
- },
- "all": {
- "type": "long"
- }
- }
- }
- }
- },
- "has_any_services": {
- "type": "boolean"
- },
- "indices": {
- "properties": {
- "all": {
- "properties": {
- "total": {
- "properties": {
- "docs": {
- "properties": {
- "count": {
- "type": "long"
- }
- }
- },
- "store": {
- "properties": {
- "size_in_bytes": {
- "type": "long"
- }
- }
- }
- }
- }
- }
- },
- "shards": {
- "properties": {
- "total": {
- "type": "long"
- }
- }
- }
- }
- },
- "integrations": {
- "properties": {
- "ml": {
- "properties": {
- "all_jobs_count": {
- "type": "long"
- }
- }
- }
- }
- },
- "retainment": {
- "properties": {
- "error": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- },
- "metric": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- },
- "onboarding": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- },
- "span": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- },
- "transaction": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- }
- }
- },
- "services_per_agent": {
- "properties": {
- "dotnet": {
- "type": "long",
- "null_value": 0
- },
- "go": {
- "type": "long",
- "null_value": 0
- },
- "java": {
- "type": "long",
- "null_value": 0
- },
- "js-base": {
- "type": "long",
- "null_value": 0
- },
- "nodejs": {
- "type": "long",
- "null_value": 0
- },
- "python": {
- "type": "long",
- "null_value": 0
- },
- "ruby": {
- "type": "long",
- "null_value": 0
- },
- "rum-js": {
- "type": "long",
- "null_value": 0
- }
- }
- },
- "tasks": {
- "properties": {
- "agent_configuration": {
- "properties": {
- "took": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- }
- }
- },
- "agents": {
- "properties": {
- "took": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- }
- }
- },
- "cardinality": {
- "properties": {
- "took": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- }
- }
- },
- "groupings": {
- "properties": {
- "took": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- }
- }
- },
- "indices_stats": {
- "properties": {
- "took": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- }
- }
- },
- "integrations": {
- "properties": {
- "took": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- }
- }
- },
- "processor_events": {
- "properties": {
- "took": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- }
- }
- },
- "services": {
- "properties": {
- "took": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- }
- }
- },
- "versions": {
- "properties": {
- "took": {
- "properties": {
- "ms": {
- "type": "long"
- }
- }
- }
- }
- }
- }
- },
- "version": {
- "properties": {
- "apm_server": {
- "properties": {
- "major": {
- "type": "long"
- },
- "minor": {
- "type": "long"
- },
- "patch": {
- "type": "long"
- }
- }
- }
- }
- }
- }
- },
- "application_usage_totals": {
- "properties": {
- "appId": {
- "type": "keyword"
- },
- "minutesOnScreen": {
- "type": "float"
- },
- "numberOfClicks": {
- "type": "long"
- }
- }
- },
- "application_usage_transactional": {
- "properties": {
- "appId": {
- "type": "keyword"
- },
- "minutesOnScreen": {
- "type": "float"
- },
- "numberOfClicks": {
- "type": "long"
- },
- "timestamp": {
- "type": "date"
- }
- }
- },
- "canvas-element": {
- "dynamic": "false",
- "properties": {
- "@created": {
- "type": "date"
- },
- "@timestamp": {
- "type": "date"
- },
- "content": {
- "type": "text"
- },
- "help": {
- "type": "text"
- },
- "image": {
- "type": "text"
- },
- "name": {
- "type": "text",
- "fields": {
- "keyword": {
- "type": "keyword"
- }
- }
- }
- }
- },
- "canvas-workpad": {
- "dynamic": "false",
- "properties": {
- "@created": {
- "type": "date"
- },
- "@timestamp": {
- "type": "date"
- },
- "name": {
- "type": "text",
- "fields": {
- "keyword": {
- "type": "keyword"
- }
- }
- }
- }
- },
- "cases": {
- "properties": {
- "closed_at": {
- "type": "date"
- },
- "closed_by": {
- "properties": {
- "email": {
- "type": "keyword"
- },
- "full_name": {
- "type": "keyword"
- },
- "username": {
- "type": "keyword"
- }
- }
- },
- "connector_id": {
- "type": "keyword"
- },
- "created_at": {
- "type": "date"
- },
- "created_by": {
- "properties": {
- "email": {
- "type": "keyword"
- },
- "full_name": {
- "type": "keyword"
- },
- "username": {
- "type": "keyword"
- }
- }
- },
- "description": {
- "type": "text"
- },
- "external_service": {
- "properties": {
- "connector_id": {
- "type": "keyword"
- },
- "connector_name": {
- "type": "keyword"
- },
- "external_id": {
- "type": "keyword"
- },
- "external_title": {
- "type": "text"
- },
- "external_url": {
- "type": "text"
- },
- "pushed_at": {
- "type": "date"
- },
- "pushed_by": {
- "properties": {
- "email": {
- "type": "keyword"
- },
- "full_name": {
- "type": "keyword"
- },
- "username": {
- "type": "keyword"
- }
- }
- }
- }
- },
- "status": {
- "type": "keyword"
- },
- "tags": {
- "type": "keyword"
- },
- "title": {
- "type": "keyword"
- },
- "updated_at": {
- "type": "date"
- },
- "updated_by": {
- "properties": {
- "email": {
- "type": "keyword"
- },
- "full_name": {
- "type": "keyword"
- },
- "username": {
- "type": "keyword"
- }
- }
- }
- }
- },
- "cases-comments": {
- "properties": {
- "comment": {
- "type": "text"
- },
- "created_at": {
- "type": "date"
- },
- "created_by": {
- "properties": {
- "email": {
- "type": "keyword"
- },
- "full_name": {
- "type": "keyword"
- },
- "username": {
- "type": "keyword"
- }
- }
- },
- "pushed_at": {
- "type": "date"
- },
- "pushed_by": {
- "properties": {
- "email": {
- "type": "keyword"
- },
- "full_name": {
- "type": "keyword"
- },
- "username": {
- "type": "keyword"
- }
- }
- },
- "updated_at": {
- "type": "date"
- },
- "updated_by": {
- "properties": {
- "email": {
- "type": "keyword"
- },
- "full_name": {
- "type": "keyword"
- },
- "username": {
- "type": "keyword"
- }
- }
- }
- }
- },
- "cases-configure": {
- "properties": {
- "closure_type": {
- "type": "keyword"
- },
- "connector_id": {
- "type": "keyword"
- },
- "connector_name": {
- "type": "keyword"
- },
- "created_at": {
- "type": "date"
- },
- "created_by": {
- "properties": {
- "email": {
- "type": "keyword"
- },
- "full_name": {
- "type": "keyword"
- },
- "username": {
- "type": "keyword"
- }
- }
- },
- "updated_at": {
- "type": "date"
- },
- "updated_by": {
- "properties": {
- "email": {
- "type": "keyword"
- },
- "full_name": {
- "type": "keyword"
- },
- "username": {
- "type": "keyword"
- }
- }
- }
- }
- },
- "cases-user-actions": {
- "properties": {
- "action": {
- "type": "keyword"
- },
- "action_at": {
- "type": "date"
- },
- "action_by": {
- "properties": {
- "email": {
- "type": "keyword"
- },
- "full_name": {
- "type": "keyword"
- },
- "username": {
- "type": "keyword"
- }
- }
- },
- "action_field": {
- "type": "keyword"
- },
- "new_value": {
- "type": "text"
- },
- "old_value": {
- "type": "text"
- }
- }
- },
- "config": {
- "dynamic": "true",
- "properties": {
- "buildNum": {
- "type": "keyword"
- }
- }
- },
- "dashboard": {
- "properties": {
- "description": {
- "type": "text"
- },
- "hits": {
- "type": "integer"
- },
- "kibanaSavedObjectMeta": {
- "properties": {
- "searchSourceJSON": {
- "type": "text"
- }
- }
- },
- "optionsJSON": {
- "type": "text"
- },
- "panelsJSON": {
- "type": "text"
- },
- "refreshInterval": {
- "properties": {
- "display": {
- "type": "keyword"
- },
- "pause": {
- "type": "boolean"
- },
- "section": {
- "type": "integer"
- },
- "value": {
- "type": "integer"
- }
- }
- },
- "timeFrom": {
- "type": "keyword"
- },
- "timeRestore": {
- "type": "boolean"
- },
- "timeTo": {
- "type": "keyword"
- },
- "title": {
- "type": "text"
- },
- "version": {
- "type": "integer"
- }
- }
- },
- "epm-packages": {
- "properties": {
- "es_index_patterns": {
- "type": "object",
- "dynamic": "false"
- },
- "installed": {
- "type": "nested",
- "properties": {
- "id": {
- "type": "keyword"
- },
- "type": {
- "type": "keyword"
- }
- }
- },
- "internal": {
- "type": "boolean"
- },
- "name": {
- "type": "keyword"
- },
- "removable": {
- "type": "boolean"
- },
- "version": {
- "type": "keyword"
- }
- }
- },
- "file-upload-telemetry": {
- "properties": {
- "filesUploadedTotalCount": {
- "type": "long"
- }
- }
- },
- "fleet-agent-actions": {
- "properties": {
- "agent_id": {
- "type": "keyword"
- },
- "created_at": {
- "type": "date"
- },
- "data": {
- "type": "binary"
- },
- "sent_at": {
- "type": "date"
- },
- "type": {
- "type": "keyword"
- }
- }
- },
- "fleet-agent-events": {
- "properties": {
- "action_id": {
- "type": "keyword"
- },
- "agent_id": {
- "type": "keyword"
- },
- "policy_id": {
- "type": "keyword"
- },
- "data": {
- "type": "text"
- },
- "message": {
- "type": "text"
- },
- "payload": {
- "type": "text"
- },
- "stream_id": {
- "type": "keyword"
- },
- "subtype": {
- "type": "keyword"
- },
- "timestamp": {
- "type": "date"
- },
- "type": {
- "type": "keyword"
- }
- }
- },
- "fleet-agents": {
- "properties": {
- "access_api_key_id": {
- "type": "keyword"
- },
- "active": {
- "type": "boolean"
- },
- "policy_id": {
- "type": "keyword"
- },
- "policy_revision": {
- "type": "integer"
- },
- "current_error_events": {
- "type": "text"
- },
- "default_api_key": {
- "type": "keyword"
- },
- "default_api_key_id": {
- "type": "keyword"
- },
- "enrolled_at": {
- "type": "date"
- },
- "last_checkin": {
- "type": "date"
- },
- "last_updated": {
- "type": "date"
- },
- "local_metadata": {
- "type": "flattened"
- },
- "shared_id": {
- "type": "keyword"
- },
- "type": {
- "type": "keyword"
- },
- "updated_at": {
- "type": "date"
- },
- "user_provided_metadata": {
- "type": "flattened"
- },
- "version": {
- "type": "keyword"
- }
- }
- },
- "fleet-enrollment-api-keys": {
- "properties": {
- "active": {
- "type": "boolean"
- },
- "api_key": {
- "type": "binary"
- },
- "api_key_id": {
- "type": "keyword"
- },
- "policy_id": {
- "type": "keyword"
- },
- "created_at": {
- "type": "date"
- },
- "expire_at": {
- "type": "date"
- },
- "name": {
- "type": "keyword"
- },
- "type": {
- "type": "keyword"
- },
- "updated_at": {
- "type": "date"
- }
- }
- },
- "graph-workspace": {
- "properties": {
- "description": {
- "type": "text"
- },
- "kibanaSavedObjectMeta": {
- "properties": {
- "searchSourceJSON": {
- "type": "text"
- }
- }
- },
- "numLinks": {
- "type": "integer"
- },
- "numVertices": {
- "type": "integer"
- },
- "title": {
- "type": "text"
- },
- "version": {
- "type": "integer"
- },
- "wsState": {
- "type": "text"
- }
- }
- },
- "index-pattern": {
- "properties": {
- "fieldFormatMap": {
- "type": "text"
- },
- "fields": {
- "type": "text"
- },
- "intervalName": {
- "type": "keyword"
- },
- "notExpandable": {
- "type": "boolean"
- },
- "sourceFilters": {
- "type": "text"
- },
- "timeFieldName": {
- "type": "keyword"
- },
- "title": {
- "type": "text"
- },
- "type": {
- "type": "keyword"
- },
- "typeMeta": {
- "type": "keyword"
- }
- }
- },
- "infrastructure-ui-source": {
- "properties": {
- "description": {
- "type": "text"
- },
- "fields": {
- "properties": {
- "container": {
- "type": "keyword"
- },
- "host": {
- "type": "keyword"
- },
- "pod": {
- "type": "keyword"
- },
- "tiebreaker": {
- "type": "keyword"
- },
- "timestamp": {
- "type": "keyword"
- }
- }
- },
- "logAlias": {
- "type": "keyword"
- },
- "logColumns": {
- "type": "nested",
- "properties": {
- "fieldColumn": {
- "properties": {
- "field": {
- "type": "keyword"
- },
- "id": {
- "type": "keyword"
- }
- }
- },
- "messageColumn": {
- "properties": {
- "id": {
- "type": "keyword"
- }
- }
- },
- "timestampColumn": {
- "properties": {
- "id": {
- "type": "keyword"
- }
- }
- }
- }
- },
- "metricAlias": {
- "type": "keyword"
- },
- "name": {
- "type": "text"
- }
- }
- },
- "ingest-agent-policies": {
- "properties": {
- "package_policies": {
- "type": "keyword"
- },
- "description": {
- "type": "text"
- },
- "id": {
- "type": "keyword"
- },
- "is_default": {
- "type": "boolean"
- },
- "monitoring_enabled": {
- "type": "keyword"
- },
- "name": {
- "type": "text"
- },
- "namespace": {
- "type": "keyword"
- },
- "revision": {
- "type": "integer"
- },
- "status": {
- "type": "keyword"
- },
- "updated_by": {
- "type": "keyword"
- },
- "updated_at": {
- "type": "keyword"
- }
- }
- },
- "ingest-package-policies": {
- "properties": {
- "policy_id": {
- "type": "keyword"
- },
- "created_at": {
- "type": "date"
- },
- "created_by": {
- "type": "keyword"
- },
- "description": {
- "type": "text"
- },
- "enabled": {
- "type": "boolean"
- },
- "inputs": {
- "type": "nested",
- "enabled": false,
- "properties": {
- "config": {
- "type": "flattened"
- },
- "enabled": {
- "type": "boolean"
- },
- "streams": {
- "type": "nested",
- "properties": {
- "compiled_stream": {
- "type": "flattened"
- },
- "config": {
- "type": "flattened"
- },
- "data_stream": {
- "properties": {
- "dataset": {
- "type": "keyword"
- },
- "type": {
- "type": "keyword"
- }
- }
- },
- "enabled": {
- "type": "boolean"
- },
- "id": {
- "type": "keyword"
- },
- "vars": {
- "type": "flattened"
- }
- }
- },
- "type": {
- "type": "keyword"
- },
- "vars": {
- "type": "flattened"
- }
- }
- },
- "name": {
- "type": "keyword"
- },
- "namespace": {
- "type": "keyword"
- },
- "output_id": {
- "type": "keyword"
- },
- "package": {
- "properties": {
- "name": {
- "type": "keyword"
- },
- "title": {
- "type": "keyword"
- },
- "version": {
- "type": "keyword"
- }
- }
- },
- "revision": {
- "type": "integer"
- },
- "updated_at": {
- "type": "date"
- },
- "updated_by": {
- "type": "keyword"
- }
- }
- },
- "ingest-outputs": {
- "properties": {
- "ca_sha256": {
- "type": "keyword"
- },
- "config": {
- "type": "flattened"
- },
- "fleet_enroll_password": {
- "type": "binary"
- },
- "fleet_enroll_username": {
- "type": "binary"
- },
- "hosts": {
- "type": "keyword"
- },
- "is_default": {
- "type": "boolean"
- },
- "name": {
- "type": "keyword"
- },
- "type": {
- "type": "keyword"
- }
- }
- },
- "ingest_manager_settings": {
- "properties": {
- "agent_auto_upgrade": {
- "type": "keyword"
- },
- "kibana_ca_sha256": {
- "type": "keyword"
- },
- "kibana_url": {
- "type": "keyword"
- },
- "package_auto_upgrade": {
- "type": "keyword"
- }
- }
- },
- "inventory-view": {
- "properties": {
- "accountId": {
- "type": "keyword"
- },
- "autoBounds": {
- "type": "boolean"
- },
- "autoReload": {
- "type": "boolean"
- },
- "boundsOverride": {
- "properties": {
- "max": {
- "type": "integer"
- },
- "min": {
- "type": "integer"
- }
- }
- },
- "customMetrics": {
- "type": "nested",
- "properties": {
- "aggregation": {
- "type": "keyword"
- },
- "field": {
- "type": "keyword"
- },
- "id": {
- "type": "keyword"
- },
- "label": {
- "type": "keyword"
- },
- "type": {
- "type": "keyword"
- }
- }
- },
- "customOptions": {
- "type": "nested",
- "properties": {
- "field": {
- "type": "keyword"
- },
- "text": {
- "type": "keyword"
- }
- }
- },
- "filterQuery": {
- "properties": {
- "expression": {
- "type": "keyword"
- },
- "kind": {
- "type": "keyword"
- }
- }
- },
- "groupBy": {
- "type": "nested",
- "properties": {
- "field": {
- "type": "keyword"
- },
- "label": {
- "type": "keyword"
- }
- }
- },
- "metric": {
- "properties": {
- "aggregation": {
- "type": "keyword"
- },
- "field": {
- "type": "keyword"
- },
- "id": {
- "type": "keyword"
- },
- "label": {
- "type": "keyword"
- },
- "type": {
- "type": "keyword"
- }
- }
- },
- "name": {
- "type": "keyword"
- },
- "nodeType": {
- "type": "keyword"
- },
- "region": {
- "type": "keyword"
- },
- "time": {
- "type": "long"
- },
- "view": {
- "type": "keyword"
- }
- }
- },
- "kql-telemetry": {
- "properties": {
- "optInCount": {
- "type": "long"
- },
- "optOutCount": {
- "type": "long"
- }
- }
- },
- "lens": {
- "properties": {
- "expression": {
- "type": "keyword",
- "index": false
- },
- "state": {
- "type": "flattened"
- },
- "title": {
- "type": "text"
- },
- "visualizationType": {
- "type": "keyword"
- }
- }
- },
- "lens-ui-telemetry": {
- "properties": {
- "count": {
- "type": "integer"
- },
- "date": {
- "type": "date"
- },
- "name": {
- "type": "keyword"
- },
- "type": {
- "type": "keyword"
- }
- }
- },
- "map": {
- "properties": {
- "bounds": {
- "dynamic": false,
- "properties": {}
- },
- "description": {
- "type": "text"
- },
- "layerListJSON": {
- "type": "text"
- },
- "mapStateJSON": {
- "type": "text"
- },
- "title": {
- "type": "text"
- },
- "uiStateJSON": {
- "type": "text"
- },
- "version": {
- "type": "integer"
- }
- }
- },
- "maps-telemetry": {
- "properties": {
- "attributesPerMap": {
- "properties": {
- "dataSourcesCount": {
- "properties": {
- "avg": {
- "type": "long"
- },
- "max": {
- "type": "long"
- },
- "min": {
- "type": "long"
- }
- }
- },
- "emsVectorLayersCount": {
- "type": "object",
- "dynamic": "true"
- },
- "layerTypesCount": {
- "type": "object",
- "dynamic": "true"
- },
- "layersCount": {
- "properties": {
- "avg": {
- "type": "long"
- },
- "max": {
- "type": "long"
- },
- "min": {
- "type": "long"
- }
- }
- }
- }
- },
- "indexPatternsWithGeoFieldCount": {
- "type": "long"
- },
- "indexPatternsWithGeoPointFieldCount": {
- "type": "long"
- },
- "indexPatternsWithGeoShapeFieldCount": {
- "type": "long"
- },
- "mapsTotalCount": {
- "type": "long"
- },
- "settings": {
- "properties": {
- "showMapVisualizationTypes": {
- "type": "boolean"
- }
- }
- },
- "timeCaptured": {
- "type": "date"
- }
- }
- },
- "metrics-explorer-view": {
- "properties": {
- "chartOptions": {
- "properties": {
- "stack": {
- "type": "boolean"
- },
- "type": {
- "type": "keyword"
- },
- "yAxisMode": {
- "type": "keyword"
- }
- }
- },
- "currentTimerange": {
- "properties": {
- "from": {
- "type": "keyword"
- },
- "interval": {
- "type": "keyword"
- },
- "to": {
- "type": "keyword"
- }
- }
- },
- "name": {
- "type": "keyword"
- },
- "options": {
- "properties": {
- "aggregation": {
- "type": "keyword"
- },
- "filterQuery": {
- "type": "keyword"
- },
- "forceInterval": {
- "type": "boolean"
- },
- "groupBy": {
- "type": "keyword"
- },
- "limit": {
- "type": "integer"
- },
- "metrics": {
- "type": "nested",
- "properties": {
- "aggregation": {
- "type": "keyword"
- },
- "color": {
- "type": "keyword"
- },
- "field": {
- "type": "keyword"
- },
- "label": {
- "type": "keyword"
- }
- }
- }
- }
- }
- }
- },
- "migrationVersion": {
- "dynamic": "true",
- "properties": {
- "space": {
- "type": "text",
- "fields": {
- "keyword": {
- "type": "keyword",
- "ignore_above": 256
- }
- }
- }
- }
- },
- "ml-telemetry": {
- "properties": {
- "file_data_visualizer": {
- "properties": {
- "index_creation_count": {
- "type": "long"
- }
- }
- }
- }
- },
- "namespace": {
- "type": "keyword"
- },
- "namespaces": {
- "type": "keyword"
- },
- "query": {
- "properties": {
- "description": {
- "type": "text"
- },
- "filters": {
- "type": "object",
- "enabled": false
- },
- "query": {
- "properties": {
- "language": {
- "type": "keyword"
- },
- "query": {
- "type": "keyword",
- "index": false
- }
- }
- },
- "timefilter": {
- "type": "object",
- "enabled": false
- },
- "title": {
- "type": "text"
- }
- }
- },
- "references": {
- "type": "nested",
- "properties": {
- "id": {
- "type": "keyword"
- },
- "name": {
- "type": "keyword"
- },
- "type": {
- "type": "keyword"
- }
- }
- },
- "sample-data-telemetry": {
- "properties": {
- "installCount": {
- "type": "long"
- },
- "unInstallCount": {
- "type": "long"
- }
- }
- },
- "search": {
- "properties": {
- "columns": {
- "type": "keyword"
- },
- "description": {
- "type": "text"
- },
- "hits": {
- "type": "integer"
- },
- "kibanaSavedObjectMeta": {
- "properties": {
- "searchSourceJSON": {
- "type": "text"
- }
- }
- },
- "sort": {
- "type": "keyword"
- },
- "title": {
- "type": "text"
- },
- "version": {
- "type": "integer"
- }
- }
- },
- "server": {
- "properties": {
- "uuid": {
- "type": "keyword"
- }
- }
- },
- "siem-detection-engine-rule-actions": {
- "properties": {
- "actions": {
- "properties": {
- "action_type_id": {
- "type": "keyword"
- },
- "group": {
- "type": "keyword"
- },
- "id": {
- "type": "keyword"
- },
- "params": {
- "type": "object",
- "enabled": false
- }
- }
- },
- "alertThrottle": {
- "type": "keyword"
- },
- "ruleAlertId": {
- "type": "keyword"
- },
- "ruleThrottle": {
- "type": "keyword"
- }
- }
- },
- "siem-detection-engine-rule-status": {
- "properties": {
- "alertId": {
- "type": "keyword"
- },
- "bulkCreateTimeDurations": {
- "type": "float"
- },
- "gap": {
- "type": "text"
- },
- "lastFailureAt": {
- "type": "date"
- },
- "lastFailureMessage": {
- "type": "text"
- },
- "lastLookBackDate": {
- "type": "date"
- },
- "lastSuccessAt": {
- "type": "date"
- },
- "lastSuccessMessage": {
- "type": "text"
- },
- "searchAfterTimeDurations": {
- "type": "float"
- },
- "status": {
- "type": "keyword"
- },
- "statusDate": {
- "type": "date"
- }
- }
- },
- "siem-ui-timeline": {
- "properties": {
- "columns": {
- "properties": {
- "aggregatable": {
- "type": "boolean"
- },
- "category": {
- "type": "keyword"
- },
- "columnHeaderType": {
- "type": "keyword"
- },
- "description": {
- "type": "text"
- },
- "example": {
- "type": "text"
- },
- "id": {
- "type": "keyword"
- },
- "indexes": {
- "type": "keyword"
- },
- "name": {
- "type": "text"
- },
- "placeholder": {
- "type": "text"
- },
- "searchable": {
- "type": "boolean"
- },
- "type": {
- "type": "keyword"
- }
- }
- },
- "created": {
- "type": "date"
- },
- "createdBy": {
- "type": "text"
- },
- "dataProviders": {
- "properties": {
- "and": {
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "excluded": {
- "type": "boolean"
- },
- "id": {
- "type": "keyword"
- },
- "kqlQuery": {
- "type": "text"
- },
- "name": {
- "type": "text"
- },
- "queryMatch": {
- "properties": {
- "displayField": {
- "type": "text"
- },
- "displayValue": {
- "type": "text"
- },
- "field": {
- "type": "text"
- },
- "operator": {
- "type": "text"
- },
- "value": {
- "type": "text"
- }
- }
- }
- }
- },
- "enabled": {
- "type": "boolean"
- },
- "excluded": {
- "type": "boolean"
- },
- "id": {
- "type": "keyword"
- },
- "kqlQuery": {
- "type": "text"
- },
- "name": {
- "type": "text"
- },
- "queryMatch": {
- "properties": {
- "displayField": {
- "type": "text"
- },
- "displayValue": {
- "type": "text"
- },
- "field": {
- "type": "text"
- },
- "operator": {
- "type": "text"
- },
- "value": {
- "type": "text"
- }
- }
- }
- }
- },
- "dateRange": {
- "properties": {
- "end": {
- "type": "date"
- },
- "start": {
- "type": "date"
- }
- }
- },
- "description": {
- "type": "text"
- },
- "eventType": {
- "type": "keyword"
- },
- "favorite": {
- "properties": {
- "favoriteDate": {
- "type": "date"
- },
- "fullName": {
- "type": "text"
- },
- "keySearch": {
- "type": "text"
- },
- "userName": {
- "type": "text"
- }
- }
- },
- "filters": {
- "properties": {
- "exists": {
- "type": "text"
- },
- "match_all": {
- "type": "text"
- },
- "meta": {
- "properties": {
- "alias": {
- "type": "text"
- },
- "controlledBy": {
- "type": "text"
- },
- "disabled": {
- "type": "boolean"
- },
- "field": {
- "type": "text"
- },
- "formattedValue": {
- "type": "text"
- },
- "index": {
- "type": "keyword"
- },
- "key": {
- "type": "keyword"
- },
- "negate": {
- "type": "boolean"
- },
- "params": {
- "type": "text"
- },
- "type": {
- "type": "keyword"
- },
- "value": {
- "type": "text"
- }
- }
- },
- "missing": {
- "type": "text"
- },
- "query": {
- "type": "text"
- },
- "range": {
- "type": "text"
- },
- "script": {
- "type": "text"
- }
- }
- },
- "kqlMode": {
- "type": "keyword"
- },
- "kqlQuery": {
- "properties": {
- "filterQuery": {
- "properties": {
- "kuery": {
- "properties": {
- "expression": {
- "type": "text"
- },
- "kind": {
- "type": "keyword"
- }
- }
- },
- "serializedQuery": {
- "type": "text"
- }
- }
- }
- }
- },
- "savedQueryId": {
- "type": "keyword"
- },
- "sort": {
- "properties": {
- "columnId": {
- "type": "keyword"
- },
- "sortDirection": {
- "type": "keyword"
- }
- }
- },
- "templateTimelineId": {
- "type": "text"
- },
- "templateTimelineVersion": {
- "type": "integer"
- },
- "timelineType": {
- "type": "keyword"
- },
- "title": {
- "type": "text"
- },
- "updated": {
- "type": "date"
- },
- "updatedBy": {
- "type": "text"
- }
- }
- },
- "siem-ui-timeline-note": {
- "properties": {
- "created": {
- "type": "date"
- },
- "createdBy": {
- "type": "text"
- },
- "eventId": {
- "type": "keyword"
- },
- "note": {
- "type": "text"
- },
- "timelineId": {
- "type": "keyword"
- },
- "updated": {
- "type": "date"
- },
- "updatedBy": {
- "type": "text"
- }
- }
- },
- "siem-ui-timeline-pinned-event": {
- "properties": {
- "created": {
- "type": "date"
- },
- "createdBy": {
- "type": "text"
- },
- "eventId": {
- "type": "keyword"
- },
- "timelineId": {
- "type": "keyword"
- },
- "updated": {
- "type": "date"
- },
- "updatedBy": {
- "type": "text"
- }
- }
- },
- "space": {
- "properties": {
- "_reserved": {
- "type": "boolean"
- },
- "color": {
- "type": "keyword"
- },
- "description": {
- "type": "text"
- },
- "disabledFeatures": {
- "type": "keyword"
- },
- "imageUrl": {
- "type": "text",
- "index": false
- },
- "initials": {
- "type": "keyword"
- },
- "name": {
- "type": "text",
- "fields": {
- "keyword": {
- "type": "keyword",
- "ignore_above": 2048
- }
- }
- }
- }
- },
- "telemetry": {
- "properties": {
- "allowChangingOptInStatus": {
- "type": "boolean"
- },
- "enabled": {
- "type": "boolean"
- },
- "lastReported": {
- "type": "date"
- },
- "lastVersionChecked": {
- "type": "keyword"
- },
- "reportFailureCount": {
- "type": "integer"
- },
- "reportFailureVersion": {
- "type": "keyword"
- },
- "sendUsageFrom": {
- "type": "keyword"
- },
- "userHasSeenNotice": {
- "type": "boolean"
- }
- }
- },
- "tsvb-validation-telemetry": {
- "properties": {
- "failedRequests": {
- "type": "long"
- }
- }
- },
- "type": {
- "type": "keyword"
- },
- "ui-metric": {
- "properties": {
- "count": {
- "type": "integer"
- }
- }
- },
- "updated_at": {
- "type": "date"
- },
- "upgrade-assistant-reindex-operation": {
- "properties": {
- "errorMessage": {
- "type": "keyword"
- },
- "indexName": {
- "type": "keyword"
- },
- "lastCompletedStep": {
- "type": "integer"
- },
- "locked": {
- "type": "date"
- },
- "newIndexName": {
- "type": "keyword"
- },
- "reindexOptions": {
- "properties": {
- "openAndClose": {
- "type": "boolean"
- },
- "queueSettings": {
- "properties": {
- "queuedAt": {
- "type": "long"
- },
- "startedAt": {
- "type": "long"
- }
- }
- }
- }
- },
- "reindexTaskId": {
- "type": "keyword"
- },
- "reindexTaskPercComplete": {
- "type": "float"
- },
- "runningReindexCount": {
- "type": "integer"
- },
- "status": {
- "type": "integer"
- }
- }
- },
- "upgrade-assistant-telemetry": {
- "properties": {
- "features": {
- "properties": {
- "deprecation_logging": {
- "properties": {
- "enabled": {
- "type": "boolean",
- "null_value": true
- }
- }
- }
- }
- },
- "ui_open": {
- "properties": {
- "cluster": {
- "type": "long",
- "null_value": 0
- },
- "indices": {
- "type": "long",
- "null_value": 0
- },
- "overview": {
- "type": "long",
- "null_value": 0
- }
- }
- },
- "ui_reindex": {
- "properties": {
- "close": {
- "type": "long",
- "null_value": 0
- },
- "open": {
- "type": "long",
- "null_value": 0
- },
- "start": {
- "type": "long",
- "null_value": 0
- },
- "stop": {
- "type": "long",
- "null_value": 0
- }
- }
- }
- }
- },
- "uptime-dynamic-settings": {
- "properties": {
- "certAgeThreshold": {
- "type": "long"
- },
- "certExpirationThreshold": {
- "type": "long"
- },
- "heartbeatIndices": {
- "type": "keyword"
- }
- }
- },
- "url": {
- "properties": {
- "accessCount": {
- "type": "long"
- },
- "accessDate": {
- "type": "date"
- },
- "createDate": {
- "type": "date"
- },
- "url": {
- "type": "text",
- "fields": {
- "keyword": {
- "type": "keyword"
- }
- }
- }
- }
- },
- "visualization": {
- "properties": {
- "description": {
- "type": "text"
- },
- "kibanaSavedObjectMeta": {
- "properties": {
- "searchSourceJSON": {
- "type": "text"
- }
- }
- },
- "savedSearchRefName": {
- "type": "keyword"
- },
- "title": {
- "type": "text"
- },
- "uiStateJSON": {
- "type": "text"
- },
- "version": {
- "type": "integer"
- },
- "visState": {
- "type": "text"
- }
- }
- }
- }
- },
- "settings": {
- "index": {
- "auto_expand_replicas": "0-1",
- "number_of_replicas": "0",
- "number_of_shards": "1"
- }
- }
- }
-}
{
"type": "index",
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_management/trial_license_complete_tier/get_rule_execution_results.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_management/trial_license_complete_tier/get_rule_execution_results.ts
index 6509b4810903e..0d59150d4f270 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_management/trial_license_complete_tier/get_rule_execution_results.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_management/trial_license_complete_tier/get_rule_execution_results.ts
@@ -49,7 +49,8 @@ export default ({ getService }: FtrProviderContext) => {
const dataPathBuilder = new EsArchivePathBuilder(isServerless);
const auditbeatPath = dataPathBuilder.getPath('auditbeat/hosts');
- describe('@ess @serverless Get Rule Execution Results', () => {
+ // FLAKY: https://github.com/elastic/kibana/issues/177223
+ describe.skip('@ess @serverless Get Rule Execution Results', () => {
before(async () => {
await esArchiver.load(auditbeatPath);
await esArchiver.load('x-pack/test/functional/es_archives/security_solution/alias');
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/prebuilt_rules/prebuilt_rules_preview.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/prebuilt_rules/prebuilt_rules_preview.cy.ts
index 855e2f554c5b6..0cd75c6162be3 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/prebuilt_rules/prebuilt_rules_preview.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/prebuilt_rules/prebuilt_rules_preview.cy.ts
@@ -9,6 +9,7 @@ import { omit } from 'lodash';
import type { Filter } from '@kbn/es-query';
import type { ThreatMapping } from '@kbn/securitysolution-io-ts-alerting-types';
import type { PrebuiltRuleAsset } from '@kbn/security-solution-plugin/server/lib/detection_engine/prebuilt_rules';
+import type { ReviewRuleUpgradeResponseBody } from '@kbn/security-solution-plugin/common/api/detection_engine/prebuilt_rules/review_rule_upgrade/review_rule_upgrade_route';
import type { Threshold } from '@kbn/security-solution-plugin/common/api/detection_engine/model/rule_schema';
import { AlertSuppression } from '@kbn/security-solution-plugin/common/api/detection_engine/model/rule_schema';
@@ -49,12 +50,14 @@ import {
assertMachineLearningPropertiesShown,
assertNewTermsFieldsPropertyShown,
assertSavedQueryPropertiesShown,
+ assertSelectedPreviewTab,
assertThreatMatchQueryPropertiesShown,
assertThresholdPropertyShown,
assertWindowSizePropertyShown,
closeRulePreview,
openRuleInstallPreview,
openRuleUpdatePreview,
+ selectPreviewTab,
} from '../../../../tasks/prebuilt_rules_preview';
import { visitRulesManagementTable } from '../../../../tasks/rules_management';
import {
@@ -62,9 +65,16 @@ import {
deleteDataView,
postDataView,
} from '../../../../tasks/api_calls/common';
+import { enableRules, waitForRulesToFinishExecution } from '../../../../tasks/api_calls/rules';
const TEST_ENV_TAGS = ['@ess', '@serverless'];
+const PREVIEW_TABS = {
+ OVERVIEW: 'Overview',
+ JSON_VIEW: 'JSON view',
+ UPDATES: 'Updates',
+};
+
describe('Detection rules, Prebuilt Rules Installation and Update workflow', () => {
const commonProperties: Partial = {
author: ['Elastic', 'Another author'],
@@ -662,7 +672,6 @@ describe('Detection rules, Prebuilt Rules Installation and Update workflow', ()
installPrebuiltRuleAssets([UPDATED_RULE_1, UPDATED_RULE_2]);
visitRulesManagementTable();
- clickRuleUpdatesTab();
});
describe('Basic functionality', { tags: TEST_ENV_TAGS }, () => {
@@ -842,6 +851,8 @@ describe('Detection rules, Prebuilt Rules Installation and Update workflow', ()
clickRuleUpdatesTab();
openRuleUpdatePreview(UPDATED_CUSTOM_QUERY_INDEX_PATTERN_RULE['security-rule'].name);
+ assertSelectedPreviewTab(PREVIEW_TABS.JSON_VIEW);
+ selectPreviewTab(PREVIEW_TABS.OVERVIEW);
const { index } = UPDATED_CUSTOM_QUERY_INDEX_PATTERN_RULE['security-rule'] as {
index: string[];
@@ -868,6 +879,8 @@ describe('Detection rules, Prebuilt Rules Installation and Update workflow', ()
closeRulePreview();
openRuleUpdatePreview(UPDATED_SAVED_QUERY_DATA_VIEW_RULE['security-rule'].name);
+ assertSelectedPreviewTab(PREVIEW_TABS.JSON_VIEW);
+ selectPreviewTab(PREVIEW_TABS.OVERVIEW);
const { data_view_id: dataViewId } = UPDATED_SAVED_QUERY_DATA_VIEW_RULE[
'security-rule'
@@ -889,6 +902,7 @@ describe('Detection rules, Prebuilt Rules Installation and Update workflow', ()
clickRuleUpdatesTab();
openRuleUpdatePreview(UPDATED_MACHINE_LEARNING_RULE['security-rule'].name);
+ selectPreviewTab(PREVIEW_TABS.OVERVIEW);
assertCommonPropertiesShown(commonProperties);
@@ -910,6 +924,7 @@ describe('Detection rules, Prebuilt Rules Installation and Update workflow', ()
clickRuleUpdatesTab();
openRuleUpdatePreview(UPDATED_THRESHOLD_RULE_INDEX_PATTERN['security-rule'].name);
+ selectPreviewTab(PREVIEW_TABS.OVERVIEW);
assertCommonPropertiesShown(commonProperties);
@@ -940,6 +955,7 @@ describe('Detection rules, Prebuilt Rules Installation and Update workflow', ()
clickRuleUpdatesTab();
openRuleUpdatePreview(UPDATED_EQL_INDEX_PATTERN_RULE['security-rule'].name);
+ selectPreviewTab(PREVIEW_TABS.OVERVIEW);
assertCommonPropertiesShown(commonProperties);
@@ -956,6 +972,7 @@ describe('Detection rules, Prebuilt Rules Installation and Update workflow', ()
clickRuleUpdatesTab();
openRuleUpdatePreview(UPDATED_THREAT_MATCH_INDEX_PATTERN_RULE['security-rule'].name);
+ selectPreviewTab(PREVIEW_TABS.OVERVIEW);
assertCommonPropertiesShown(commonProperties);
@@ -999,6 +1016,7 @@ describe('Detection rules, Prebuilt Rules Installation and Update workflow', ()
clickRuleUpdatesTab();
openRuleUpdatePreview(UPDATED_NEW_TERMS_INDEX_PATTERN_RULE['security-rule'].name);
+ selectPreviewTab(PREVIEW_TABS.OVERVIEW);
assertCommonPropertiesShown(commonProperties);
@@ -1040,6 +1058,7 @@ describe('Detection rules, Prebuilt Rules Installation and Update workflow', ()
clickRuleUpdatesTab();
openRuleUpdatePreview(UPDATED_ESQL_RULE['security-rule'].name);
+ selectPreviewTab(PREVIEW_TABS.OVERVIEW);
assertCommonPropertiesShown(commonProperties);
@@ -1049,5 +1068,73 @@ describe('Detection rules, Prebuilt Rules Installation and Update workflow', ()
}
);
});
+
+ describe('Viewing rule changes in JSON diff view', { tags: TEST_ENV_TAGS }, () => {
+ it('User can see changes in a side-by-side JSON diff view', () => {
+ clickRuleUpdatesTab();
+
+ openRuleUpdatePreview(OUTDATED_RULE_1['security-rule'].name);
+ assertSelectedPreviewTab(PREVIEW_TABS.JSON_VIEW);
+
+ cy.get(UPDATE_PREBUILT_RULE_PREVIEW).contains('Current rule').should('be.visible');
+ cy.get(UPDATE_PREBUILT_RULE_PREVIEW).contains('Elastic update').should('be.visible');
+
+ cy.get(UPDATE_PREBUILT_RULE_PREVIEW).contains('"version": 1').should('be.visible');
+ cy.get(UPDATE_PREBUILT_RULE_PREVIEW).contains('"version": 2').should('be.visible');
+
+ cy.get(UPDATE_PREBUILT_RULE_PREVIEW)
+ .contains('"name": "Outdated rule 1"')
+ .should('be.visible');
+
+ /* Select another rule without closing the preview for the current rule */
+ openRuleUpdatePreview(OUTDATED_RULE_2['security-rule'].name);
+
+ /* Make sure the JSON diff is displayed for the newly selected rule */
+ cy.get(UPDATE_PREBUILT_RULE_PREVIEW)
+ .contains('"name": "Outdated rule 2"')
+ .should('be.visible');
+ cy.get(UPDATE_PREBUILT_RULE_PREVIEW)
+ .contains('"name": "Outdated rule 1"')
+ .should('not.exist');
+ });
+
+ it('Dynamic properties should not be included in preview', () => {
+ const dateBeforeRuleExecution = new Date();
+
+ /* Enable a rule and wait for it to execute */
+ enableRules({ names: [OUTDATED_RULE_1['security-rule'].name] });
+ waitForRulesToFinishExecution(
+ [OUTDATED_RULE_1['security-rule'].rule_id],
+ dateBeforeRuleExecution
+ );
+
+ cy.intercept('POST', '/internal/detection_engine/prebuilt_rules/upgrade/_review').as(
+ 'updatePrebuiltRulesReview'
+ );
+
+ clickRuleUpdatesTab();
+
+ /* Check that API response contains dynamic properties, like "enabled" and "execution_summary" */
+ cy.wait('@updatePrebuiltRulesReview')
+ .its('response.body')
+ .then((body: ReviewRuleUpgradeResponseBody) => {
+ const executedRuleInfo = body.rules.find(
+ (ruleInfo) => ruleInfo.rule_id === OUTDATED_RULE_1['security-rule'].rule_id
+ );
+
+ const enabled = executedRuleInfo?.current_rule?.enabled;
+ expect(enabled).to.eql(true);
+
+ const executionSummary = executedRuleInfo?.current_rule?.execution_summary;
+ expect(executionSummary).to.not.eql(undefined);
+ });
+
+ /* Open the preview and check that dynamic properties are not shown in the diff */
+ openRuleUpdatePreview(OUTDATED_RULE_1['security-rule'].name);
+
+ cy.get(UPDATE_PREBUILT_RULE_PREVIEW).contains('enabled').should('not.exist');
+ cy.get(UPDATE_PREBUILT_RULE_PREVIEW).contains('execution_summary').should('not.exist');
+ });
+ });
});
});
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/dashboards/upgrade_risk_score.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/dashboards/upgrade_risk_score.cy.ts
index 2f399416122d2..0da6597450126 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/dashboards/upgrade_risk_score.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/dashboards/upgrade_risk_score.cy.ts
@@ -36,7 +36,7 @@ import { deleteRiskEngineConfiguration } from '../../../tasks/api_calls/risk_eng
const spaceId = 'default';
describe('Upgrade risk scores', { tags: ['@ess', '@serverless'] }, () => {
- before(() => {
+ beforeEach(() => {
login();
deleteRiskEngineConfiguration();
createRule(getNewRule({ rule_id: 'rule1' }));
@@ -44,7 +44,6 @@ describe('Upgrade risk scores', { tags: ['@ess', '@serverless'] }, () => {
describe('show upgrade risk button', () => {
beforeEach(() => {
- login();
deleteRiskScore({ riskScoreEntity: RiskScoreEntity.host, spaceId });
deleteRiskScore({ riskScoreEntity: RiskScoreEntity.user, spaceId });
installLegacyRiskScoreModule(RiskScoreEntity.host, spaceId);
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_flyout.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_flyout.cy.ts
index b2d545773cb94..90eb208f7d710 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_flyout.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_flyout.cy.ts
@@ -62,14 +62,18 @@ describe(
},
},
() => {
- before(() => {
+ beforeEach(() => {
cy.task('esArchiverLoad', { archiveName: 'risk_scores_new_complete_data' });
cy.task('esArchiverLoad', { archiveName: 'query_alert', useCreate: true, docsOnly: true });
cy.task('esArchiverLoad', { archiveName: 'user_managed_data' });
enableAssetCriticality();
+ mockRiskEngineEnabled();
+ login();
+ visitWithTimeRange(ALERTS_URL);
+ waitForAlerts();
});
- after(() => {
+ afterEach(() => {
cy.task('esArchiverUnload', 'risk_scores_new_complete_data');
cy.task('esArchiverUnload', 'user_managed_data');
deleteAlertsAndRules(); // esArchiverUnload doesn't work properly when using with `useCreate` and `docsOnly` flags
@@ -77,13 +81,6 @@ describe(
deleteCriticality({ idField: 'user.name', idValue: USER_NAME });
});
- beforeEach(() => {
- mockRiskEngineEnabled();
- login();
- visitWithTimeRange(ALERTS_URL);
- waitForAlerts();
- });
-
describe('User details', () => {
it('should display entity flyout and open risk input panel', () => {
expandFirstAlertUserFlyout();
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/host_details/risk_tab.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/host_details/risk_tab.cy.ts
index fcb329da8b0d0..6b4f12a7619aa 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/host_details/risk_tab.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/host_details/risk_tab.cy.ts
@@ -22,7 +22,6 @@ describe('risk tab', { tags: ['@ess', '@serverless'] }, () => {
// FLAKY: https://github.com/elastic/kibana/issues/169034
describe.skip('with legacy risk score', () => {
before(() => {
- // illegal_argument_exception: unknown setting [index.lifecycle.rollover_alias]
cy.task('esArchiverLoad', { archiveName: 'risk_hosts' });
});
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/hosts/hosts_risk_column.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/hosts/hosts_risk_column.cy.ts
index 15e62f274145f..dfbb017efe0d2 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/hosts/hosts_risk_column.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/hosts/hosts_risk_column.cy.ts
@@ -16,7 +16,6 @@ import { mockRiskEngineEnabled } from '../../../tasks/entity_analytics';
describe('All hosts table', { tags: ['@ess', '@serverless'] }, () => {
describe('with legacy risk score', () => {
before(() => {
- // illegal_argument_exception: unknown setting [index.lifecycle.name]
cy.task('esArchiverLoad', { archiveName: 'risk_hosts' });
});
@@ -39,7 +38,6 @@ describe('All hosts table', { tags: ['@ess', '@serverless'] }, () => {
describe('with new risk score', () => {
before(() => {
- // illegal_argument_exception: unknown setting [index.lifecycle.name]
cy.task('esArchiverLoad', { archiveName: 'risk_scores_new' });
});
diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/machine_learning.ts b/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/machine_learning.ts
index f03d6edadbc18..3dc9fda54d35c 100644
--- a/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/machine_learning.ts
+++ b/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/machine_learning.ts
@@ -13,6 +13,9 @@ export const fetchMachineLearningModules = () => {
return rootRequest({
method: 'GET',
url: `${ML_INTERNAL_BASE_PATH}/modules/get_module`,
+ headers: {
+ 'elastic-api-version': '1',
+ },
failOnStatusCode: false,
});
};
diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/rules.ts b/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/rules.ts
index 5f89e57ff81c6..d8b4c9f3bf7cb 100644
--- a/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/rules.ts
+++ b/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/rules.ts
@@ -7,6 +7,7 @@
import moment from 'moment';
import {
+ DETECTION_ENGINE_RULES_BULK_ACTION,
DETECTION_ENGINE_RULES_URL,
DETECTION_ENGINE_RULES_URL_FIND,
} from '@kbn/security-solution-plugin/common/constants';
@@ -109,3 +110,28 @@ export const waitForRulesToFinishExecution = (ruleIds: string[], afterDate?: Dat
}),
{ interval: 500, timeout: 12000 }
);
+
+type EnableRulesParameters =
+ | {
+ names: string[];
+ ids?: undefined;
+ }
+ | {
+ names?: undefined;
+ ids: string[];
+ };
+
+export const enableRules = ({ names, ids }: EnableRulesParameters): Cypress.Chainable => {
+ const query = names?.map((name) => `alert.attributes.name: "${name}"`).join(' OR ');
+
+ return rootRequest({
+ method: 'POST',
+ url: DETECTION_ENGINE_RULES_BULK_ACTION,
+ body: {
+ action: 'enable',
+ query,
+ ids,
+ },
+ failOnStatusCode: false,
+ });
+};
diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/prebuilt_rules_preview.ts b/x-pack/test/security_solution_cypress/cypress/tasks/prebuilt_rules_preview.ts
index b3f0c1316827b..f169bd98ee59c 100644
--- a/x-pack/test/security_solution_cypress/cypress/tasks/prebuilt_rules_preview.ts
+++ b/x-pack/test/security_solution_cypress/cypress/tasks/prebuilt_rules_preview.ts
@@ -117,6 +117,16 @@ export const closeRulePreview = () => {
cy.get(INSTALL_PREBUILT_RULE_PREVIEW).should('not.exist');
};
+export const selectPreviewTab = (tabTitle: string) =>
+ cy.get(UPDATE_PREBUILT_RULE_PREVIEW).find('.euiTab').contains(tabTitle).click();
+
+export const assertSelectedPreviewTab = (tabTitle: string) =>
+ cy
+ .get(UPDATE_PREBUILT_RULE_PREVIEW)
+ .find('.euiTab-isSelected')
+ .invoke('text')
+ .should('eq', tabTitle);
+
export const assertCommonPropertiesShown = (properties: Partial) => {
cy.get(AUTHOR_PROPERTY_TITLE).should('have.text', 'Author');
cy.get(AUTHOR_PROPERTY_VALUE_ITEM).then((items) => {
diff --git a/yarn.lock b/yarn.lock
index e25b72cb6707c..23b654ef1d7bf 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1744,10 +1744,10 @@
resolved "https://registry.yarnpkg.com/@elastic/eslint-plugin-eui/-/eslint-plugin-eui-0.0.2.tgz#56b9ef03984a05cc213772ae3713ea8ef47b0314"
integrity sha512-IoxURM5zraoQ7C8f+mJb9HYSENiZGgRVcG4tLQxE61yHNNRDXtGDWTZh8N1KIHcsqN1CEPETjuzBXkJYF/fDiQ==
-"@elastic/eui@93.0.0":
- version "93.0.0"
- resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-93.0.0.tgz#43ba256d94f3d3acddee23427c9fa5285a43d7e4"
- integrity sha512-Q5gY9roWZsB1At0rxG5d9M5P7+J4hfv8fzvuqNHoVjIxbeibHRCSq2TtOQcSUjhKE5Tu/BIZijzuYX8vITGaSQ==
+"@elastic/eui@93.1.1":
+ version "93.1.1"
+ resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-93.1.1.tgz#03c9667456664978c3477abef52afd6aceb48ebf"
+ integrity sha512-YnmNST8PmgAyeahDFTUTpToiBAc6gOyK/RSSqx6NTxCmUCwXnV7Oog9TUHlQ8tYGLjfFXrAja6Msy0X2VuxHOA==
dependencies:
"@hello-pangea/dnd" "^16.3.0"
"@types/lodash" "^4.14.198"
@@ -6309,6 +6309,10 @@
version "0.0.0"
uid ""
+"@kbn/timerange@link:packages/kbn-timerange":
+ version "0.0.0"
+ uid ""
+
"@kbn/tinymath@link:packages/kbn-tinymath":
version "0.0.0"
uid ""