diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index 438e601a6d947d..554abf0d98bb97 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -196,6 +196,7 @@ enabled: - x-pack/test/api_integration/apis/security/config.ts - x-pack/test/api_integration/apis/security_solution/config.ts - x-pack/test/api_integration/apis/spaces/config.ts + - x-pack/test/api_integration/apis/stats/config.ts - x-pack/test/api_integration/apis/status/config.ts - x-pack/test/api_integration/apis/synthetics/config.ts - x-pack/test/api_integration/apis/telemetry/config.ts diff --git a/.buildkite/scripts/steps/storybooks/build_and_upload.ts b/.buildkite/scripts/steps/storybooks/build_and_upload.ts index 3c47c3d99255be..19919e0011f05e 100644 --- a/.buildkite/scripts/steps/storybooks/build_and_upload.ts +++ b/.buildkite/scripts/steps/storybooks/build_and_upload.ts @@ -43,6 +43,7 @@ const STORYBOOKS = [ 'observability', 'presentation', 'security_solution', + 'security_solution_packages', 'serverless', 'shared_ux', 'triggers_actions_ui', diff --git a/.gitignore b/.gitignore index 88ce8ad1822c54..4999eb2fb5a17c 100644 --- a/.gitignore +++ b/.gitignore @@ -92,7 +92,7 @@ npm-debug.log* ## @cypress/snapshot from apm plugin /snapshots.js -x-pack/plugins/apm/scripts/apm-diagnostics*.json +/apm-diagnostics*.json # transpiled cypress config x-pack/plugins/fleet/cypress.config.d.ts @@ -132,3 +132,4 @@ fleet-server.yml **/.journeys/ x-pack/test/security_api_integration/plugins/audit_log/audit.log + diff --git a/api_docs/actions.devdocs.json b/api_docs/actions.devdocs.json index 0bc52b2769c101..cf8e0ca6a5155a 100644 --- a/api_docs/actions.devdocs.json +++ b/api_docs/actions.devdocs.json @@ -2873,6 +2873,21 @@ "path": "x-pack/plugins/actions/server/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "actions", + "id": "def-server.ActionTypeExecutorOptions.source", + "type": "Object", + "tags": [], + "label": "source", + "description": [], + "signature": [ + "ActionExecutionSource", + " | undefined" + ], + "path": "x-pack/plugins/actions/server/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 18fc3c62776869..347fd705c7be3b 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 267 | 10 | 262 | 26 | +| 268 | 10 | 263 | 27 | ## Client diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 56ff63ea66b763..5f09653fd296e0 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index ce28c6ce3f9f08..4951f36e3ef907 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index 23e2a7751b76e8..654b229217d5c5 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -2836,39 +2836,43 @@ }, { "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/legacy_uptime/lib/alerts/common.ts" + "path": "x-pack/plugins/synthetics/server/alert_rules/tls_rule/message_utils.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/legacy_uptime/lib/alerts/status_check.ts" + "path": "x-pack/plugins/synthetics/server/alert_rules/common.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/legacy_uptime/lib/alerts/tls.ts" + "path": "x-pack/plugins/synthetics/server/alert_rules/tls_rule/tls_rule.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/legacy_uptime/lib/alerts/tls_legacy.ts" + "path": "x-pack/plugins/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/legacy_uptime/lib/alerts/duration_anomaly.ts" + "plugin": "transform", + "path": "x-pack/plugins/transform/server/lib/alerting/transform_health_rule_type/register_transform_health_rule_type.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/alert_rules/common.ts" + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/common.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/alert_rules/tls_rule/tls_rule.ts" + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/status_check.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts" + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/tls.ts" }, { - "plugin": "transform", - "path": "x-pack/plugins/transform/server/lib/alerting/transform_health_rule_type/register_transform_health_rule_type.ts" + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/tls_legacy.ts" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.ts" }, { "plugin": "ruleRegistry", diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index f0dccdb51568cf..16fa4c9bb578b0 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: 2023-06-26 +date: 2023-06-27 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 b1debb232a2c4e..f783e0858df94e 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 53ef54a2b8ef00..a3619e1d44edfd 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: 2023-06-26 +date: 2023-06-27 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 345cbdb634ef29..b0a43ab813f2dd 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: 2023-06-26 +date: 2023-06-27 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 aeca710dd92350..0c49008b9526e5 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: 2023-06-26 +date: 2023-06-27 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 bb17719643aad7..e5ea8899f5beb6 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: 2023-06-26 +date: 2023-06-27 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 9babf56a0a996b..21710c495fd030 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.devdocs.json b/api_docs/charts.devdocs.json index 0b0e5610f488fb..c2c62ac98565d3 100644 --- a/api_docs/charts.devdocs.json +++ b/api_docs/charts.devdocs.json @@ -3386,9 +3386,7 @@ "label": "AllowedSettingsOverrides", "description": [], "signature": [ - "{ settings?: { tooltip?: ", - "TooltipSettings", - " | undefined; debug?: boolean | undefined; theme?: ", + "{ settings?: { debug?: boolean | undefined; theme?: ", "MakeOverridesSerializable", "<", "RecursivePartial", diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index f682e0db64792d..b1f8b869b02623 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: 2023-06-26 +date: 2023-06-27 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 21b7c5cbdab1ee..40412951f5d1aa 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_chat.mdx b/api_docs/cloud_chat.mdx index 02f4129be9bf1a..fec8537ed8c39a 100644 --- a/api_docs/cloud_chat.mdx +++ b/api_docs/cloud_chat.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChat title: "cloudChat" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChat plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChat'] --- import cloudChatObj from './cloud_chat.devdocs.json'; diff --git a/api_docs/cloud_chat_provider.mdx b/api_docs/cloud_chat_provider.mdx index 1e40d57812e980..db1ee1e30c869e 100644 --- a/api_docs/cloud_chat_provider.mdx +++ b/api_docs/cloud_chat_provider.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChatProvider title: "cloudChatProvider" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChatProvider plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChatProvider'] --- import cloudChatProviderObj from './cloud_chat_provider.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 5e5b8fdaa48fe3..39de67d3e8b94b 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: 2023-06-26 +date: 2023-06-27 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 ba020f26bad8dc..b2a2dcbe061832 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: 2023-06-26 +date: 2023-06-27 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 3d1a1dd170860a..bf53aa09e3f18f 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: 2023-06-26 +date: 2023-06-27 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 f6f5d21362eae0..09ecb1b182d00c 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: 2023-06-26 +date: 2023-06-27 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 48f1d2f5fa3cc0..e470ba1224d832 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: 2023-06-26 +date: 2023-06-27 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 28e3f6239a0285..cde1a2f3915ec7 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: 2023-06-26 +date: 2023-06-27 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 76b07bd336aff5..c32b27203ec4da 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: 2023-06-26 +date: 2023-06-27 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 02f5cf5645afc8..2f3af85af362d0 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: 2023-06-26 +date: 2023-06-27 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 8609c3c4e30ccf..70c89f32bc640e 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: 2023-06-26 +date: 2023-06-27 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 19486b9f3e0cc1..ed14c97ee26340 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index 64591744529572..0970c78e9833ad 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -13836,14 +13836,6 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/persistence.ts" }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" - }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" - }, { "plugin": "transform", "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx" @@ -13864,6 +13856,14 @@ "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx" }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" + }, { "plugin": "ux", "path": "x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts" @@ -21494,14 +21494,6 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/persistence.ts" }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" - }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" - }, { "plugin": "transform", "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx" @@ -21522,6 +21514,14 @@ "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx" }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" + }, { "plugin": "ux", "path": "x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts" diff --git a/api_docs/data.mdx b/api_docs/data.mdx index f6d777b7904828..23eb90c9df70ff 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: 2023-06-26 +date: 2023-06-27 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 25e981f7b0ba09..e716cf6ef3f606 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: 2023-06-26 +date: 2023-06-27 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 87a3e8e5bdaa39..b3d5ce8238bf86 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: 2023-06-26 +date: 2023-06-27 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 258856bb3a051e..5471730f9a1906 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: 2023-06-26 +date: 2023-06-27 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 fc41617287ff70..5206f4d9d8fbb6 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: 2023-06-26 +date: 2023-06-27 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 6268c8320726e2..9a46d503e223bd 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.devdocs.json b/api_docs/data_views.devdocs.json index ece4d592cf605b..1005357bf16cac 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -667,14 +667,6 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/persistence.ts" }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" - }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" - }, { "plugin": "transform", "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx" @@ -695,6 +687,14 @@ "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx" }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" + }, { "plugin": "ux", "path": "x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts" @@ -8971,14 +8971,6 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/persistence.ts" }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" - }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" - }, { "plugin": "transform", "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx" @@ -8999,6 +8991,14 @@ "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx" }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" + }, { "plugin": "ux", "path": "x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts" @@ -16332,14 +16332,6 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/persistence.ts" }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" - }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" - }, { "plugin": "transform", "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx" @@ -16360,6 +16352,14 @@ "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx" }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" + }, { "plugin": "ux", "path": "x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts" diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 7af634e595cbff..f4a331215033d0 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: 2023-06-26 +date: 2023-06-27 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 52966275fea91d..1f62c10453db69 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index e1cec5279e56c0..f3cf8ace18fbd6 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -17,18 +17,18 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Referencing plugin(s) | Remove By | | ---------------|-----------|-----------| | | stackAlerts, ml | - | -| | ruleRegistry, observability, ml, infra, securitySolution, monitoring, stackAlerts, synthetics, transform | - | +| | ruleRegistry, observability, ml, infra, securitySolution, monitoring, stackAlerts, synthetics, transform, uptime | - | | | stackAlerts, alerting, securitySolution, inputControlVis | - | | | stackAlerts, infra, graph, inputControlVis, securitySolution, savedObjects | - | | | dashboard, stackAlerts, dataVisualizer, expressionPartitionVis | - | -| | @kbn/es-query, visualizationUiComponents, observability, securitySolution, timelines, lists, threatIntelligence, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, eventAnnotation, lens, aiops, ml, infra, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, stackAlerts, dataVisualizer, fleet, canvas, enterpriseSearch, graph, synthetics, transform, upgradeAssistant, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega, data | - | +| | @kbn/es-query, visualizationUiComponents, observability, securitySolution, timelines, lists, threatIntelligence, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, eventAnnotation, lens, aiops, ml, infra, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, stackAlerts, dataVisualizer, fleet, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega, data | - | | | stackAlerts, alerting, securitySolution, inputControlVis | - | -| | @kbn/es-query, visualizationUiComponents, observability, securitySolution, timelines, lists, threatIntelligence, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, eventAnnotation, lens, aiops, ml, infra, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, stackAlerts, dataVisualizer, fleet, canvas, enterpriseSearch, graph, synthetics, transform, upgradeAssistant, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega, data | - | -| | @kbn/es-query, visualizationUiComponents, observability, securitySolution, timelines, lists, threatIntelligence, data, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, eventAnnotation, lens, aiops, ml, infra, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, stackAlerts, dataVisualizer, fleet, canvas, enterpriseSearch, graph, synthetics, transform, upgradeAssistant, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega | - | -| | home, data, esUiShared, savedObjectsManagement, exploratoryView, fleet, observability, ml, apm, indexLifecycleManagement, observabilityOnboarding, synthetics, upgradeAssistant, ux, kibanaOverview | - | +| | @kbn/es-query, visualizationUiComponents, observability, securitySolution, timelines, lists, threatIntelligence, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, eventAnnotation, lens, aiops, ml, infra, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, stackAlerts, dataVisualizer, fleet, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega, data | - | +| | @kbn/es-query, visualizationUiComponents, observability, securitySolution, timelines, lists, threatIntelligence, data, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, eventAnnotation, lens, aiops, ml, infra, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, stackAlerts, dataVisualizer, fleet, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega | - | +| | home, data, esUiShared, savedObjectsManagement, exploratoryView, fleet, observability, ml, apm, indexLifecycleManagement, observabilityOnboarding, synthetics, upgradeAssistant, uptime, ux, kibanaOverview | - | | | encryptedSavedObjects, actions, data, ml, securitySolution, logstash, cloudChat | - | | | actions, ml, savedObjectsTagging, enterpriseSearch | - | -| | @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjects, embeddable, presentationUtil, visualizations, aiops, ml, dataVisualizer, dashboardEnhanced, graph, synthetics, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | +| | @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjects, embeddable, presentationUtil, visualizations, aiops, ml, dataVisualizer, dashboardEnhanced, graph, synthetics, uptime, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | | | @kbn/core, savedObjects, embeddable, visualizations, canvas, graph, ml, @kbn/core-saved-objects-common, @kbn/core-saved-objects-server, actions, alerting, savedSearch, enterpriseSearch, securitySolution, taskManager, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-api-server | - | | | observability, @kbn/securitysolution-data-table, securitySolution | - | | | @kbn/core-saved-objects-api-browser, @kbn/core, savedObjects, savedObjectsManagement, visualizations, savedObjectsTagging, eventAnnotation, lens, graph, dashboard, savedObjectsTaggingOss, kibanaUtils, expressions, dataViews, data, embeddable, controls, uiActionsEnhanced, cases, maps, canvas, dashboardEnhanced, globalSearchProviders, infra | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 9194f13c9d0509..9c592931137011 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -1214,12 +1214,9 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/legacy_uptime/lib/alerts/common.ts#:~:text=alertFactory), [status_check.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/legacy_uptime/lib/alerts/status_check.ts#:~:text=alertFactory), [tls.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/legacy_uptime/lib/alerts/tls.ts#:~:text=alertFactory), [tls_legacy.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/legacy_uptime/lib/alerts/tls_legacy.ts#:~:text=alertFactory), [duration_anomaly.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/legacy_uptime/lib/alerts/duration_anomaly.ts#:~:text=alertFactory), [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/common.ts#:~:text=alertFactory), [tls_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/tls_rule/tls_rule.ts#:~:text=alertFactory), [monitor_status_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts#:~:text=alertFactory) | - | -| | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title), [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | -| | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title), [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | -| | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | +| | [message_utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/tls_rule/message_utils.ts#:~:text=alertFactory), [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/common.ts#:~:text=alertFactory), [tls_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/tls_rule/tls_rule.ts#:~:text=alertFactory), [monitor_status_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts#:~:text=alertFactory) | - | | | [stderr_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx#:~:text=indexPatternId) | - | -| | [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_app.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_app.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_app.tsx#:~:text=RedirectAppLinks), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks) | - | +| | [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks) | - | | | [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/common/types/synthetics_monitor.ts#:~:text=SimpleSavedObject), [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/common/types/synthetics_monitor.ts#:~:text=SimpleSavedObject) | - | | | [actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/actions.ts#:~:text=SavedObject), [actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/actions.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/api.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/api.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/api.ts#:~:text=SavedObject), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/index.ts#:~:text=SavedObject), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/index.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts#:~:text=SavedObject), [effects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts#:~:text=SavedObject)+ 1 more | - | @@ -1312,6 +1309,19 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ +## uptime + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/common.ts#:~:text=alertFactory), [status_check.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/status_check.ts#:~:text=alertFactory), [tls.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/tls.ts#:~:text=alertFactory), [tls_legacy.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/tls_legacy.ts#:~:text=alertFactory), [duration_anomaly.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.ts#:~:text=alertFactory) | - | +| | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title), [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | +| | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title), [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | +| | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | +| | [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=RedirectAppLinks) | - | +| | [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/common/types/synthetics_monitor.ts#:~:text=SimpleSavedObject), [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/common/types/synthetics_monitor.ts#:~:text=SimpleSavedObject) | - | + + + ## ux | Deprecated API | Reference location(s) | Remove By | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index eb6afdfdc3152e..e03883aadcc67a 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index a3017890fc3ba4..0cdfe34cee1583 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index bf44afcf4ca2e0..9a9a917eacc822 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: 2023-06-26 +date: 2023-06-27 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 31ed9d5c44b408..c691f785453628 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: 2023-06-26 +date: 2023-06-27 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 00dccbfae1f8b3..9206727c9ee1c8 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 31cd78566dda57..ecbd27affc54ac 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: 2023-06-26 +date: 2023-06-27 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 8e6d92aa2539f2..36993f6116edae 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: 2023-06-26 +date: 2023-06-27 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 0d3e442be4ed6c..5ad2409b0dd261 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.devdocs.json b/api_docs/enterprise_search.devdocs.json index b3cd97949b4366..84dde880dccad0 100644 --- a/api_docs/enterprise_search.devdocs.json +++ b/api_docs/enterprise_search.devdocs.json @@ -53,7 +53,7 @@ "label": "CONNECTORS_ACCESS_CONTROL_INDEX_PREFIX", "description": [], "signature": [ - "\"search-acl-filter-\"" + "\".search-acl-filter-\"" ], "path": "x-pack/plugins/enterprise_search/server/index.ts", "deprecated": false, diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 8a05d46d3fc08f..459c9d279047f3 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: 2023-06-26 +date: 2023-06-27 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 a73b71ac379cf5..a6da2aa73ed395 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/ess_security.mdx b/api_docs/ess_security.mdx index 9a0d68ab94e564..4552d709fcb591 100644 --- a/api_docs/ess_security.mdx +++ b/api_docs/ess_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/essSecurity title: "essSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the essSecurity plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'essSecurity'] --- import essSecurityObj from './ess_security.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 1b8937a43c21c5..a4361a517218c7 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index d61f6737f7728d..8505c6f33fe65f 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: 2023-06-26 +date: 2023-06-27 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 9f3ce47ec10a2b..f66b97dbbd55bd 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: 2023-06-26 +date: 2023-06-27 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 a34361853bfa39..39760237bbf187 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.devdocs.json b/api_docs/expression_gauge.devdocs.json index 15090b2f023d2d..b3767918876fb1 100644 --- a/api_docs/expression_gauge.devdocs.json +++ b/api_docs/expression_gauge.devdocs.json @@ -1231,9 +1231,7 @@ "section": "def-common.MakeOverridesSerializable", "text": "MakeOverridesSerializable" }, - "; tooltipValueFormatter?: \"ignore\" | undefined; }>> & Partial; tooltipValueFormatter?: \"ignore\" | undefined; }>> & Partial; position?: ", "Position", - " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; showGridLines?: boolean | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; }>> & Partial> & Partial; position?: ", "Position", - " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; showGridLines?: boolean | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; } | undefined; axisLeft?: { children?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; style?: ", + " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; } | undefined; axisLeft?: { children?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; style?: ", { "pluginId": "@kbn/chart-expressions-common", "scope": "common", @@ -2189,7 +2187,7 @@ "YDomainRange", " | undefined>; position?: ", "Position", - " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; showGridLines?: boolean | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; } | undefined; axisRight?: { children?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; style?: ", + " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; } | undefined; axisRight?: { children?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; style?: ", { "pluginId": "@kbn/chart-expressions-common", "scope": "common", @@ -2223,7 +2221,7 @@ "YDomainRange", " | undefined>; position?: ", "Position", - " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; showGridLines?: boolean | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; } | undefined; }" + " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; } | undefined; }" ], "path": "src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts", "deprecated": false, diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index d6d57e8499e2d4..878f18d18991bb 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: 2023-06-26 +date: 2023-06-27 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 6f3349cf3c9868..7bece5224eb969 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: 2023-06-26 +date: 2023-06-27 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 ad2c7424d0dd3d..7ca0259ab884df 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: 2023-06-26 +date: 2023-06-27 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 3a8401276e2ab3..ba2a18bd959020 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: 2023-06-26 +date: 2023-06-27 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 b493563b8b516b..b2a8133355189f 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: 2023-06-26 +date: 2023-06-27 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 7eb671eaa8cf29..83b5f74c044004 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: 2023-06-26 +date: 2023-06-27 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 9db47210e6ce22..da886d99f017dd 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index 3007dd810c32de..fbc21fbeacb35f 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -17076,6 +17076,39 @@ "path": "x-pack/plugins/fleet/server/plugin.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.FleetStartContract.createFleetActionsClient", + "type": "Function", + "tags": [], + "label": "createFleetActionsClient", + "description": [], + "signature": [ + "(packageName: string) => ", + "FleetActionsClientInterface" + ], + "path": "x-pack/plugins/fleet/server/plugin.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "fleet", + "id": "def-server.FleetStartContract.createFleetActionsClient.$1", + "type": "string", + "tags": [], + "label": "packageName", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/fleet/server/plugin.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] } ], "lifecycle": "start", diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index ade119cf86ac0e..15405a1dabf1bf 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1185 | 3 | 1069 | 34 | +| 1187 | 3 | 1071 | 35 | ## Client diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 42a6e45f271be4..7c5873391f0b92 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: 2023-06-26 +date: 2023-06-27 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 a36ecd1b91fe99..981195e724dd89 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: 2023-06-26 +date: 2023-06-27 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 821cb20036e4df..fa09fd6b17296a 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: 2023-06-26 +date: 2023-06-27 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 92cff792499c39..f217a0e50d87a0 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: 2023-06-26 +date: 2023-06-27 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 c63dcef2119cf9..b269ea76c857ac 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: 2023-06-26 +date: 2023-06-27 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 9cf30e970e172c..ce2f7882b609a2 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: 2023-06-26 +date: 2023-06-27 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 08fbf445b5728b..e8e6ec2f5a7f7e 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 4d75c40ae9f061..90ad4204bdf869 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: 2023-06-26 +date: 2023-06-27 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 64f34bc95b76b1..e685a21127ccc6 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: 2023-06-26 +date: 2023-06-27 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 97befdc93e6431..48bc08639e4258 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 43b796a0cc3842..09ce6ffdeb7e23 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: 2023-06-26 +date: 2023-06-27 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 322f33da4a38e9..01718da771649e 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 30459c63796dae..e80309fb838d69 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index f46d367b2cb9fe..792cebb1c83894 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: 2023-06-26 +date: 2023-06-27 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 60714e1909c747..ae850887a67394 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: 2023-06-26 +date: 2023-06-27 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 7a47897397bda9..1888b20f85f0cc 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: 2023-06-26 +date: 2023-06-27 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 0b227a25a58e48..d340dfe640fe63 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.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 546300e0a6ef45..198ebe2b7cffbe 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: 2023-06-26 +date: 2023-06-27 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 54c87258e9a44a..046a94baef621a 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: 2023-06-26 +date: 2023-06-27 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 c0ca9a712a641d..15d37caf3c077c 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: 2023-06-26 +date: 2023-06-27 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 af50f06fe4dd60..3bee0e99d5643f 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index 5fcd4e3cbebbc8..9ac41ccb4e5c67 100644 --- a/api_docs/kbn_analytics_shippers_gainsight.mdx +++ b/api_docs/kbn_analytics_shippers_gainsight.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight title: "@kbn/analytics-shippers-gainsight" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-gainsight plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight'] --- import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index c6da086e63e346..19ea1c9314e48b 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: 2023-06-26 +date: 2023-06-27 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 630cf070be5eef..d3b3c365acd0b0 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: 2023-06-26 +date: 2023-06-27 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 fabc165de72ed8..cc02f564afd038 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: 2023-06-26 +date: 2023-06-27 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 43cd7e7cc527aa..81a417a69a5693 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: 2023-06-26 +date: 2023-06-27 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 363870dedc358f..03500842b77685 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 3f4c9fdc48c8fc..31b8f556c014ff 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.devdocs.json b/api_docs/kbn_cell_actions.devdocs.json index 1c23d050bc1ce5..a25ef677ee34e6 100644 --- a/api_docs/kbn_cell_actions.devdocs.json +++ b/api_docs/kbn_cell_actions.devdocs.json @@ -35,7 +35,15 @@ "section": "def-public.FilterManager", "text": "FilterManager" }, - " | undefined; fieldName: string; value: string | string[] | null | undefined; }) => void" + " | undefined; fieldName: string; value: ", + { + "pluginId": "@kbn/cell-actions", + "scope": "common", + "docId": "kibKbnCellActionsPluginApi", + "section": "def-common.CellActionFieldValue", + "text": "CellActionFieldValue" + }, + "; }) => void" ], "path": "packages/kbn-cell-actions/src/actions/filter/filter_in.ts", "deprecated": false, @@ -92,7 +100,7 @@ "label": "value", "description": [], "signature": [ - "string | string[] | null | undefined" + "string | number | boolean | string[] | boolean[] | number[] | null | undefined" ], "path": "packages/kbn-cell-actions/src/actions/filter/filter_in.ts", "deprecated": false, @@ -120,7 +128,15 @@ "section": "def-public.FilterManager", "text": "FilterManager" }, - " | undefined; fieldName: string; value: string | string[] | null | undefined; }) => void" + " | undefined; fieldName: string; value: ", + { + "pluginId": "@kbn/cell-actions", + "scope": "common", + "docId": "kibKbnCellActionsPluginApi", + "section": "def-common.CellActionFieldValue", + "text": "CellActionFieldValue" + }, + "; }) => void" ], "path": "packages/kbn-cell-actions/src/actions/filter/filter_out.ts", "deprecated": false, @@ -177,7 +193,7 @@ "label": "value", "description": [], "signature": [ - "string | string[] | null | undefined" + "string | number | boolean | string[] | boolean[] | number[] | null | undefined" ], "path": "packages/kbn-cell-actions/src/actions/filter/filter_out.ts", "deprecated": false, @@ -1257,7 +1273,7 @@ "label": "CellActionFieldValue", "description": [], "signature": [ - "string | string[] | null | undefined" + "string | number | boolean | string[] | boolean[] | number[] | null | undefined" ], "path": "packages/kbn-cell-actions/src/types.ts", "deprecated": false, diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 103c7510ea7429..ac74541037b830 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: 2023-06-26 +date: 2023-06-27 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 f22aac43e64f66..8518d682481910 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: 2023-06-26 +date: 2023-06-27 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 908fd87d478fed..f239298f342377 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: 2023-06-26 +date: 2023-06-27 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 13bf8297202c5a..91a2218ec97bab 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: 2023-06-26 +date: 2023-06-27 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 24fc0bc42b7a9f..cc68a551696b05 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: 2023-06-26 +date: 2023-06-27 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 eaaa890c059285..a426044a270e34 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: 2023-06-26 +date: 2023-06-27 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 5993b8da39f04b..0b35a6857eb9ec 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: 2023-06-26 +date: 2023-06-27 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 b837ef8fe1d64e..9e16f5e0a92c24 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mocks.mdx b/api_docs/kbn_code_editor_mocks.mdx index 607049296db319..87e9a7d3ba83ef 100644 --- a/api_docs/kbn_code_editor_mocks.mdx +++ b/api_docs/kbn_code_editor_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mocks title: "@kbn/code-editor-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mocks plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mocks'] --- import kbnCodeEditorMocksObj from './kbn_code_editor_mocks.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 0d93da3c9a1964..e9af7807b2cab6 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: 2023-06-26 +date: 2023-06-27 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 f93c3755b00b4c..3c98ee6b98d113 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: 2023-06-26 +date: 2023-06-27 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 b14b8919c47416..b07a559ee78936 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: 2023-06-26 +date: 2023-06-27 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 01197ac3559d90..812e4f2e776a75 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: 2023-06-26 +date: 2023-06-27 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 8e510eca413d95..2318342c99e8b4 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: 2023-06-26 +date: 2023-06-27 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 f7f23fb024dfb1..3527d3cb391759 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: 2023-06-26 +date: 2023-06-27 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 499c9239c098f2..f0cf243620f072 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: 2023-06-26 +date: 2023-06-27 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_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index fe5e62fb94b255..f906abdb534ab2 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: 2023-06-26 +date: 2023-06-27 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 db6c275c6dec82..719830fcd9dd39 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: 2023-06-26 +date: 2023-06-27 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 70dd4e1fdee95b..cc525c96579dd8 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: 2023-06-26 +date: 2023-06-27 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 9d929833dc4dfc..7832ed93070a72 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: 2023-06-26 +date: 2023-06-27 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 923e9caa26b195..5dd682cc7e1f03 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: 2023-06-26 +date: 2023-06-27 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 7d062f91036fb0..d2f68b2730f8bd 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: 2023-06-26 +date: 2023-06-27 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 c50e8c16d60c33..0dc0b6318f788d 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: 2023-06-26 +date: 2023-06-27 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 813d42412cfc72..83328f853812b8 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: 2023-06-26 +date: 2023-06-27 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 85984dfeec9483..99b2b5f6360dc4 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: 2023-06-26 +date: 2023-06-27 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 3f18a52cd2ddde..9916534fa300f2 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: 2023-06-26 +date: 2023-06-27 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 716a54751c3515..18f9878c16fb48 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: 2023-06-26 +date: 2023-06-27 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 bfa5573413dce9..93619a11229908 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: 2023-06-26 +date: 2023-06-27 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 8d13cabd503ab5..49764e31529122 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: 2023-06-26 +date: 2023-06-27 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 b03772eb4e9ec4..5a80bf98824d4d 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: 2023-06-26 +date: 2023-06-27 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 09ba46beba1487..78976ef5a8fae1 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: 2023-06-26 +date: 2023-06-27 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 75246eb49cf32e..65d1efd77f8877 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: 2023-06-26 +date: 2023-06-27 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 756b012bf6d1ad..b63de92a26f864 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: 2023-06-26 +date: 2023-06-27 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 6c7cb1d8df4207..5cee36facd0cd3 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: 2023-06-26 +date: 2023-06-27 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 7e23c9ed588f82..12e5802f7d0080 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: 2023-06-26 +date: 2023-06-27 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 a100f2ee6f7370..72211a1bc552da 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: 2023-06-26 +date: 2023-06-27 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 db2283ba6940d5..7fee4c9598dbd8 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: 2023-06-26 +date: 2023-06-27 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 3d26ea749313fd..02aa17abcde56a 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: 2023-06-26 +date: 2023-06-27 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 cc51bd0310e225..5fb284a41932e8 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: 2023-06-26 +date: 2023-06-27 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.devdocs.json b/api_docs/kbn_core_chrome_browser.devdocs.json index 8b3943e6ada046..32156759fca8b9 100644 --- a/api_docs/kbn_core_chrome_browser.devdocs.json +++ b/api_docs/kbn_core_chrome_browser.devdocs.json @@ -1547,6 +1547,24 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-chrome-browser", + "id": "def-common.ChromeProjectNavigationNode.breadcrumbStatus", + "type": "CompoundType", + "tags": [ + "default" + ], + "label": "breadcrumbStatus", + "description": [ + "\nOptional flag to indicate if the breadcrumb should be hidden when this node is active." + ], + "signature": [ + "\"hidden\" | \"visible\" | undefined" + ], + "path": "packages/core/chrome/core-chrome-browser/src/project_navigation.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -2781,6 +2799,24 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-chrome-browser", + "id": "def-common.NodeDefinition.breadcrumbStatus", + "type": "CompoundType", + "tags": [ + "default" + ], + "label": "breadcrumbStatus", + "description": [ + "\nOptional flag to indicate if the breadcrumb should be hidden when this node is active." + ], + "signature": [ + "\"hidden\" | \"visible\" | undefined" + ], + "path": "packages/core/chrome/core-chrome-browser/src/project_navigation.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 10413c00d2bf74..5b06c95a80f9cf 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.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 | |-------------------|-----------|------------------------|-----------------| -| 155 | 0 | 61 | 0 | +| 157 | 0 | 61 | 0 | ## Common diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index ae2dba36d10e05..3a089c7c3f02d8 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: 2023-06-26 +date: 2023-06-27 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 3c49e382d10523..66bfedaeb47aab 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: 2023-06-26 +date: 2023-06-27 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 920810572b4de0..ef5ace6a8ed00e 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: 2023-06-26 +date: 2023-06-27 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 d4c1124b82e3ba..8dc0fc6f1d80fb 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: 2023-06-26 +date: 2023-06-27 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 85fdd543555e00..4c612e4562f6d4 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: 2023-06-26 +date: 2023-06-27 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 9a87548ca3efdf..c2cb448270375c 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: 2023-06-26 +date: 2023-06-27 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 6702f8a9911818..ae1e4b859046d5 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: 2023-06-26 +date: 2023-06-27 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 235b303ba31fa9..4b7539b9aaec5d 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: 2023-06-26 +date: 2023-06-27 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 a35bf50224a14d..f37845198d6065 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: 2023-06-26 +date: 2023-06-27 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 8bf993ff3fcd38..ddb8bce8a08246 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: 2023-06-26 +date: 2023-06-27 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 6208217757264d..820f47363e1578 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: 2023-06-26 +date: 2023-06-27 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 47f772548c50b9..0205e533373c4c 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: 2023-06-26 +date: 2023-06-27 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 27f8cc39fe01bc..eddf98b131196b 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: 2023-06-26 +date: 2023-06-27 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 bc3e235a71cbf0..b12fd91fd1e0e9 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: 2023-06-26 +date: 2023-06-27 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 32839d4864a8bf..3e3de2542a8688 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: 2023-06-26 +date: 2023-06-27 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 e98f47eb2e4f1d..b6b407be197bd2 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: 2023-06-26 +date: 2023-06-27 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 d428d79d57db04..885c81a21e6082 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: 2023-06-26 +date: 2023-06-27 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 9d398738bdc74b..55c9692752e9f5 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: 2023-06-26 +date: 2023-06-27 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 d3d83627ffe6b2..4ebc478877927c 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: 2023-06-26 +date: 2023-06-27 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 1a56987a71a997..fba0009833709f 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: 2023-06-26 +date: 2023-06-27 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 d56f032489fb36..86d8dcec77b761 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: 2023-06-26 +date: 2023-06-27 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 6594d6bb2ba0cb..bc5fc6e63d226b 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: 2023-06-26 +date: 2023-06-27 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 6e4189720e5318..750926dd6ff821 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: 2023-06-26 +date: 2023-06-27 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 e89434c3b175f2..8803bd25e05780 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: 2023-06-26 +date: 2023-06-27 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 60c1542fba30e9..e757ca5ddc7ff3 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: 2023-06-26 +date: 2023-06-27 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 240492ce62dbd0..6e4c1268e95768 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: 2023-06-26 +date: 2023-06-27 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 1486795a2f0339..cf29f07f60f4d9 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: 2023-06-26 +date: 2023-06-27 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 d73370d721e604..6e6263417a6923 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: 2023-06-26 +date: 2023-06-27 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 0f4e333ae9accd..daf85b1cdd430d 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: 2023-06-26 +date: 2023-06-27 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 ee061bbe4ee467..25fac1a95cc5ed 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: 2023-06-26 +date: 2023-06-27 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 126d31e7de9a8b..ce5c1b7288a581 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: 2023-06-26 +date: 2023-06-27 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 03bbe30493b32c..29f98b858747cf 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: 2023-06-26 +date: 2023-06-27 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 2e0d6f27d809b1..971dfc9a0939f2 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: 2023-06-26 +date: 2023-06-27 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 ab3944ad4fe1a3..925a5072a3f202 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: 2023-06-26 +date: 2023-06-27 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 be5a0a703e2941..6e2d0fffe532b9 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: 2023-06-26 +date: 2023-06-27 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 78f12fbdb00378..980ceed428a955 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: 2023-06-26 +date: 2023-06-27 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 9ad9fa03b0e14e..71f11246187cb1 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: 2023-06-26 +date: 2023-06-27 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 40638220d9a234..4bf9da0e1221f8 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: 2023-06-26 +date: 2023-06-27 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 316cda062133e5..461472dcba059b 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: 2023-06-26 +date: 2023-06-27 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 01c91495620c51..7df7bbf50c909b 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: 2023-06-26 +date: 2023-06-27 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 9de9651e8f18a6..370061f7eed504 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: 2023-06-26 +date: 2023-06-27 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 7ae55b589d8873..d57e6f8e2dcde9 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: 2023-06-26 +date: 2023-06-27 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 55596cd055e869..82fde9a2e30d08 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: 2023-06-26 +date: 2023-06-27 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 0ef78706608589..08358c05325304 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: 2023-06-26 +date: 2023-06-27 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 90e6173598c673..d9d8961f002d86 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: 2023-06-26 +date: 2023-06-27 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 eb7dc068d6d83b..9349a1e64d93b6 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: 2023-06-26 +date: 2023-06-27 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 811b7abac731fd..135adfc527397b 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: 2023-06-26 +date: 2023-06-27 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 caee71ab8a77e3..c4d4f65788dc62 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -4443,26 +4443,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/details.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/audit_log.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.ts" - }, { "plugin": "indexLifecycleManagement", "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts" @@ -4619,10 +4603,6 @@ "plugin": "stackConnectors", "path": "x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.ts" }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/legacy_uptime/uptime_server.ts" - }, { "plugin": "synthetics", "path": "x-pack/plugins/synthetics/server/server.ts" @@ -4683,6 +4663,10 @@ "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/server/routes/node_disk_space.ts" }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/uptime_server.ts" + }, { "plugin": "watcher", "path": "x-pack/plugins/watcher/server/routes/api/settings/register_load_route.ts" @@ -5539,18 +5523,6 @@ "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_privileges_route.test.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/audit_log.test.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list_handler.test.ts" - }, { "plugin": "spaces", "path": "x-pack/plugins/spaces/server/routes/api/external/get.test.ts" @@ -7225,14 +7197,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/file_upload_handler.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" @@ -7401,10 +7365,6 @@ "plugin": "stackConnectors", "path": "x-pack/plugins/stack_connectors/server/routes/get_slack_api_channels.ts" }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/legacy_uptime/uptime_server.ts" - }, { "plugin": "synthetics", "path": "x-pack/plugins/synthetics/server/server.ts" @@ -7437,6 +7397,10 @@ "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/server/routes/cluster_settings.ts" }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/uptime_server.ts" + }, { "plugin": "watcher", "path": "x-pack/plugins/watcher/server/routes/api/indices/register_get_route.ts" @@ -9023,10 +8987,6 @@ "plugin": "snapshotRestore", "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/legacy_uptime/uptime_server.ts" - }, { "plugin": "synthetics", "path": "x-pack/plugins/synthetics/server/server.ts" @@ -9035,6 +8995,10 @@ "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.ts" }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/uptime_server.ts" + }, { "plugin": "watcher", "path": "x-pack/plugins/watcher/server/routes/api/watch/register_execute_route.ts" @@ -10099,10 +10063,6 @@ "plugin": "snapshotRestore", "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/legacy_uptime/uptime_server.ts" - }, { "plugin": "synthetics", "path": "x-pack/plugins/synthetics/server/server.ts" @@ -10115,6 +10075,10 @@ "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/server/routes/ml_snapshots.ts" }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/uptime_server.ts" + }, { "plugin": "watcher", "path": "x-pack/plugins/watcher/server/routes/api/watch/register_delete_route.ts" @@ -14214,6 +14178,14 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/policy/index.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/details.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/status.ts" @@ -14222,6 +14194,14 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/state.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/audit_log.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.ts" + }, { "plugin": "fileUpload", "path": "x-pack/plugins/file_upload/server/routes.ts" @@ -15062,6 +15042,14 @@ "plugin": "unifiedSearch", "path": "src/plugins/unified_search/server/autocomplete/value_suggestions_route.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/file_upload_handler.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/suggestions/index.ts" diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index d791c42f5607b4..e8cc70c56e67ee 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: 2023-06-26 +date: 2023-06-27 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 8fa58562bdbfb8..25414c430a634e 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: 2023-06-26 +date: 2023-06-27 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 034d2c04a069a0..5d00078fd45b25 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: 2023-06-26 +date: 2023-06-27 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 fdfc4f629fdec2..3f7664728fb232 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: 2023-06-26 +date: 2023-06-27 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 d55fbbffdbfc62..36fdc89cc8876a 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: 2023-06-26 +date: 2023-06-27 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 3a0afbe6f14d5c..bd72a2356f26bd 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: 2023-06-26 +date: 2023-06-27 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 c55b8df4ba40f2..62f95e32676e02 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: 2023-06-26 +date: 2023-06-27 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 b830c567aad275..f61a6803460368 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: 2023-06-26 +date: 2023-06-27 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 d77f1c6c6f1d28..39d25a49e15f43 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: 2023-06-26 +date: 2023-06-27 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 e8c55bbcf6cb82..510b236940fa2f 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: 2023-06-26 +date: 2023-06-27 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 251baa8334ebd1..f33ccbf0fc658a 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: 2023-06-26 +date: 2023-06-27 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 5b819eb5ddec1b..f5454be1bd65fd 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: 2023-06-26 +date: 2023-06-27 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 aa7b52bb6f0503..ad3e766ebf6ca2 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: 2023-06-26 +date: 2023-06-27 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 2918a7d41c6a30..1d39eee67e1c0e 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: 2023-06-26 +date: 2023-06-27 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 b14992536edd00..caba647b6b8a75 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: 2023-06-26 +date: 2023-06-27 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 bc378bef663741..bd22d5fb0acdc9 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: 2023-06-26 +date: 2023-06-27 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 62a396178bf99d..fe755daef2c5e6 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: 2023-06-26 +date: 2023-06-27 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 bae66122591a10..0467871c2d691e 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: 2023-06-26 +date: 2023-06-27 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 d84bcf2e2e63a2..b315f070ec984b 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: 2023-06-26 +date: 2023-06-27 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 40c4fe3f4ed36e..b42008f9996971 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: 2023-06-26 +date: 2023-06-27 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 d0809cf4290f35..cbb2ca8b80ecd9 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: 2023-06-26 +date: 2023-06-27 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 fa80d7f0f32588..ba9558f6722223 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: 2023-06-26 +date: 2023-06-27 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.mdx b/api_docs/kbn_core_metrics_server.mdx index 14d0c083444e89..dd3dc4e5df2164 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: 2023-06-26 +date: 2023-06-27 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 b77a0058713b51..edf4083568931b 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: 2023-06-26 +date: 2023-06-27 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 d8c412b3f5a285..56494413f9c07c 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: 2023-06-26 +date: 2023-06-27 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 521fb3bdec5864..dacdd282c045fd 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: 2023-06-26 +date: 2023-06-27 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 28f6086ab90c33..3584aef1a92beb 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: 2023-06-26 +date: 2023-06-27 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 cbdb530cb5993b..6d34ba9b56558e 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: 2023-06-26 +date: 2023-06-27 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 4cf835b6d2d873..14c46be24a202b 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: 2023-06-26 +date: 2023-06-27 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 963ca1a4e9c458..2d6ff53b9923a6 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: 2023-06-26 +date: 2023-06-27 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 96b08efa139232..7a26202ab7a291 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: 2023-06-26 +date: 2023-06-27 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 41a0afa3c1a801..65df434e476739 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: 2023-06-26 +date: 2023-06-27 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 122230d1fe9ae1..6b897410c43aba 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: 2023-06-26 +date: 2023-06-27 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 f66e2468cfddf4..fe74813a31c979 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: 2023-06-26 +date: 2023-06-27 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 9a84934e04007e..0a017e964e18c2 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: 2023-06-26 +date: 2023-06-27 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 4649b1a7bfe235..26e864d20de7b6 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: 2023-06-26 +date: 2023-06-27 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 609f60f0fb05f8..fcf33f02863fcd 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: 2023-06-26 +date: 2023-06-27 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_server.mdx b/api_docs/kbn_core_plugins_server.mdx index fb892eaf48d0fb..c9074fc4d65207 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: 2023-06-26 +date: 2023-06-27 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 dd97e9e1537437..a02cbd85ca9f48 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: 2023-06-26 +date: 2023-06-27 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 ae82f891adcee0..c6aac515c1055e 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: 2023-06-26 +date: 2023-06-27 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 948dd2001dd083..5d10f23e7464c2 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: 2023-06-26 +date: 2023-06-27 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 34db801d13595d..23c2d668f125fa 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: 2023-06-26 +date: 2023-06-27 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 620cf8b961e213..c4f54fc73949dd 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: 2023-06-26 +date: 2023-06-27 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 aa988b1acabf08..2578fd3e5a8c65 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: 2023-06-26 +date: 2023-06-27 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 bb5a7d4f55390c..06df13d38f3257 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: 2023-06-26 +date: 2023-06-27 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.devdocs.json b/api_docs/kbn_core_saved_objects_api_browser.devdocs.json index a208c108ab329f..ace8a7cf165ce0 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.devdocs.json +++ b/api_docs/kbn_core_saved_objects_api_browser.devdocs.json @@ -3099,6 +3099,14 @@ "plugin": "synthetics", "path": "x-pack/plugins/synthetics/common/types/synthetics_monitor.ts" }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/common/types/synthetics_monitor.ts" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/common/types/synthetics_monitor.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/helpers/saved_objects_utils/find_object_by_title.test.ts" diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 67f9b6ce1dcbca..ff39dc99dfc6c0 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: 2023-06-26 +date: 2023-06-27 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 61cf80861c342c..328820801247be 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: 2023-06-26 +date: 2023-06-27 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 cb432e0e99a461..c6955a2785cb9b 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: 2023-06-26 +date: 2023-06-27 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 178c9348accf2d..c679fc44aecdc2 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: 2023-06-26 +date: 2023-06-27 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 fd8503c8d7a580..f7f8da13cf4896 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: 2023-06-26 +date: 2023-06-27 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 a8eb078474a699..84b0aa51066c40 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: 2023-06-26 +date: 2023-06-27 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 ff731ea6608eea..2df7aec2c6c9dc 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: 2023-06-26 +date: 2023-06-27 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 12da48b47af3c9..f84ab639fca785 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: 2023-06-26 +date: 2023-06-27 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 9bc718bcdfda57..5ff4921e66a6c8 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: 2023-06-26 +date: 2023-06-27 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 efbe3a67c8379c..e1bce5e54e5c41 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: 2023-06-26 +date: 2023-06-27 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 1f24502f58e2d8..1ae4b2878f108b 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: 2023-06-26 +date: 2023-06-27 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 49d6f42d4bd7ca..a7834259c6396f 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: 2023-06-26 +date: 2023-06-27 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 75c57a644a736e..830a0c0f059a5f 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: 2023-06-26 +date: 2023-06-27 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 96499408b28916..6b93538ba42899 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: 2023-06-26 +date: 2023-06-27 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 774e037483ab91..d20797c4c75f62 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: 2023-06-26 +date: 2023-06-27 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 0c8ef84738c20b..09cf8637e63c77 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: 2023-06-26 +date: 2023-06-27 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 3c2495608993c4..a3cbbe8e5bbb91 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: 2023-06-26 +date: 2023-06-27 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 c76202b99c4187..e608e73672ec6f 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: 2023-06-26 +date: 2023-06-27 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 3e53eeca33fac6..808bb2f7f9cada 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: 2023-06-26 +date: 2023-06-27 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 7b3412580ebacc..cc686b51723917 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: 2023-06-26 +date: 2023-06-27 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 fcaa53115bc73c..55c65fb5e12189 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: 2023-06-26 +date: 2023-06-27 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 0c21fda59fb401..42908446a4a99d 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: 2023-06-26 +date: 2023-06-27 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 e06c825e9558c0..f7530d69045411 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: 2023-06-26 +date: 2023-06-27 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 c567a1931de92a..6219e54ca039ee 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: 2023-06-26 +date: 2023-06-27 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 deaf7942b19184..081543b26bc725 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: 2023-06-26 +date: 2023-06-27 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_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 70b9c296ccac4f..3c66b575029d21 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: 2023-06-26 +date: 2023-06-27 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 bd2903c1152c7a..c0fdb97577d919 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: 2023-06-26 +date: 2023-06-27 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 4035a8fa0a3e59..f0676d66554267 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: 2023-06-26 +date: 2023-06-27 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_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index 44e1c9e674ae2f..41c2b265fcc41f 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] --- import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 2f3e3968736775..eb707147a950b3 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: 2023-06-26 +date: 2023-06-27 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 af13a77240af05..94c28acc7ccc1d 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: 2023-06-26 +date: 2023-06-27 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 d7b41840b90219..39df3fce5bfecf 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: 2023-06-26 +date: 2023-06-27 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 cdf308e38d3f7b..cdf503cae0cbf6 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: 2023-06-26 +date: 2023-06-27 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 ef15e6bf37c315..bdad6c9a5e6c93 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: 2023-06-26 +date: 2023-06-27 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 9a8ff8bd8de556..2ad286ac30a8af 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: 2023-06-26 +date: 2023-06-27 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 bc7bc12c4fa425..b3f4d4fa3d8b36 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: 2023-06-26 +date: 2023-06-27 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 3ec706251ba13a..97420181dc97ba 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: 2023-06-26 +date: 2023-06-27 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 f56c6bf4cc8c40..02cbc7e0c482e6 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: 2023-06-26 +date: 2023-06-27 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 93c95abd0c3e76..bba9581c5a9dde 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: 2023-06-26 +date: 2023-06-27 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 741b327a4ae9e6..21c264fcec02e8 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: 2023-06-26 +date: 2023-06-27 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 b46793a5eba6a9..80c8e7e1119ef8 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: 2023-06-26 +date: 2023-06-27 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 c2648d953c4918..814a4bb7a98374 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: 2023-06-26 +date: 2023-06-27 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 ff7f51bdd04d58..7b1a3ea4952a29 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: 2023-06-26 +date: 2023-06-27 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 340963b6da08f6..380108445ef181 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: 2023-06-26 +date: 2023-06-27 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 32c8598aaf0c6a..b057322f43a440 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index d3efa40cc9cba0..0cbb3df09f65f8 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 109d549c58a4d9..1af5833874ee54 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 1b37cb317aa83e..eec09e44a6ce0b 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: 2023-06-26 +date: 2023-06-27 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 63c43930d1b0ae..0b3d16c09088e9 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: 2023-06-26 +date: 2023-06-27 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 98c625493b499a..d5dbe790090509 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: 2023-06-26 +date: 2023-06-27 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 90ff9f570ae1c0..07f8e09b32c598 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: 2023-06-26 +date: 2023-06-27 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 797af7b8866558..07f8f344ff66a5 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index c4d46a06627d46..d6316d396a6040 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index 9940a6fd4f629a..493ac8202b340e 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: 2023-06-26 +date: 2023-06-27 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 6f71e4063901d8..2e446e901e4167 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: 2023-06-26 +date: 2023-06-27 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 62639f1df13171..fe6eac605d85d3 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: 2023-06-26 +date: 2023-06-27 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 86e6cb5dbdb2e7..00905442bca521 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: 2023-06-26 +date: 2023-06-27 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 a35a1355d7099f..79ffb55143275a 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: 2023-06-26 +date: 2023-06-27 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 6fc0fd4bf28f79..d6e5bdd91df787 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: 2023-06-26 +date: 2023-06-27 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 281d4ea4d481e1..c2a00362c98fd2 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: 2023-06-26 +date: 2023-06-27 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 dc92acee27db62..7858434ce5092a 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: 2023-06-26 +date: 2023-06-27 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 ba6fc0df9c05dd..ec5203c613ddda 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 4a0d3d1ab1ef3c..f41bf1317f9085 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: 2023-06-26 +date: 2023-06-27 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 345b1082eb210e..f53aabeefaf2e2 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: 2023-06-26 +date: 2023-06-27 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 ce4932780d6026..b6cfb7667d5eb3 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: 2023-06-26 +date: 2023-06-27 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 8a18e1f8c7ba1c..5e6b058a70e9f4 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx index f520b2d0874b5c..dd815bcac66e3f 100644 --- a/api_docs/kbn_ecs.mdx +++ b/api_docs/kbn_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs title: "@kbn/ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs'] --- import kbnEcsObj from './kbn_ecs.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 1c26b5231e629b..4f381036ac8dfb 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: 2023-06-26 +date: 2023-06-27 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_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 1c34d8973567a7..e99a24e9c549f0 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index a84e4adc0eda05..cb4aa81cdd4949 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: 2023-06-26 +date: 2023-06-27 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 56ecf8d7c8c482..c9daa4a4390a8d 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: 2023-06-26 +date: 2023-06-27 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 f4e19a06a50480..1a3f1a8e5be8e9 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: 2023-06-26 +date: 2023-06-27 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 839025a0eb5c9f..70d159c1d6c032 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: 2023-06-26 +date: 2023-06-27 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 4142214a740af2..4aa18bcd40458b 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: 2023-06-26 +date: 2023-06-27 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 2de9e7751633fd..e2658c63cf8c98 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index 758ea5fcc7d60f..16e9f10cb675eb 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: 2023-06-26 +date: 2023-06-27 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 240ebc7fee6bd3..9862b5d2ea2df3 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index c6f2b9e9f992c1..6f41985f251179 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: 2023-06-26 +date: 2023-06-27 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_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index 392bf5be00f845..7fb64de478e40b 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: 2023-06-26 +date: 2023-06-27 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_generate.mdx b/api_docs/kbn_generate.mdx index 607e62d7846011..12041ed7bcab96 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: 2023-06-26 +date: 2023-06-27 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 b40c8657b818c8..c1eb45f60d117b 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: 2023-06-26 +date: 2023-06-27 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 5efd5baae4e079..52042a276461c9 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx index c23193ecfb6c07..5de68262c7bcf4 100644 --- a/api_docs/kbn_generate_csv_types.mdx +++ b/api_docs/kbn_generate_csv_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types title: "@kbn/generate-csv-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv-types plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types'] --- import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 45bd4fc24f9bc4..94f648549a3262 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: 2023-06-26 +date: 2023-06-27 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 18e34e32731cf0..99104b768a68ba 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: 2023-06-26 +date: 2023-06-27 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 5f0d8e063b6bb8..76c48471dea374 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: 2023-06-26 +date: 2023-06-27 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 4162bcad4f44b8..e6996d54c9e282 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: 2023-06-26 +date: 2023-06-27 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 cb9b966ac81044..39bc22e83af4ef 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: 2023-06-26 +date: 2023-06-27 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 b4b51eb969c9d3..1632e62ccee882 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: 2023-06-26 +date: 2023-06-27 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 313bc1bfeb471a..852f87aa0b5ed7 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: 2023-06-26 +date: 2023-06-27 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 c7a2bc761782b0..fbfaf8fb3fd63d 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: 2023-06-26 +date: 2023-06-27 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 bb7791be17cbe3..c8e2d3cf3af620 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: 2023-06-26 +date: 2023-06-27 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 3d67e380ded1be..62af25ef92bfd4 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: 2023-06-26 +date: 2023-06-27 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 07ef0f6963600b..4cf99565f88344 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: 2023-06-26 +date: 2023-06-27 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 48f8e6046799ea..53081855dfc077 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: 2023-06-26 +date: 2023-06-27 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 8d4bcb1c1199cd..c285210116ce3a 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: 2023-06-26 +date: 2023-06-27 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 58153ac6d2f9ba..a4cd6d68e4fc41 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: 2023-06-26 +date: 2023-06-27 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 7e44a12f2fa315..14f93263941c19 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: 2023-06-26 +date: 2023-06-27 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 ab3bf63b64a74c..8a6a81009880f1 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: 2023-06-26 +date: 2023-06-27 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 0f08d3782c9d2e..ac867e1a5b1cbb 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index bf4c919b6c94f5..34d23546eb509e 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: 2023-06-26 +date: 2023-06-27 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 9dcaff34bd4bef..8071d3758463cd 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index e59afc0b050cfb..d8ed95f7107d29 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 306fae4c25f3f8..ee6cd9bd116b43 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: 2023-06-26 +date: 2023-06-27 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 69c0e8f953f7ed..79ea4d1d086fbd 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: 2023-06-26 +date: 2023-06-27 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 fe5927f3106378..6cd4d3700b968c 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: 2023-06-26 +date: 2023-06-27 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 d38961ea74ee12..08e754f276f6a1 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: 2023-06-26 +date: 2023-06-27 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_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 6c0042a209087d..fb83698b7f2b9c 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: 2023-06-26 +date: 2023-06-27 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 7a919f58f28c1f..af1bda0e0a69b1 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: 2023-06-26 +date: 2023-06-27 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 1cdfbb6f4e4dd5..d41fe5dd1bd9c7 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: 2023-06-26 +date: 2023-06-27 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 383eebb2664779..dcf884781dc474 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: 2023-06-26 +date: 2023-06-27 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 87eacd60d9cc49..d42a0dbc5dff85 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: 2023-06-26 +date: 2023-06-27 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_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 505c9c3c949cf0..2317cad1091703 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: 2023-06-26 +date: 2023-06-27 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 672a324b82e8d6..fdc7881cebfa01 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: 2023-06-26 +date: 2023-06-27 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 bf2dbb04ba9016..b9c77a159c7af6 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: 2023-06-26 +date: 2023-06-27 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 1adc5e26f3f9bc..07031e238096ab 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: 2023-06-26 +date: 2023-06-27 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 95eb0dffb828d1..9a577de0d3fae7 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: 2023-06-26 +date: 2023-06-27 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 37a75318a14ee1..987eda440115fe 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: 2023-06-26 +date: 2023-06-27 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 bdb8832cc88f2f..6feee0f5965933 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: 2023-06-26 +date: 2023-06-27 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 57866b3dd365d4..36fb50aee0e14a 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: 2023-06-26 +date: 2023-06-27 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 849038323d96c1..49619628c24c85 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: 2023-06-26 +date: 2023-06-27 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 995caf6f27fc02..d2c916c989fbba 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: 2023-06-26 +date: 2023-06-27 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 d7af6f189e4ebc..7539866cb242e1 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: 2023-06-26 +date: 2023-06-27 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 78b21b441822b6..6215f56364dbd9 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: 2023-06-26 +date: 2023-06-27 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_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 8c1f0de998ad6e..d3bed0e05df191 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 71fa6099839a46..a8c35b3def775d 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 4fd544982d1852..676b0404ae1b60 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: 2023-06-26 +date: 2023-06-27 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 410e2eb3fc445e..d79f9c0445efdc 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 11a7b56733ccc2..12c0a968aba0bc 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: 2023-06-26 +date: 2023-06-27 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 6eba7553f32b25..8064220b39de1d 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: 2023-06-26 +date: 2023-06-27 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 347dd664affca7..4ae848736f8ff5 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: 2023-06-26 +date: 2023-06-27 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_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 31023b90e54593..f317237009f176 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: 2023-06-26 +date: 2023-06-27 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_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 0721910ef74b04..9fbdf65380b001 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: 2023-06-26 +date: 2023-06-27 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 195f59841e82a7..bf79d1a44e1343 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 3bf494e25f92e0..1f0db6a93611da 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: 2023-06-26 +date: 2023-06-27 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 61201e8b2bbccd..e773b91bbeca97 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 675dfca453184b..b34b1fff849589 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: 2023-06-26 +date: 2023-06-27 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 8ac028be993e44..57edf3e53be5a6 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: 2023-06-26 +date: 2023-06-27 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 b759922c23b5b3..57dddfb9542a9a 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: 2023-06-26 +date: 2023-06-27 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 dd39a2f27cf68a..c89e6d746b6fee 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: 2023-06-26 +date: 2023-06-27 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 4c8a7df7c93def..4261084e69e5fa 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index ea4462d997a258..e64a5afe094c73 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 36f827b7cadab8..6f4256e63dfba2 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: 2023-06-26 +date: 2023-06-27 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 b32f48f2e7f496..ed1d2e777be66b 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index c09d8363af1608..074ede38afafb1 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: 2023-06-26 +date: 2023-06-27 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 0bbcde964a1a7e..e740ae89778257 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: 2023-06-26 +date: 2023-06-27 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 520a90bb3ee388..6b5c7d6e1bfe98 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: 2023-06-26 +date: 2023-06-27 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 8c357ad5929fd7..1e4601fff410f9 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: 2023-06-26 +date: 2023-06-27 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 a28a2e40c206f2..fcb437c20b0e85 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: 2023-06-26 +date: 2023-06-27 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 d18a0e9e5444dd..2a4d1d688a7023 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: 2023-06-26 +date: 2023-06-27 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 f727a726092e38..73b11af47d36fa 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: 2023-06-26 +date: 2023-06-27 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 1cc591aa1cde47..f6f882c5c98ac8 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: 2023-06-26 +date: 2023-06-27 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 83c1da2af63f10..accd1a39b9e7ec 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: 2023-06-26 +date: 2023-06-27 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 c67db8cfeb69ff..0030a148039488 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: 2023-06-26 +date: 2023-06-27 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 f37cca829c897f..998b0d415333fb 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: 2023-06-26 +date: 2023-06-27 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 5698181dd15dba..420aa8e42494e2 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: 2023-06-26 +date: 2023-06-27 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 9a0befd5bb88e9..2118075ad3a239 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: 2023-06-26 +date: 2023-06-27 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 6c39c3fcd0a452..3bd70b2825c1f0 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: 2023-06-26 +date: 2023-06-27 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 acc47dfc60948c..eaf05797a8fca6 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: 2023-06-26 +date: 2023-06-27 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 d943bc875a1857..3196e0c131c985 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: 2023-06-26 +date: 2023-06-27 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 2424175185e1a7..9e58d03891c746 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: 2023-06-26 +date: 2023-06-27 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 20fdbc6b7f2cc1..5c2d692d4bdc72 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: 2023-06-26 +date: 2023-06-27 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 8d25134e6bc827..f8bb701e715848 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: 2023-06-26 +date: 2023-06-27 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 c0a62de90829d0..2dd3e7afc2a3e5 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: 2023-06-26 +date: 2023-06-27 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 27cde7fba5761d..4f61b83f1fe7ed 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: 2023-06-26 +date: 2023-06-27 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 352e8b6a9fcb11..66652e5834ed55 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: 2023-06-26 +date: 2023-06-27 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_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 18dfee0c8d71d8..f44a4959c10723 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: 2023-06-26 +date: 2023-06-27 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_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index fc09ad25de7e8b..af801c82aa722e 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: 2023-06-26 +date: 2023-06-27 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 17bcc022f1c471..3833992c6dac6f 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: 2023-06-26 +date: 2023-06-27 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 f45ace1a6e4009..c24338171e7b31 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: 2023-06-26 +date: 2023-06-27 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_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index 880204a9954511..0d1c3318bbd66d 100644 --- a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx +++ b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-user-profile-components title: "@kbn/shared-ux-avatar-user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-user-profile-components plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-user-profile-components'] --- import kbnSharedUxAvatarUserProfileComponentsObj from './kbn_shared_ux_avatar_user_profile_components.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 fcafd7f5b52158..771e86076e8f04 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: 2023-06-26 +date: 2023-06-27 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_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index 24c89e6da93914..6e68fe918186cd 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 2758567e4ae5a1..31bc587d7dace4 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: 2023-06-26 +date: 2023-06-27 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 6b859116a0b717..4279b10fccf500 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: 2023-06-26 +date: 2023-06-27 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 c4bf23e7405871..d72f9a50fff42d 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: 2023-06-26 +date: 2023-06-27 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 87714040d9b0e7..2e3933e548b540 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: 2023-06-26 +date: 2023-06-27 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_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index bf2111f0ae4394..c3f112659c9928 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: 2023-06-26 +date: 2023-06-27 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 3f5449897db5e4..42afaf1c3bf368 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: 2023-06-26 +date: 2023-06-27 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 8fb35f781d25fa..c4e9bee4372ef7 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: 2023-06-26 +date: 2023-06-27 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 ef630aaf6ea16e..604208d7f705d5 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: 2023-06-26 +date: 2023-06-27 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 b7c838c7d03da1..9a12619fc1a77c 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: 2023-06-26 +date: 2023-06-27 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 0e8e61592e14d7..d7dbab71f32750 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: 2023-06-26 +date: 2023-06-27 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 b731bff8a1ef89..11f3d34b96b6b0 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: 2023-06-26 +date: 2023-06-27 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 33ba2bc8b7f14c..1bfe3e2cdfbb49 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: 2023-06-26 +date: 2023-06-27 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 0185a5c9ad453c..eb50b80bde8d67 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: 2023-06-26 +date: 2023-06-27 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 0662379989cabf..d987eb5dcacfd2 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: 2023-06-26 +date: 2023-06-27 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 cda3f0e88a7179..ee01d2feebea31 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: 2023-06-26 +date: 2023-06-27 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 4655fd93b969d0..0172be31311c50 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: 2023-06-26 +date: 2023-06-27 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 86e1189e2a1457..bf743c385f1b11 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: 2023-06-26 +date: 2023-06-27 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 9bbf999e5205af..e4b2da7bbeacc5 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: 2023-06-26 +date: 2023-06-27 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 2c4456ab202408..d7c4a766556437 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: 2023-06-26 +date: 2023-06-27 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 f5bcbd98f164cc..09cb1bbff4680f 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: 2023-06-26 +date: 2023-06-27 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 73ce88f068d096..5779d460e467a9 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: 2023-06-26 +date: 2023-06-27 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 77fc35641c75b2..9d5c43943c986a 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: 2023-06-26 +date: 2023-06-27 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 48e0e38c2fd0fc..e5440133382246 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: 2023-06-26 +date: 2023-06-27 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 04914636c8183f..b03c6ae172fc69 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: 2023-06-26 +date: 2023-06-27 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 7c5d98922aeb49..a907699057ddd6 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: 2023-06-26 +date: 2023-06-27 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 d53ae3e7ff69a2..5d8020e9968b92 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: 2023-06-26 +date: 2023-06-27 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 0cfd39f69453d1..f02d3f460122fb 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: 2023-06-26 +date: 2023-06-27 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 be3195c01c528b..8b1b8d20866352 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: 2023-06-26 +date: 2023-06-27 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 4dbfd0ffc19d07..16e98845e0f63f 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: 2023-06-26 +date: 2023-06-27 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 505f3bb3bd8dad..65ba1fd102eda3 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: 2023-06-26 +date: 2023-06-27 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 2a925dc70f8179..2be4bf5dcb7002 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: 2023-06-26 +date: 2023-06-27 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 8a9551c53e176e..f2024b7074c77d 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: 2023-06-26 +date: 2023-06-27 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 6f71d499af6de6..63f57cfda9e19b 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: 2023-06-26 +date: 2023-06-27 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 4d56e379dfb61c..da4e343daa7317 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: 2023-06-26 +date: 2023-06-27 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 cd867536f7c7aa..9fa7ed044605cb 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: 2023-06-26 +date: 2023-06-27 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 002793819f753d..6d53f055132fd7 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: 2023-06-26 +date: 2023-06-27 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 fc265f35a40829..698c515dc1143b 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 8270e16ebd6bd2..3b48a384ef85b0 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: 2023-06-26 +date: 2023-06-27 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 53106827e9fb26..5f8866c5492302 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: 2023-06-26 +date: 2023-06-27 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 5270d5e876d75c..201d387a9ace8a 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: 2023-06-26 +date: 2023-06-27 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 286b9aab65c478..b88afbbaec97e9 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: 2023-06-26 +date: 2023-06-27 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 50cd911555ab25..83fc778bdadad5 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index b51a8357df60af..d1d9b2b29ead2a 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: 2023-06-26 +date: 2023-06-27 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 f4dd0ce044311d..3a528bb15613d9 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: 2023-06-26 +date: 2023-06-27 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 ebb400853a00ac..6b27a1ab8270dc 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 39c653aabee8f7..bda8bce693f5f2 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index d3b6050e20733f..9ea263a62037b3 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: 2023-06-26 +date: 2023-06-27 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 6b27ffee3f39d2..1472fc9e06620e 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: 2023-06-26 +date: 2023-06-27 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 bb933d804d7347..990341b306bb45 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: 2023-06-26 +date: 2023-06-27 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 30c1f54eaa7bac..5ab9ca77898098 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: 2023-06-26 +date: 2023-06-27 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 a91e4b0cf3c2eb..4b229ed265f564 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index d0112c0f3537ca..7a4e6e6e9b938e 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index ff7d07b4f9cd00..3e62e5c7349299 100644 --- a/api_docs/kbn_url_state.mdx +++ b/api_docs/kbn_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state title: "@kbn/url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/url-state plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 57acc638085f05..4dc34a845cec93 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: 2023-06-26 +date: 2023-06-27 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 340198fb367479..efe0bc5ef40bc6 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: 2023-06-26 +date: 2023-06-27 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 2be55cfc91931e..00dd1682efc369 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: 2023-06-26 +date: 2023-06-27 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 4fce541b7babcc..97d536862f2310 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index cdcdfe753612f3..83e3ffb074066f 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 2c2006c002df02..0c18c2ecb5c310 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index df7d41eaebf7dd..d566b58672683e 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -1394,55 +1394,55 @@ }, { "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/lib/alert_types/alert_messages.tsx" + "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" }, { "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/lib/alert_types/alert_messages.tsx" + "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" }, { "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/lib/alert_types/alert_messages.tsx" + "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_app.tsx" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/shared_imports.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_app.tsx" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_app.tsx" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/shared_imports.ts" + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx" }, { "plugin": "ux", diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index ed1aa40c65bd54..5dfef494742f43 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: 2023-06-26 +date: 2023-06-27 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 3087cc4abae4f0..ed9e378ec4a05f 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: 2023-06-26 +date: 2023-06-27 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 600bb1c05152a5..1310d0410d6545 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: 2023-06-26 +date: 2023-06-27 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 ce203c529e01e6..a3dca011ebc799 100644 --- a/api_docs/lens.devdocs.json +++ b/api_docs/lens.devdocs.json @@ -8559,9 +8559,7 @@ "YDomainRange", " | undefined>; position?: ", "Position", - " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; showGridLines?: boolean | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; }>> & Partial> & Partial | LensAttributes; overrides?: Partial | LensAttributes; overrides?: Partial; position?: ", "Position", - " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; showGridLines?: boolean | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; }>> | undefined; }" + " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; }>> | undefined; }" ], "path": "x-pack/plugins/lens/public/embeddable/embeddable_component.tsx", "deprecated": false, diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 54478510ae4b0e..c7b4c3b8a0e4a3 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 6d0bf7d924ce08..fa615bcf671ae2 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: 2023-06-26 +date: 2023-06-27 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 faa86266f4af84..0280db9cc8e27d 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: 2023-06-26 +date: 2023-06-27 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 a064e9d85edb83..37945bcf3f0c21 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index b0e056aeadd6c4..295be03dfe434e 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 582ea5fe3a3977..5c79a671877d1e 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: 2023-06-26 +date: 2023-06-27 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 c4fee8cd8df3c8..d7b78eeb993e2e 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: 2023-06-26 +date: 2023-06-27 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 358e9b37923629..4ed80c5294f05e 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 3b68b031fe9143..b3a168bae49ef6 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 2a3fb9c3e17888..a2b61642c21ddc 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: 2023-06-26 +date: 2023-06-27 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 0bc7ad33a3978e..aaabbaf2b4dda0 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: 2023-06-26 +date: 2023-06-27 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 69591fb9066711..2ef1ff0be02474 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: 2023-06-26 +date: 2023-06-27 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 d5c53775716b07..0465cdb1717acb 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 3b243b7e5f1d99..7cdf819b59617a 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index 2f5c143982bf55..2dcbcc8573e20c 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -7839,6 +7839,14 @@ "StringC", ", ", "NumberC", + "]>; docCount: ", + "NumberC", + "; pValue: ", + "UnionC", + "<[", + "NumberC", + ", ", + "NullC", "]>; }>>; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", @@ -7847,7 +7855,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { significantFieldValues: { field: string; value: string | number; }[]; }; }; }) => Promise; } & ", + " & { params: { body: { significantFieldValues: { field: string; value: string | number; docCount: number; pValue: number | null; }[]; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -9413,6 +9421,14 @@ "StringC", ", ", "NumberC", + "]>; docCount: ", + "NumberC", + "; pValue: ", + "UnionC", + "<[", + "NumberC", + ", ", + "NullC", "]>; }>>; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", @@ -9421,7 +9437,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { significantFieldValues: { field: string; value: string | number; }[]; }; }; }) => Promise; } & ", + " & { params: { body: { significantFieldValues: { field: string; value: string | number; docCount: number; pValue: number | null; }[]; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -14891,7 +14907,15 @@ "StringC", ", ", "NumberC", - "]>; }>>; }>; messages: (params: { significantFieldValues: { field: string; value: string | number; }[]; }) => ", + "]>; docCount: ", + "NumberC", + "; pValue: ", + "UnionC", + "<[", + "NumberC", + ", ", + "NullC", + "]>; }>>; }>; messages: (params: { significantFieldValues: { field: string; value: string | number; docCount: number; pValue: number | null; }[]; }) => ", "ChatCompletionRequestMessage", "[]; }" ], diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 1e0f4a85f54bb1..4e435f62b33ea1 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 8051c1f3bf2ff3..f1d6344582ac59 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: 2023-06-26 +date: 2023-06-27 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 70bacaaf4dc6f2..d261ae7032bd4c 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: 2023-06-26 +date: 2023-06-27 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 43b0b33b1ade35..ac454a61097f43 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 8414184522613a..7d3d587888d4ea 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,19 +15,19 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 640 | 533 | 38 | +| 641 | 533 | 38 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 70886 | 544 | 60719 | 1383 | +| 70891 | 544 | 60722 | 1385 | ## Plugin Directory | Plugin name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 267 | 10 | 262 | 26 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 268 | 10 | 263 | 27 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 36 | 1 | 32 | 2 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 45 | 0 | 27 | 1 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 635 | 1 | 611 | 47 | @@ -94,7 +94,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 62 | 0 | 62 | 2 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | File upload, download, sharing, and serving over HTTP implementation in Kibana. | 239 | 0 | 24 | 9 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Simple UI for managing files in Kibana | 2 | 1 | 2 | 0 | -| | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1185 | 3 | 1069 | 34 | +| | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1187 | 3 | 1071 | 35 | | ftrApis | [@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) | - | 68 | 0 | 14 | 5 | | globalSearchBar | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 0 | 0 | 0 | 0 | @@ -154,7 +154,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-reporting-services](https://github.com/orgs/elastic/teams/kibana-reporting-services) | Kibana Screenshotting Plugin | 27 | 0 | 8 | 5 | | searchprofiler | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 283 | 0 | 94 | 1 | -| | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 158 | 2 | 114 | 30 | +| | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 159 | 2 | 115 | 30 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | The core Serverless plugin, providing APIs to Serverless Project plugins. | 17 | 0 | 16 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Serverless customizations for observability. | 6 | 0 | 6 | 0 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Serverless customizations for search. | 6 | 0 | 6 | 0 | @@ -179,9 +179,10 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 546 | 11 | 520 | 49 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds UI Actions service to Kibana | 144 | 2 | 102 | 9 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Extends UI Actions plugin with more functionality | 206 | 0 | 140 | 9 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | The `unifiedHistogram` plugin provides UI components to create a layout including a resizable histogram and a main display. | 53 | 0 | 24 | 2 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | The `unifiedHistogram` plugin provides UI components to create a layout including a resizable histogram and a main display. | 52 | 0 | 23 | 2 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 137 | 2 | 100 | 20 | | upgradeAssistant | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | +| uptime | [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) | This plugin visualizes data from Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 | | urlDrilldown | [@elastic/kibana-app-services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds drilldown implementations to Kibana | 0 | 0 | 0 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 12 | 0 | 12 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 55 | 0 | 16 | 2 | @@ -265,7 +266,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 5 | 0 | 0 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 16 | 0 | 7 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 6 | 0 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 155 | 0 | 61 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 157 | 0 | 61 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 3 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 4 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 8 | 0 | 8 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index d8d9022e7fd8d7..c03a94f272da8c 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: 2023-06-26 +date: 2023-06-27 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 81cbb7c86f3d9a..2424416d9b6062 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index abe2666fa607b8..1583511b647590 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: 2023-06-26 +date: 2023-06-27 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 96404ba2904199..bf18e379dfd81f 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/reporting_export_types.mdx b/api_docs/reporting_export_types.mdx index f18ee262f7a3af..8056e2acf1bdd0 100644 --- a/api_docs/reporting_export_types.mdx +++ b/api_docs/reporting_export_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reportingExportTypes title: "reportingExportTypes" image: https://source.unsplash.com/400x175/?github description: API docs for the reportingExportTypes plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reportingExportTypes'] --- import reportingExportTypesObj from './reporting_export_types.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index db70642ec13427..22be1b002c30ca 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: 2023-06-26 +date: 2023-06-27 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 7bca48bdaa0475..786e74b8338d4c 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: 2023-06-26 +date: 2023-06-27 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 8069ffd8c73af7..0ded4086a0807f 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: 2023-06-26 +date: 2023-06-27 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 bf8db2e7091476..42f96ece476c34 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: 2023-06-26 +date: 2023-06-27 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 8d37aaf4e3e1d2..6c68b21c73400f 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: 2023-06-26 +date: 2023-06-27 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 8842406ec892bc..ea1c64ffefd14e 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: 2023-06-26 +date: 2023-06-27 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 c9310336021359..9451f6b51cf648 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: 2023-06-26 +date: 2023-06-27 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 af21420cfe8539..6cddb5cad5b133 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: 2023-06-26 +date: 2023-06-27 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 4c2de8ea3df608..b249eae12b7ca2 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: 2023-06-26 +date: 2023-06-27 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 a454948e08a62d..1b18cc24fb5f24 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: 2023-06-26 +date: 2023-06-27 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 88418da89b4073..c94f4828e9bbec 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: 2023-06-26 +date: 2023-06-27 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 01f21fc60fa70c..ba7d2c66def451 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: 2023-06-26 +date: 2023-06-27 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 27970315a53814..9f92facb073bdd 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -2650,6 +2650,21 @@ } ], "misc": [ + { + "parentPluginId": "securitySolution", + "id": "def-common.ADD_DATA_PATH", + "type": "string", + "tags": [], + "label": "ADD_DATA_PATH", + "description": [], + "signature": [ + "\"/app/integrations/browse/security\"" + ], + "path": "x-pack/plugins/security_solution/common/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "securitySolution", "id": "def-common.APP_ID", diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index b0342c91fea22d..95cf47c9ced602 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-solution](https://github.com/orgs/elastic/teams/secur | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 158 | 2 | 114 | 30 | +| 159 | 2 | 115 | 30 | ## Client diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index b39e14f5e8de99..cd546124eee83c 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: 2023-06-26 +date: 2023-06-27 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 523c6adba26c9a..985e6c045d090e 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: 2023-06-26 +date: 2023-06-27 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 7283a96d40e53d..a2470780e58ed3 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/serverless_security.mdx b/api_docs/serverless_security.mdx index 18890a7983d6e0..4cbadc32198a5e 100644 --- a/api_docs/serverless_security.mdx +++ b/api_docs/serverless_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSecurity title: "serverlessSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSecurity plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSecurity'] --- import serverlessSecurityObj from './serverless_security.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 43f3c1056f6a03..4b9772547c8ed8 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: 2023-06-26 +date: 2023-06-27 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 e44957e177ba0d..3cdad17d947f25 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: 2023-06-26 +date: 2023-06-27 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 4d56a6263de394..83cc1c8acdda1d 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: 2023-06-26 +date: 2023-06-27 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 51dc8d710d24d3..9a3ad33f248eb3 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: 2023-06-26 +date: 2023-06-27 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 a8c099184595e9..629053b6a2210d 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: 2023-06-26 +date: 2023-06-27 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 9bb72e9aa3ee26..e15627f5db3e4d 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: 2023-06-26 +date: 2023-06-27 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 41be0b8d465c32..3149da5af51261 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.devdocs.json b/api_docs/telemetry.devdocs.json index ab543cc86f27fc..5711cbe399e88c 100644 --- a/api_docs/telemetry.devdocs.json +++ b/api_docs/telemetry.devdocs.json @@ -813,7 +813,11 @@ }, { "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/legacy_uptime/lib/telemetry/sender.ts" + "path": "x-pack/plugins/synthetics/server/telemetry/sender.ts" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/lib/telemetry/sender.ts" }, { "plugin": "fleet", @@ -823,17 +827,25 @@ "plugin": "fleet", "path": "x-pack/plugins/fleet/server/telemetry/sender.test.ts" }, + { + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/server/telemetry/sender.test.ts" + }, + { + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/server/telemetry/sender.test.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.test.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/legacy_uptime/lib/telemetry/sender.test.ts" + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/lib/telemetry/sender.test.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/server/legacy_uptime/lib/telemetry/sender.test.ts" + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/lib/telemetry/sender.test.ts" } ], "children": [], diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index dcf60013e63398..dc1f788e90c690 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: 2023-06-26 +date: 2023-06-27 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 c843a5effd957f..0620a8f352aa71 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: 2023-06-26 +date: 2023-06-27 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 0c1bfd0a7b3bd0..2a581266ea474d 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: 2023-06-26 +date: 2023-06-27 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 548b9049b059e9..e3c2c02661ea95 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: 2023-06-26 +date: 2023-06-27 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 9880d0f87a1d7c..4b2b80c8fa2b66 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: 2023-06-26 +date: 2023-06-27 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 7c6608d488ee3c..62c7851a90df6c 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: 2023-06-26 +date: 2023-06-27 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 d399794b0c8433..99fa8b9bb91c2d 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: 2023-06-26 +date: 2023-06-27 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 3885bcb8561cd8..837181c1708eb8 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: 2023-06-26 +date: 2023-06-27 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 29f07e6024376a..82ec6de0ed001f 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: 2023-06-26 +date: 2023-06-27 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 09eb200a981751..f0aabf4887face 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: 2023-06-26 +date: 2023-06-27 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 32ddca58c8ba35..9829739dedb38f 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_histogram.devdocs.json b/api_docs/unified_histogram.devdocs.json index 8b0be6df0ff4e5..39768585d6aa50 100644 --- a/api_docs/unified_histogram.devdocs.json +++ b/api_docs/unified_histogram.devdocs.json @@ -591,52 +591,6 @@ "deprecated": false, "trackAdoption": false }, - { - "parentPluginId": "unifiedHistogram", - "id": "def-public.UnifiedHistogramServices.theme", - "type": "Object", - "tags": [], - "label": "theme", - "description": [], - "signature": [ - "{ readonly chartsDefaultTheme: ", - "RecursivePartial", - "<", - "Theme", - ">; readonly chartsDefaultBaseTheme: ", - "Theme", - "; chartsTheme$: ", - "Observable", - "<", - "RecursivePartial", - "<", - "Theme", - ">>; chartsBaseTheme$: ", - "Observable", - "<", - "Theme", - ">; readonly darkModeEnabled$: ", - "Observable", - "<", - { - "pluginId": "@kbn/core-theme-browser", - "scope": "common", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-common.CoreTheme", - "text": "CoreTheme" - }, - ">; useDarkMode: () => boolean; useChartsTheme: () => ", - "RecursivePartial", - "<", - "Theme", - ">; useChartsBaseTheme: () => ", - "Theme", - "; }" - ], - "path": "src/plugins/unified_histogram/public/types.ts", - "deprecated": false, - "trackAdoption": false - }, { "parentPluginId": "unifiedHistogram", "id": "def-public.UnifiedHistogramServices.uiActions", diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 55c8c6b64fdf68..0101348b5106d2 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 53 | 0 | 24 | 2 | +| 52 | 0 | 23 | 2 | ## Client diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index c6dc26ce3a41ec..bb84b602536a7a 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: 2023-06-26 +date: 2023-06-27 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 76f46c919ec5cb..5958060015a877 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index ba9fab398f1257..8c738ac10e9816 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: 2023-06-26 +date: 2023-06-27 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 1ae6b2fe73c70e..2f9e09075aff2f 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: 2023-06-26 +date: 2023-06-27 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 7e5fbfba2552ac..4bf5ad704e86ab 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: 2023-06-26 +date: 2023-06-27 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 7a6db420636111..2481d57031f601 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: 2023-06-26 +date: 2023-06-27 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 2c500a93a2835c..50bcf1822e22c1 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: 2023-06-26 +date: 2023-06-27 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 f88913bffcf0e2..8f6b97460089cf 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: 2023-06-26 +date: 2023-06-27 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 aa518dd264e2d7..92c5bcaec5a79c 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: 2023-06-26 +date: 2023-06-27 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 2d5dd298deea47..fd00fccbb2c6bf 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: 2023-06-26 +date: 2023-06-27 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 7f5a90046008ff..559f3168eec2d5 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: 2023-06-26 +date: 2023-06-27 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 21771feca2cbd6..246baff4400dfd 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: 2023-06-26 +date: 2023-06-27 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 ed0f21bf59d5f2..41fe29e4b6304b 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: 2023-06-26 +date: 2023-06-27 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 8a4c1f53603921..fe1d1fa599b829 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: 2023-06-26 +date: 2023-06-27 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 bd8474d96db6fd..915527e4f8742d 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualization_ui_components.mdx b/api_docs/visualization_ui_components.mdx index a195e59ae78c71..0310540ec4c22c 100644 --- a/api_docs/visualization_ui_components.mdx +++ b/api_docs/visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizationUiComponents title: "visualizationUiComponents" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizationUiComponents plugin -date: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizationUiComponents'] --- import visualizationUiComponentsObj from './visualization_ui_components.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index a6bbc71795bd54..3b813041bc6aa1 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: 2023-06-26 +date: 2023-06-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/config/serverless.yml b/config/serverless.yml index 2eb8344da9bb85..b7f2833810d0a1 100644 --- a/config/serverless.yml +++ b/config/serverless.yml @@ -6,6 +6,15 @@ xpack.fleet.internal.fleetServerStandalone: true xpack.fleet.internal.disableILMPolicies: true xpack.fleet.internal.disableProxies: true +# Enable ZDT migration algorithm +migrations.algorithm: zdt + +# temporarily allow to run the migration on UI nodes +# until the controller is able to spawn the migrator job/pod +migrations.zdt: + metaPickupSyncDelaySec: 5 + runOnRoles: ["ui"] + # Ess plugins xpack.ess.security.enabled: false diff --git a/docs/management/advanced-options.asciidoc b/docs/management/advanced-options.asciidoc index 0c02b97909821e..cb51a6779b604d 100644 --- a/docs/management/advanced-options.asciidoc +++ b/docs/management/advanced-options.asciidoc @@ -537,6 +537,7 @@ of buckets to try to represent. Maps values to specific colors in charts using the *Compatibility* palette. [[visualization-uselegacytimeaxis]]`visualization:useLegacyTimeAxis`:: +**This setting is deprecated and will not be supported in a future version.** Enables the legacy time axis for charts in Lens, Discover, Visualize and TSVB [[visualization-heatmap-maxbuckets]]`visualization:heatmap:maxBuckets`:: diff --git a/fleet_packages.json b/fleet_packages.json index d66f368675c021..8fa9f52864cc38 100644 --- a/fleet_packages.json +++ b/fleet_packages.json @@ -58,6 +58,6 @@ }, { "name": "security_detection_engine", - "version": "8.8.1" + "version": "8.8.2" } ] \ No newline at end of file diff --git a/package.json b/package.json index c6c06f6703ca4b..02173c8f191354 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "@dnd-kit/utilities": "^2.0.0", "@elastic/apm-rum": "^5.12.0", "@elastic/apm-rum-react": "^1.4.2", - "@elastic/charts": "57.0.1", + "@elastic/charts": "58.2.0", "@elastic/datemath": "5.0.3", "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.8.0-canary.2", "@elastic/ems-client": "8.4.0", @@ -1340,7 +1340,7 @@ "@types/type-detect": "^4.0.1", "@types/uuid": "^9.0.0", "@types/vinyl": "^2.0.4", - "@types/vinyl-fs": "^2.4.11", + "@types/vinyl-fs": "^3.0.2", "@types/watchpack": "^1.1.5", "@types/webpack": "^4.41.3", "@types/webpack-env": "^1.15.3", @@ -1527,7 +1527,7 @@ "typescript": "4.6.3", "url-loader": "^2.2.0", "val-loader": "^1.1.1", - "vinyl-fs": "^3.0.3", + "vinyl-fs": "^4.0.0", "watchpack": "^1.6.0", "webpack": "^4.41.5", "webpack-bundle-analyzer": "^4.5.0", diff --git a/packages/core/saved-objects/core-saved-objects-base-server-internal/src/saved_objects_config.ts b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/saved_objects_config.ts index c4020318974459..747b184c1a2f06 100644 --- a/packages/core/saved-objects/core-saved-objects-base-server-internal/src/saved_objects_config.ts +++ b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/saved_objects_config.ts @@ -47,13 +47,14 @@ const migrationSchema = schema.object({ */ metaPickupSyncDelaySec: schema.number({ min: 1, defaultValue: 120 }), /** - * If set to true, the document migration phase will be run even if the - * instance does not have the `migrator` role. + * The document migration phase will be run from instances with any of the specified roles. * * This is mostly used for testing environments and integration tests were * we have full control over a single node Kibana deployment. + * + * Defaults to ["migrator"] */ - runOnNonMigratorNodes: schema.boolean({ defaultValue: false }), + runOnRoles: schema.arrayOf(schema.string(), { defaultValue: ['migrator'] }), }), }); diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts index 284215ef74b450..de210165578a59 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts @@ -316,7 +316,7 @@ const mockOptions = (algorithm: 'v2' | 'zdt' = 'v2') => { retryAttempts: 20, zdt: { metaPickupSyncDelaySec: 120, - runOnNonMigratorNodes: false, + runOnRoles: ['migrator'], }, }, client: mockedClient, diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_action_machine.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_action_machine.test.ts index 2f734b3a564875..77c1fb12b13ed8 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_action_machine.test.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_action_machine.test.ts @@ -58,7 +58,7 @@ describe('migrationsStateActionMachine', () => { retryAttempts: 5, zdt: { metaPickupSyncDelaySec: 120, - runOnNonMigratorNodes: false, + runOnRoles: ['migrator'], }, }, typeRegistry, diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.test.ts index 56172384dcdcd8..bac468d06afe2e 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.test.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.test.ts @@ -148,7 +148,7 @@ const mockOptions = (): RunResilientMigratorParams => { retryAttempts: 20, zdt: { metaPickupSyncDelaySec: 120, - runOnNonMigratorNodes: true, + runOnRoles: ['migrator'], }, }, typeRegistry: savedObjectTypeRegistryMock, diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_v2_migration.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_v2_migration.test.ts index 8ebd1b3d660d4b..3dc8b5cc782cbe 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_v2_migration.test.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_v2_migration.test.ts @@ -258,7 +258,7 @@ const mockOptions = (kibanaVersion = '8.2.3'): RunV2MigrationOpts => { retryAttempts: 20, zdt: { metaPickupSyncDelaySec: 120, - runOnNonMigratorNodes: true, + runOnRoles: ['migrator'], }, }, elasticsearchClient: mockedClient, diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/state/create_initial_state.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/state/create_initial_state.test.ts index 5edbd76c10b582..2c411bbb0b8a74 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/state/create_initial_state.test.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/state/create_initial_state.test.ts @@ -24,17 +24,30 @@ describe('createInitialState', () => { const state = createInitialState(context); expect(state.skipDocumentMigration).toEqual(true); }); - test('`skipDocumentMigration` is `false` if the node does not have the `migrator` role but `runOnNonMigratorNodes` is true', () => { + test('`skipDocumentMigration` is `false` if runOnRoles contains one of the node role', () => { const context = createContextMock({ migrationConfig: createMigrationConfigMock({ zdt: { metaPickupSyncDelaySec: 120, - runOnNonMigratorNodes: true, + runOnRoles: ['ui'], }, }), - nodeRoles: { backgroundTasks: false, ui: false, migrator: false }, + nodeRoles: { backgroundTasks: true, ui: true, migrator: false }, }); const state = createInitialState(context); expect(state.skipDocumentMigration).toEqual(false); }); + test('`skipDocumentMigration` is `true` if runOnRoles does not contain one of the node role', () => { + const context = createContextMock({ + migrationConfig: createMigrationConfigMock({ + zdt: { + metaPickupSyncDelaySec: 120, + runOnRoles: ['ui'], + }, + }), + nodeRoles: { backgroundTasks: true, ui: false, migrator: false }, + }); + const state = createInitialState(context); + expect(state.skipDocumentMigration).toEqual(true); + }); }); diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/state/create_initial_state.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/state/create_initial_state.ts index c500a5998a6800..facd7d6905fa35 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/state/create_initial_state.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/state/create_initial_state.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import type { NodeRoles } from '@kbn/core-node-server'; import type { InitState, State } from './types'; import type { MigratorContext } from '../context'; @@ -13,8 +14,10 @@ import type { MigratorContext } from '../context'; * Create the initial state to be used for the ZDT migrator. */ export const createInitialState = (context: MigratorContext): State => { - const runDocumentMigration = - context.nodeRoles.migrator || context.migrationConfig.zdt.runOnNonMigratorNodes; + const nodeRoles = getNodeRoles(context.nodeRoles); + const enabledRoles = new Set(context.migrationConfig.zdt.runOnRoles); + const runDocumentMigration = nodeRoles.some((role) => enabledRoles.has(role)); + const initialState: InitState = { controlState: 'INIT', logs: [], @@ -24,3 +27,9 @@ export const createInitialState = (context: MigratorContext): State => { }; return initialState; }; + +const getNodeRoles = (roles: NodeRoles): string[] => { + return Object.entries(roles) + .filter(([_, enabled]) => enabled) + .map(([key]) => key); +}; diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/test_helpers/context.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/test_helpers/context.ts index 69722cb9652e86..ceb36a5aa7d422 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/test_helpers/context.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/test_helpers/context.ts @@ -38,7 +38,7 @@ export const createMigrationConfigMock = ( retryAttempts: 5, zdt: { metaPickupSyncDelaySec: 120, - runOnNonMigratorNodes: false, + runOnRoles: ['migrator'], }, ...parts, }); diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index feba98e8d4517d..9fd448d1099a2e 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -135,6 +135,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { connectorsAzureBlobStorage: `${ENTERPRISE_SEARCH_DOCS}connectors-azure-blob.html`, connectorsClients: `${ENTERPRISE_SEARCH_DOCS}connectors.html#connectors-build`, connectorsConfluence: `${ENTERPRISE_SEARCH_DOCS}connectors-confluence.html`, + connectorsDropbox: `${ENTERPRISE_SEARCH_DOCS}connectors-dropbox.html`, connectorsContentExtraction: `${ENTERPRISE_SEARCH_DOCS}connectors-content-extraction.html`, connectorsGoogleCloudStorage: `${ENTERPRISE_SEARCH_DOCS}connectors-google-cloud.html`, connectorsJira: `${ENTERPRISE_SEARCH_DOCS}connectors-jira.html`, @@ -146,6 +147,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { connectorsOracle: `${ENTERPRISE_SEARCH_DOCS}connectors-oracle.html`, connectorsPostgreSQL: `${ENTERPRISE_SEARCH_DOCS}connectors-postgresql.html`, connectorsS3: `${ENTERPRISE_SEARCH_DOCS}connectors-s3.html`, + connectorsServiceNow: `${ENTERPRISE_SEARCH_DOCS}connectors-servicenow.html`, connectorsSharepoint: `${ENTERPRISE_SEARCH_DOCS}connectors-sharepoint.html`, connectorsSharepointOnline: `${ENTERPRISE_SEARCH_DOCS}connectors-sharepoint-online.html`, connectorsWorkplaceSearch: `${ENTERPRISE_SEARCH_DOCS}connectors.html#connectors-workplace-search`, diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts index f1c4d1b3726fc1..f99515b2d214e6 100644 --- a/packages/kbn-doc-links/src/types.ts +++ b/packages/kbn-doc-links/src/types.ts @@ -120,6 +120,7 @@ export interface DocLinks { readonly connectorsClients: string; readonly connectorsConfluence: string; readonly connectorsContentExtraction: string; + readonly connectorsDropbox: string; readonly connectorsGoogleCloudStorage: string; readonly connectorsJira: string; readonly connectorsMicrosoftSQL: string; @@ -130,6 +131,7 @@ export interface DocLinks { readonly connectorsOracle: string; readonly connectorsPostgreSQL: string; readonly connectorsS3: string; + readonly connectorsServiceNow: string; readonly connectorsSharepoint: string; readonly connectorsSharepointOnline: string; readonly connectorsWorkplaceSearch: string; diff --git a/packages/kbn-unified-field-list/src/components/field_stats/field_stats.tsx b/packages/kbn-unified-field-list/src/components/field_stats/field_stats.tsx index 34ec8c1f2f7dfb..8e0eaedc2acbcd 100755 --- a/packages/kbn-unified-field-list/src/components/field_stats/field_stats.tsx +++ b/packages/kbn-unified-field-list/src/components/field_stats/field_stats.tsx @@ -27,6 +27,7 @@ import { ScaleType, Settings, TooltipType, + Tooltip, } from '@elastic/charts'; import { i18n } from '@kbn/i18n'; import { buildEsQuery, Query, Filter, AggregateQuery } from '@kbn/es-query'; @@ -481,8 +482,8 @@ const FieldStatsComponent: React.FC = ({
+ = ({ data-test-subj={`${dataTestSubject}-histogram`} size={{ height: 200, width: '100%' }} > - + + { const component = shallowWithIntl(); - expect(component.find(Settings).prop('tooltip')).toStrictEqual({ type: TooltipType.Follow }); + expect(component.find(Tooltip).prop('type')).toBe(TooltipType.Follow); }); it('hides the legend if the showTooltip is false', async () => { @@ -296,7 +297,7 @@ describe('HeatmapComponent', function () { args: { ...wrapperProps.args, showTooltip: false }, } as unknown as HeatmapRenderProps; const component = mountWithIntl(); - expect(component.find(Settings).prop('tooltip')).toStrictEqual({ type: TooltipType.None }); + expect(component.find(Tooltip).prop('type')).toBe(TooltipType.None); }); it('not renders the component if no value accessor is given', () => { diff --git a/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.tsx b/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.tsx index f243fa4d672635..1c997e331febfa 100644 --- a/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.tsx +++ b/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.tsx @@ -23,6 +23,7 @@ import { ESCalendarIntervalUnit, PartialTheme, SettingsProps, + Tooltip, } from '@elastic/charts'; import type { CustomPaletteState } from '@kbn/charts-plugin/public'; import { search } from '@kbn/data-plugin/public'; @@ -615,6 +616,7 @@ export const HeatmapComponent: FC = memo( splitColumnAccessor={splitChartColumnAccessor} splitRowAccessor={splitChartRowAccessor} /> + = memo( legendSize={LegendSizeToPixels[args.legend.legendSize ?? DEFAULT_LEGEND_SIZE]} legendColorPicker={uiState ? LegendColorPickerWrapper : undefined} debugState={window._echDebugStateFlag ?? false} - tooltip={tooltip} theme={[ themeOverrides, chartTheme, diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/components/__snapshots__/partition_vis_component.test.tsx.snap b/src/plugins/chart_expressions/expression_partition_vis/public/components/__snapshots__/partition_vis_component.test.tsx.snap index 4f7a2e33051918..65fa256304fde6 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/components/__snapshots__/partition_vis_component.test.tsx.snap +++ b/src/plugins/chart_expressions/expression_partition_vis/public/components/__snapshots__/partition_vis_component.test.tsx.snap @@ -222,6 +222,9 @@ exports[`PartitionVisComponent should render correct structure for donut 1`] = ` size="100%" > + + + + + + { const component = shallow(); - expect(component.find(Settings).prop('tooltip')).toStrictEqual({ type: TooltipType.Follow }); + expect(component.find(Tooltip).prop('type')).toBe(TooltipType.Follow); }); it('doesnt show the tooltip when the user requests it', () => { const newParams = { ...visParams, addTooltip: false }; const newProps = { ...wrapperProps, visParams: newParams }; const component = shallow(); - expect(component.find(Settings).prop('tooltip')).toStrictEqual({ type: TooltipType.None }); + expect(component.find(Tooltip).prop('type')).toBe(TooltipType.None); }); it('calls filter callback', () => { diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx b/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx index 4ce300a7d9bb99..60b001b491816e 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx +++ b/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx @@ -19,6 +19,7 @@ import { SeriesIdentifier, PartitionElementEvent, SettingsProps, + Tooltip, } from '@elastic/charts'; import { useEuiTheme } from '@elastic/eui'; import type { PaletteRegistry } from '@kbn/coloring'; @@ -497,6 +498,7 @@ const PartitionVisComponent = (props: PartitionVisComponentProps) => { splitColumnAccessor={splitChartColumnAccessor} splitRowAccessor={splitChartRowAccessor} /> + @@ -511,7 +513,6 @@ const PartitionVisComponent = (props: PartitionVisComponentProps) => { legendColorPicker={props.uiState ? LegendColorPickerWrapper : undefined} flatLegend={flatLegend} legendSort={customLegendSort} - tooltip={tooltip} showLegendExtra={visParams.showValuesInLegend} onElementClick={([elementEvent]) => { // this cast is safe because we are rendering a partition chart diff --git a/src/plugins/charts/server/plugin.ts b/src/plugins/charts/server/plugin.ts index b27e262e99aee4..8bb37ced2420de 100644 --- a/src/plugins/charts/server/plugin.ts +++ b/src/plugins/charts/server/plugin.ts @@ -58,6 +58,16 @@ export class ChartsServerPlugin implements Plugin { 'Enables the legacy time axis for charts in Lens, Discover, Visualize and TSVB', } ), + deprecation: { + message: i18n.translate( + 'charts.advancedSettings.visualization.useLegacyTimeAxis.deprecation', + { + defaultMessage: + 'This setting is deprecated and will not be supported in a future version.', + } + ), + docLinksKey: 'visualizationSettings', + }, category: ['visualization'], schema: schema.boolean(), }, diff --git a/src/plugins/custom_integrations/common/index.ts b/src/plugins/custom_integrations/common/index.ts index d1733c7d076cef..1231f527e83256 100755 --- a/src/plugins/custom_integrations/common/index.ts +++ b/src/plugins/custom_integrations/common/index.ts @@ -29,9 +29,7 @@ export const INTEGRATION_CATEGORY_DISPLAY: { config_management: { title: 'Config management', parent_id: undefined }, connector: { title: 'Connector', parent_id: 'enterprise_search' }, connector_client: { title: 'Connector Client', parent_id: 'enterprise_search' }, - connector_package: { title: 'Connector Package', parent_id: 'enterprise_search' }, containers: { title: 'Containers', parent_id: undefined }, - content_source: { title: 'Content Source', parent_id: 'enterprise_search' }, crawler: { title: 'Crawler', parent_id: 'enterprise_search' }, credential_management: { title: 'Credential Management', parent_id: 'security' }, crm: { title: 'CRM', parent_id: undefined }, @@ -81,7 +79,10 @@ export const INTEGRATION_CATEGORY_DISPLAY: { web_application_firewall: { title: 'Web Application Firewall', parent_id: 'security' }, websphere: { title: 'WebSphere Application Server', parent_id: 'observability' }, workplace_search: { title: 'Workplace Search', parent_id: 'enterprise_search' }, - + workplace_search_content_source: { + title: 'Workplace Search Content Source', + parent_id: 'enterprise_search', + }, // Kibana added apm: { title: 'APM', parent_id: undefined }, }; diff --git a/src/plugins/data/public/search/session/sessions_mgmt/components/actions/inspect_button.tsx b/src/plugins/data/public/search/session/sessions_mgmt/components/actions/inspect_button.tsx index 6776acff201515..a918982368b7eb 100644 --- a/src/plugins/data/public/search/session/sessions_mgmt/components/actions/inspect_button.tsx +++ b/src/plugins/data/public/search/session/sessions_mgmt/components/actions/inspect_button.tsx @@ -22,14 +22,9 @@ import { SearchSessionsMgmtAPI } from '../../lib/api'; interface InspectFlyoutProps { searchSession: UISession; - uiSettings: CoreStart['uiSettings']; } -const InspectFlyout = ({ uiSettings, searchSession }: InspectFlyoutProps) => { - const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ - uiSettings, - }); - +const InspectFlyout: React.FC = ({ searchSession }) => { const renderInfo = () => { return ( @@ -54,7 +49,7 @@ const InspectFlyout = ({ uiSettings, searchSession }: InspectFlyoutProps) => { }; return ( - + <>

@@ -79,6 +74,32 @@ const InspectFlyout = ({ uiSettings, searchSession }: InspectFlyoutProps) => { {renderInfo()} + + ); +}; + +interface InspectFlyoutWrapperProps { + searchSession: UISession; + uiSettings: CoreStart['uiSettings']; + settings: CoreStart['settings']; + theme: CoreStart['theme']; +} + +const InspectFlyoutWrapper: React.FC = ({ + searchSession, + uiSettings, + settings, + theme, +}) => { + const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ + uiSettings, + settings, + theme, + }); + + return ( + + ); }; @@ -97,8 +118,17 @@ export const createInspectActionDescriptor = ( /> ), onClick: async () => { - const flyout = ; - const overlay = core.overlays.openFlyout(toMountPoint(flyout, { theme$: core.theme.theme$ })); + const flyoutWrapper = ( + + ); + const overlay = core.overlays.openFlyout( + toMountPoint(flyoutWrapper, { theme$: core.theme.theme$ }) + ); await overlay.onClose; }, }); diff --git a/src/plugins/data_view_field_editor/public/open_editor.tsx b/src/plugins/data_view_field_editor/public/open_editor.tsx index a23e2814608277..865f5f498d7275 100644 --- a/src/plugins/data_view_field_editor/public/open_editor.tsx +++ b/src/plugins/data_view_field_editor/public/open_editor.tsx @@ -72,12 +72,13 @@ export const getFieldEditorOpener = apiService, }: Dependencies) => (options: OpenFieldEditorOptions): CloseEditor => { - const { uiSettings, overlays, docLinks, notifications, settings } = core; + const { uiSettings, overlays, docLinks, notifications, settings, theme } = core; const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ uiSettings, docLinks, http: core.http, settings, + theme, }); let overlayRef: OverlayRef | null = null; diff --git a/src/plugins/discover/public/__mocks__/__storybook_mocks__/with_discover_services.tsx b/src/plugins/discover/public/__mocks__/__storybook_mocks__/with_discover_services.tsx index 975317e918cb3d..57dc4e55651ff4 100644 --- a/src/plugins/discover/public/__mocks__/__storybook_mocks__/with_discover_services.tsx +++ b/src/plugins/discover/public/__mocks__/__storybook_mocks__/with_discover_services.tsx @@ -8,8 +8,7 @@ import React, { FunctionComponent } from 'react'; import { action } from '@storybook/addon-actions'; -import { EUI_CHARTS_THEME_LIGHT } from '@elastic/eui/dist/eui_charts_theme'; -import { LIGHT_THEME } from '@elastic/charts'; +import { BehaviorSubject, Observable, of } from 'rxjs'; import { FieldFormat } from '@kbn/field-formats-plugin/common'; import { identity } from 'lodash'; import { CoreStart, IUiSettingsClient, PluginInitializerContext } from '@kbn/core/public'; @@ -29,7 +28,6 @@ import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { Plugin as NavigationPublicPlugin } from '@kbn/navigation-plugin/public'; import { SearchBar, UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; import { SavedQuery } from '@kbn/data-plugin/public'; -import { BehaviorSubject, Observable } from 'rxjs'; const NavigationPlugin = new NavigationPublicPlugin({} as PluginInitializerContext); @@ -64,11 +62,16 @@ const filterManager = { getFetches$: () => new Observable(), }; +const theme = { + theme$: of({ darkMode: false }), +}; + export const services = { core: { http: { basePath: { prepend: () => void 0 } }, notifications: { toasts: {} }, docLinks: { links: { discover: {} } }, + theme, }, storage: new LocalStorageMock({ [SIDEBAR_CLOSED_KEY]: false, @@ -146,19 +149,7 @@ export const services = { ui: { SearchBar, AggregateQuerySearchBar: SearchBar }, } as unknown as UnifiedSearchPublicPluginStart, }), - theme: { - useChartsTheme: () => ({ - ...EUI_CHARTS_THEME_LIGHT.theme, - chartPaddings: { - top: 0, - left: 0, - bottom: 0, - right: 0, - }, - heatmap: { xAxisLabel: { rotation: {} } }, - }), - useChartsBaseTheme: () => LIGHT_THEME, - }, + theme, capabilities: { visualize: { show: true, diff --git a/src/plugins/discover/public/__mocks__/services.ts b/src/plugins/discover/public/__mocks__/services.ts index 764b1dcd566ba3..745059cc1be237 100644 --- a/src/plugins/discover/public/__mocks__/services.ts +++ b/src/plugins/discover/public/__mocks__/services.ts @@ -6,7 +6,6 @@ * Side Public License, v 1. */ import { Observable, of } from 'rxjs'; -import { EUI_CHARTS_THEME_LIGHT } from '@elastic/eui/dist/eui_charts_theme'; import { DiscoverServices } from '../build_services'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; import { uiActionsPluginMock } from '@kbn/ui-actions-plugin/public/mocks'; @@ -93,8 +92,15 @@ export function createDiscoverServicesMock(): DiscoverServices { return searchSource; }); + const theme = { + theme$: of({ darkMode: false }), + }; + return { - core: coreMock.createStart(), + core: { + ...coreMock.createStart(), + theme, + }, charts: chartPluginMock.createSetupContract(), chrome: chromeServiceMock.createStartContract(), history: () => ({ @@ -174,10 +180,7 @@ export function createDiscoverServicesMock(): DiscoverServices { metadata: { branch: 'test', }, - theme: { - useChartsTheme: jest.fn(() => EUI_CHARTS_THEME_LIGHT.theme), - useChartsBaseTheme: jest.fn(() => EUI_CHARTS_THEME_LIGHT.theme), - }, + theme, storage: new LocalStorageMock({}) as unknown as Storage, addBasePath: jest.fn(), toastNotifications: { diff --git a/src/plugins/discover/public/build_services.ts b/src/plugins/discover/public/build_services.ts index 895c1f72257ac5..5553a8ad3b23c2 100644 --- a/src/plugins/discover/public/build_services.ts +++ b/src/plugins/discover/public/build_services.ts @@ -75,7 +75,7 @@ export interface DiscoverServices { docLinks: DocLinksStart; embeddable: EmbeddableStart; history: () => History; - theme: ChartsPluginStart['theme']; + theme: CoreStart['theme']; filterManager: FilterManager; fieldFormats: FieldFormatsStart; dataViews: DataViewsContract; @@ -130,7 +130,7 @@ export const buildServices = memoize(function ( data: plugins.data, docLinks: core.docLinks, embeddable: plugins.embeddable, - theme: plugins.charts.theme, + theme: core.theme, fieldFormats: plugins.fieldFormats, filterManager: plugins.data.query.filterManager, history: getHistory, diff --git a/src/plugins/discover/public/components/discover_grid/get_render_cell_value.test.tsx b/src/plugins/discover/public/components/discover_grid/get_render_cell_value.test.tsx index 387e1474f3034e..e2be59c78a333f 100644 --- a/src/plugins/discover/public/components/discover_grid/get_render_cell_value.test.tsx +++ b/src/plugins/discover/public/components/discover_grid/get_render_cell_value.test.tsx @@ -7,6 +7,7 @@ */ import React from 'react'; +import { of } from 'rxjs'; import { shallow } from 'enzyme'; import { findTestSubject } from '@elastic/eui/lib/test'; import { mountWithIntl } from '@kbn/test-jest-helpers'; @@ -28,6 +29,9 @@ const mockServices = { fieldFormats: { getDefaultInstance: jest.fn(() => ({ convert: (value: unknown) => (value ? value : '-') })), }, + theme: { + theme$: of({ darkMode: false }), + }, }; jest.mock('../../hooks/use_discover_services', () => { diff --git a/src/plugins/unified_histogram/public/__mocks__/services.ts b/src/plugins/unified_histogram/public/__mocks__/services.ts index 24e603ced1aafb..71058be4f634fc 100644 --- a/src/plugins/unified_histogram/public/__mocks__/services.ts +++ b/src/plugins/unified_histogram/public/__mocks__/services.ts @@ -6,7 +6,6 @@ * Side Public License, v 1. */ -import { EUI_CHARTS_THEME_LIGHT } from '@elastic/eui/dist/eui_charts_theme'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; import { expressionsPluginMock } from '@kbn/expressions-plugin/public/mocks'; import { fieldFormatsMock } from '@kbn/field-formats-plugin/common/mocks'; @@ -26,10 +25,6 @@ export const unifiedHistogramServicesMock = { get: jest.fn(), isDefault: jest.fn(() => true), }, - theme: { - useChartsTheme: jest.fn(() => EUI_CHARTS_THEME_LIGHT.theme), - useChartsBaseTheme: jest.fn(() => EUI_CHARTS_THEME_LIGHT.theme), - }, lens: { EmbeddableComponent: jest.fn(() => null), navigateToPrefilledEditor: jest.fn(), diff --git a/src/plugins/unified_histogram/public/types.ts b/src/plugins/unified_histogram/public/types.ts index 9543b9c5880abf..803c74304a3a6d 100644 --- a/src/plugins/unified_histogram/public/types.ts +++ b/src/plugins/unified_histogram/public/types.ts @@ -6,7 +6,6 @@ * Side Public License, v 1. */ -import type { Theme } from '@kbn/charts-plugin/public/plugin'; import type { IUiSettingsClient, Capabilities } from '@kbn/core/public'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; @@ -35,7 +34,6 @@ export enum UnifiedHistogramFetchStatus { */ export interface UnifiedHistogramServices { data: DataPublicPluginStart; - theme: Theme; uiActions: UiActionsStart; uiSettings: IUiSettingsClient; fieldFormats: FieldFormatsStart; diff --git a/src/plugins/unified_histogram/tsconfig.json b/src/plugins/unified_histogram/tsconfig.json index 0e0f18ff9dd56a..2e5109b79fb3e4 100644 --- a/src/plugins/unified_histogram/tsconfig.json +++ b/src/plugins/unified_histogram/tsconfig.json @@ -6,7 +6,6 @@ "include": [ "../../../typings/**/*", "common/**/*", "public/**/*", "server/**/*"], "kbn_references": [ "@kbn/core", - "@kbn/charts-plugin", "@kbn/data-plugin", "@kbn/data-views-plugin", "@kbn/lens-plugin", diff --git a/src/plugins/usage_collection/server/routes/stats/stats.ts b/src/plugins/usage_collection/server/routes/stats/stats.ts index d98457d498244e..0c9d28d81109f4 100644 --- a/src/plugins/usage_collection/server/routes/stats/stats.ts +++ b/src/plugins/usage_collection/server/routes/stats/stats.ts @@ -72,13 +72,13 @@ export function registerStatsRoute({ const isExtended = requestQuery.extended === '' || requestQuery.extended; const isLegacy = requestQuery.legacy === '' || requestQuery.legacy; - let extended; + let extended = {}; if (isExtended) { const core = await context.core; - const { asCurrentUser } = core.elasticsearch.client; + const { asInternalUser } = core.elasticsearch.client; // as of https://github.com/elastic/kibana/pull/151082, usage will always be an empty object. - const clusterUuid = await getClusterUuid(asCurrentUser); + const clusterUuid = await getClusterUuid(asInternalUser); const extendedClusterUuid = isLegacy ? { clusterUuid } : { cluster_uuid: clusterUuid }; extended = { usage: {}, diff --git a/src/plugins/vis_types/timelion/public/components/series/area.tsx b/src/plugins/vis_types/timelion/public/components/series/area.tsx index 50c52f69de5bbb..70aaf5f72309b1 100644 --- a/src/plugins/vis_types/timelion/public/components/series/area.tsx +++ b/src/plugins/vis_types/timelion/public/components/series/area.tsx @@ -75,7 +75,6 @@ export const AreaSeriesComponent = ({ index, groupId, visData }: AreaSeriesCompo xAccessor={0} yAccessors={[1]} data={visData._hide ? [] : visData.data} - sortIndex={index} color={visData.color} curve={visData.lines?.steps ? CurveType.CURVE_STEP : CurveType.LINEAR} stackAccessors={visData.stack ? [0] : undefined} diff --git a/src/plugins/vis_types/timelion/public/components/series/bar.tsx b/src/plugins/vis_types/timelion/public/components/series/bar.tsx index 0a26fb51c32c69..4f663adb57424f 100644 --- a/src/plugins/vis_types/timelion/public/components/series/bar.tsx +++ b/src/plugins/vis_types/timelion/public/components/series/bar.tsx @@ -47,7 +47,6 @@ export const BarSeriesComponent = ({ index, groupId, visData }: BarSeriesCompone xAccessor={0} yAccessors={[1]} data={visData._hide ? [] : visData.data} - sortIndex={index} enableHistogramMode={false} color={visData.color} stackAccessors={visData.stack ? [0] : undefined} diff --git a/src/plugins/vis_types/timelion/public/components/timelion_vis_component.tsx b/src/plugins/vis_types/timelion/public/components/timelion_vis_component.tsx index 9d59cf105af66d..51be6785685f99 100644 --- a/src/plugins/vis_types/timelion/public/components/timelion_vis_component.tsx +++ b/src/plugins/vis_types/timelion/public/components/timelion_vis_component.tsx @@ -17,6 +17,7 @@ import { LegendPositionConfig, LayoutDirection, Placement, + Tooltip, } from '@elastic/charts'; import { EuiTitle } from '@elastic/eui'; import { RangeFilterParams } from '@kbn/es-query'; @@ -198,6 +199,11 @@ export const TimelionVisComponent = ({ )} + tickFormat(value)} + type={TooltipType.VerticalCursor} + /> tickFormat(value), - type: TooltipType.VerticalCursor, - }} ariaLabel={ariaLabel} ariaUseDefaultSummary={!ariaLabel} /> diff --git a/src/plugins/vis_types/timeseries/public/application/visualizations/views/timeseries/index.js b/src/plugins/vis_types/timeseries/public/application/visualizations/views/timeseries/index.js index 7bfb0456b4a46d..2c68e1c1190da9 100644 --- a/src/plugins/vis_types/timeseries/public/application/visualizations/views/timeseries/index.js +++ b/src/plugins/vis_types/timeseries/public/application/visualizations/views/timeseries/index.js @@ -24,6 +24,7 @@ import { TooltipType, StackMode, Placement, + Tooltip, } from '@elastic/charts'; import { EuiIcon } from '@elastic/eui'; import { getTimezone } from '../../../lib/get_timezone'; @@ -170,6 +171,16 @@ export const TimeSeries = ({ return ( + { + ({ + id, + seriesId, + label, + bars, + lines, + data, + hideInLegend, + truncateLegend, + xScaleType, + yScaleType, + groupId, + color, + isSplitByTerms, + stack, + points, + y1AccessorFormat, + y0AccessorFormat, + tickFormat, + }) => { const stackAccessors = getStackAccessors(stack); const isPercentage = stack === STACKED_OPTIONS.PERCENT; const isStacked = stack !== STACKED_OPTIONS.NONE; @@ -299,7 +298,6 @@ export const TimeSeries = ({ yScaleType={yScaleType} timeZone={timeZone} enableHistogramMode={isStacked} - sortIndex={sortIndex} y1AccessorFormat={y1AccessorFormat} y0AccessorFormat={y0AccessorFormat} tickFormat={tickFormat} @@ -326,7 +324,6 @@ export const TimeSeries = ({ yScaleType={yScaleType} timeZone={timeZone} enableHistogramMode={isStacked} - sortIndex={sortIndex} y1AccessorFormat={y1AccessorFormat} y0AccessorFormat={y0AccessorFormat} tickFormat={tickFormat} diff --git a/test/api_integration/apis/custom_integration/integrations.ts b/test/api_integration/apis/custom_integration/integrations.ts index 17f39e53b44a93..a924b416f30c83 100644 --- a/test/api_integration/apis/custom_integration/integrations.ts +++ b/test/api_integration/apis/custom_integration/integrations.ts @@ -22,7 +22,7 @@ export default function ({ getService }: FtrProviderContext) { expect(resp.body).to.be.an('array'); - expect(resp.body.length).to.be(54); + expect(resp.body.length).to.be(49); // Test for sample data card expect(resp.body.findIndex((c: { id: string }) => c.id === 'sample_data_all')).to.be.above( diff --git a/test/functional/apps/home/_add_data.ts b/test/functional/apps/home/_add_data.ts index 3fd69c1a488f49..8e0824235200c3 100644 --- a/test/functional/apps/home/_add_data.ts +++ b/test/functional/apps/home/_add_data.ts @@ -11,7 +11,8 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'header', 'home', 'dashboard']); - describe('add data tutorials', function describeIndexTests() { + // Failing: See https://github.com/elastic/kibana/issues/154699 + describe.skip('add data tutorials', function describeIndexTests() { it('directory should redirect to integrations app', async () => { await PageObjects.common.navigateToUrl('home', 'tutorial_directory', { useActualUrl: true }); await PageObjects.common.waitUntilUrlIncludes('/app/integrations'); diff --git a/test/functional/apps/visualize/replaced_vislib_chart_types/_line_chart_split_chart.ts b/test/functional/apps/visualize/replaced_vislib_chart_types/_line_chart_split_chart.ts index 4403c2157465a1..ef7e3aa916d4a8 100644 --- a/test/functional/apps/visualize/replaced_vislib_chart_types/_line_chart_split_chart.ts +++ b/test/functional/apps/visualize/replaced_vislib_chart_types/_line_chart_split_chart.ts @@ -203,18 +203,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.changeYAxisFilterLabelsCheckbox(axisId, false); await PageObjects.visEditor.clickGo(true); const labels = await PageObjects.visChart.getYAxisLabels(xyChartSelector); - const expectedLabels = [ - '0', - '1,000', - '2,000', - '3,000', - '4,000', - '5,000', - '6,000', - '7,000', - '8,000', - '9,000', - ]; + const expectedLabels = ['0', '2,000', '4,000', '6,000', '8,000']; expect(labels).to.eql(expectedLabels); }); @@ -223,18 +212,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.changeYAxisFilterLabelsCheckbox(axisId, true); await PageObjects.visEditor.clickGo(true); const labels = await PageObjects.visChart.getYAxisLabels(xyChartSelector); - const expectedLabels = [ - '0', - '1,000', - '2,000', - '3,000', - '4,000', - '5,000', - '6,000', - '7,000', - '8,000', - '9,000', - ]; + const expectedLabels = ['0', '2,000', '4,000', '6,000', '8,000']; expect(labels).to.eql(expectedLabels); }); @@ -244,18 +222,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.clickGo(true); const labels = await PageObjects.visChart.getYAxisLabels(xyChartSelector); log.debug(labels); - const expectedLabels = [ - '0', - '1,000', - '2,000', - '3,000', - '4,000', - '5,000', - '6,000', - '7,000', - '8,000', - '9,000', - ]; + const expectedLabels = ['0', '2,000', '4,000', '6,000', '8,000']; expect(labels).to.eql(expectedLabels); }); @@ -263,18 +230,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.changeYAxisFilterLabelsCheckbox(axisId, true); await PageObjects.visEditor.clickGo(true); const labels = await PageObjects.visChart.getYAxisLabels(xyChartSelector); - const expectedLabels = [ - '0', - '1,000', - '2,000', - '3,000', - '4,000', - '5,000', - '6,000', - '7,000', - '8,000', - '9,000', - ]; + const expectedLabels = ['0', '2,000', '4,000', '6,000', '8,000']; expect(labels).to.eql(expectedLabels); }); }); diff --git a/test/functional/apps/visualize/replaced_vislib_chart_types/_line_chart_split_series.ts b/test/functional/apps/visualize/replaced_vislib_chart_types/_line_chart_split_series.ts index c1df1570008a30..8583220d76a5c5 100644 --- a/test/functional/apps/visualize/replaced_vislib_chart_types/_line_chart_split_series.ts +++ b/test/functional/apps/visualize/replaced_vislib_chart_types/_line_chart_split_series.ts @@ -202,18 +202,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.changeYAxisFilterLabelsCheckbox(axisId, false); await PageObjects.visEditor.clickGo(true); const labels = await PageObjects.visChart.getYAxisLabels(xyChartSelector); - const expectedLabels = [ - '0', - '1,000', - '2,000', - '3,000', - '4,000', - '5,000', - '6,000', - '7,000', - '8,000', - '9,000', - ]; + const expectedLabels = ['0', '2,000', '4,000', '6,000', '8,000']; expect(labels).to.eql(expectedLabels); }); @@ -221,18 +210,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.changeYAxisFilterLabelsCheckbox(axisId, true); await PageObjects.visEditor.clickGo(true); const labels = await PageObjects.visChart.getYAxisLabels(xyChartSelector); - const expectedLabels = [ - '0', - '1,000', - '2,000', - '3,000', - '4,000', - '5,000', - '6,000', - '7,000', - '8,000', - '9,000', - ]; + const expectedLabels = ['0', '2,000', '4,000', '6,000', '8,000']; expect(labels).to.eql(expectedLabels); }); @@ -242,18 +220,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.clickGo(true); const labels = await PageObjects.visChart.getYAxisLabels(xyChartSelector); log.debug(labels); - const expectedLabels = [ - '0', - '1,000', - '2,000', - '3,000', - '4,000', - '5,000', - '6,000', - '7,000', - '8,000', - '9,000', - ]; + const expectedLabels = ['0', '2,000', '4,000', '6,000', '8,000']; expect(labels).to.eql(expectedLabels); }); @@ -261,18 +228,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.changeYAxisFilterLabelsCheckbox(axisId, true); await PageObjects.visEditor.clickGo(true); const labels = await PageObjects.visChart.getYAxisLabels(xyChartSelector); - const expectedLabels = [ - '0', - '1,000', - '2,000', - '3,000', - '4,000', - '5,000', - '6,000', - '7,000', - '8,000', - '9,000', - ]; + const expectedLabels = ['0', '2,000', '4,000', '6,000', '8,000']; expect(labels).to.eql(expectedLabels); }); }); diff --git a/test/functional/apps/visualize/replaced_vislib_chart_types/_timelion.ts b/test/functional/apps/visualize/replaced_vislib_chart_types/_timelion.ts index b19644b66f65b6..64bd514bb834e8 100644 --- a/test/functional/apps/visualize/replaced_vislib_chart_types/_timelion.ts +++ b/test/functional/apps/visualize/replaced_vislib_chart_types/_timelion.ts @@ -167,7 +167,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { expect(firstAxesLabels).to.eql(['12.2GB', '12.21GB']); expect(secondAxesLabels).to.eql(['5.59KB', '5.6KB']); expect(thirdAxesLabels.toString()).to.be( - 'BYTES_5722,BYTES_5723,BYTES_5724,BYTES_5725,BYTES_5726,BYTES_5727,BYTES_5728,BYTES_5729,BYTES_5730,BYTES_5731,BYTES_5732,BYTES_5733' + 'BYTES_5722,BYTES_5724,BYTES_5726,BYTES_5728,BYTES_5730,BYTES_5732' ); }); diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/index.test.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/index.test.tsx index 71e63d361a0bc5..78ae37d4fea648 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/index.test.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/index.test.tsx @@ -60,7 +60,7 @@ const defaultProps: Props = { patternIndexNames, patternRollups, patterns, - theme: DARK_THEME, + baseTheme: DARK_THEME, updatePatternIndexNames: jest.fn(), updatePatternRollup: jest.fn(), }; diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/index.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/index.tsx index 45bb717c527067..9522f895d90dc5 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/index.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/index.tsx @@ -9,6 +9,7 @@ import type { FlameElementEvent, HeatmapElementEvent, MetricElementEvent, + PartialTheme, PartitionElementEvent, Theme, WordCloudElementEvent, @@ -52,7 +53,8 @@ export interface Props { patternIndexNames: Record; patternRollups: Record; patterns: string[]; - theme: Theme; + theme?: PartialTheme; + baseTheme: Theme; updatePatternIndexNames: ({ indexNames, pattern, @@ -76,6 +78,7 @@ const DataQualityDetailsComponent: React.FC = ({ patternRollups, patterns, theme, + baseTheme, updatePatternIndexNames, updatePatternRollup, }) => { @@ -97,6 +100,7 @@ const DataQualityDetailsComponent: React.FC = ({ onIndexSelected={onIndexSelected} patterns={patterns} theme={theme} + baseTheme={baseTheme} patternRollups={patternRollups} /> @@ -111,6 +115,7 @@ const DataQualityDetailsComponent: React.FC = ({ openCreateCaseFlyout={openCreateCaseFlyout} patterns={patterns} theme={theme} + baseTheme={baseTheme} patternIndexNames={patternIndexNames} patternRollups={patternRollups} selectedIndex={selectedIndex} diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/indices_details/index.test.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/indices_details/index.test.tsx index 8251b16c389b0d..672f5ed76b6647 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/indices_details/index.test.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/indices_details/index.test.tsx @@ -62,7 +62,7 @@ const defaultProps: Props = { patterns, selectedIndex: null, setSelectedIndex: jest.fn(), - theme: DARK_THEME, + baseTheme: DARK_THEME, updatePatternIndexNames: jest.fn(), updatePatternRollup: jest.fn(), }; diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/indices_details/index.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/indices_details/index.tsx index 3f9ef7575b3856..bc481503cd2bf9 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/indices_details/index.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/indices_details/index.tsx @@ -9,6 +9,7 @@ import type { FlameElementEvent, HeatmapElementEvent, MetricElementEvent, + PartialTheme, PartitionElementEvent, Theme, WordCloudElementEvent, @@ -52,7 +53,8 @@ export interface Props { patterns: string[]; selectedIndex: SelectedIndex | null; setSelectedIndex: (selectedIndex: SelectedIndex | null) => void; - theme: Theme; + theme?: PartialTheme; + baseTheme: Theme; updatePatternIndexNames: ({ indexNames, pattern, @@ -78,6 +80,7 @@ const IndicesDetailsComponent: React.FC = ({ selectedIndex, setSelectedIndex, theme, + baseTheme, updatePatternIndexNames, updatePatternRollup, }) => ( @@ -99,6 +102,7 @@ const IndicesDetailsComponent: React.FC = ({ selectedIndex={selectedIndex} setSelectedIndex={setSelectedIndex} theme={theme} + baseTheme={baseTheme} updatePatternIndexNames={updatePatternIndexNames} updatePatternRollup={updatePatternRollup} /> diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/storage_details/index.test.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/storage_details/index.test.tsx index 366fb487309c35..17a64b43b5ef79 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/storage_details/index.test.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/storage_details/index.test.tsx @@ -39,7 +39,7 @@ const defaultProps: Props = { onIndexSelected, patternRollups, patterns, - theme: DARK_THEME, + baseTheme: DARK_THEME, }; describe('StorageDetails', () => { diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/storage_details/index.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/storage_details/index.tsx index 26340b31286fac..2fe51e7d9acd4b 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/storage_details/index.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/data_quality_details/storage_details/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import type { Theme } from '@elastic/charts'; +import type { PartialTheme, Theme } from '@elastic/charts'; import React, { useMemo } from 'react'; import { getFlattenedBuckets } from './helpers'; @@ -19,7 +19,8 @@ export interface Props { onIndexSelected: ({ indexName, pattern }: SelectedIndex) => void; patternRollups: Record; patterns: string[]; - theme: Theme; + theme?: PartialTheme; + baseTheme: Theme; } const StorageDetailsComponent: React.FC = ({ @@ -29,6 +30,7 @@ const StorageDetailsComponent: React.FC = ({ patternRollups, patterns, theme, + baseTheme, }) => { const flattenedBuckets = useMemo( () => @@ -49,6 +51,7 @@ const StorageDetailsComponent: React.FC = ({ patterns={patterns} patternRollups={patternRollups} theme={theme} + baseTheme={baseTheme} /> ); diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/index.test.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/index.test.tsx index 6e9c5861e6baeb..1b8dad1c42ef7e 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/index.test.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/index.test.tsx @@ -40,7 +40,7 @@ describe('IndexInvalidValues', () => { openCreateCaseFlyout={jest.fn()} patterns={[]} setLastChecked={jest.fn()} - theme={DARK_THEME} + baseTheme={DARK_THEME} /> ); @@ -69,7 +69,7 @@ describe('IndexInvalidValues', () => { openCreateCaseFlyout={jest.fn()} patterns={patterns} setLastChecked={jest.fn()} - theme={DARK_THEME} + baseTheme={DARK_THEME} /> ); @@ -95,7 +95,7 @@ describe('IndexInvalidValues', () => { openCreateCaseFlyout={jest.fn()} patterns={patterns} setLastChecked={jest.fn()} - theme={DARK_THEME} + baseTheme={DARK_THEME} /> ); diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/index.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/index.tsx index ca43cf1e7d40c1..eacccf22bc54b5 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/index.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/body/index.tsx @@ -9,6 +9,7 @@ import type { FlameElementEvent, HeatmapElementEvent, MetricElementEvent, + PartialTheme, PartitionElementEvent, Theme, WordCloudElementEvent, @@ -51,7 +52,8 @@ interface Props { }) => void; patterns: string[]; setLastChecked: (lastChecked: string) => void; - theme: Theme; + theme?: PartialTheme; + baseTheme: Theme; } const BodyComponent: React.FC = ({ @@ -67,6 +69,7 @@ const BodyComponent: React.FC = ({ patterns, setLastChecked, theme, + baseTheme, }) => { const { onCheckCompleted, @@ -120,6 +123,7 @@ const BodyComponent: React.FC = ({ patternIndexNames={patternIndexNames} patternRollups={patternRollups} theme={theme} + baseTheme={baseTheme} updatePatternIndexNames={updatePatternIndexNames} updatePatternRollup={updatePatternRollup} /> diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/index.test.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/index.test.tsx index ef0868fe3233be..688c94ab66fff5 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/index.test.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/index.test.tsx @@ -115,7 +115,7 @@ const defaultProps: Props = { openCreateCaseFlyout: jest.fn(), pattern, patternRollup, - theme: DARK_THEME, + baseTheme: DARK_THEME, updatePatternRollup: jest.fn(), }; diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/index.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/index.tsx index ac16b9dfbcccf1..5bb5cc26ab9673 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/index.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/index.tsx @@ -10,6 +10,7 @@ import type { FlameElementEvent, HeatmapElementEvent, MetricElementEvent, + PartialTheme, PartitionElementEvent, Theme, WordCloudElementEvent, @@ -70,7 +71,8 @@ export interface Props { }) => void; pattern: string; patternRollup: PatternRollup | undefined; - theme: Theme; + theme?: PartialTheme; + baseTheme: Theme; updatePatternRollup: (patternRollup: PatternRollup) => void; } @@ -88,6 +90,7 @@ const IndexPropertiesComponent: React.FC = ({ pattern, patternRollup, theme, + baseTheme, updatePatternRollup, }) => { const { error: mappingsError, indexes, loading: loadingMappings } = useMappings(indexName); @@ -154,6 +157,7 @@ const IndexPropertiesComponent: React.FC = ({ setSelectedTabId, stats: patternRollup?.stats ?? null, theme, + baseTheme, }), [ addSuccessToast, @@ -171,6 +175,7 @@ const IndexPropertiesComponent: React.FC = ({ patternRollup?.docsCount, patternRollup?.stats, theme, + baseTheme, ] ); diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/pattern/index.test.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/pattern/index.test.tsx index d06866544a6bf5..e927c969ae9764 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/pattern/index.test.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/pattern/index.test.tsx @@ -8,7 +8,7 @@ import { DARK_THEME } from '@elastic/charts'; import numeral from '@elastic/numeral'; import { render, screen } from '@testing-library/react'; -import React from 'react'; +import React, { ComponentProps } from 'react'; import { EMPTY_STAT } from '../../helpers'; import { TestProviders } from '../../mock/test_providers/test_providers'; @@ -38,7 +38,8 @@ jest.mock('../../use_ilm_explain', () => ({ })), })); -const defaultProps = { +const defaultProps: ComponentProps = { + pattern: '', addSuccessToast: jest.fn(), canUserCreateAndReadCases: jest.fn(), formatBytes, @@ -51,7 +52,7 @@ const defaultProps = { patternRollup: undefined, selectedIndex: null, setSelectedIndex: jest.fn(), - theme: DARK_THEME, + baseTheme: DARK_THEME, updatePatternIndexNames: jest.fn(), updatePatternRollup: jest.fn(), }; diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/pattern/index.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/pattern/index.tsx index 3213c1c1dbef9c..70a8c97f94f03a 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/pattern/index.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/pattern/index.tsx @@ -9,6 +9,7 @@ import type { FlameElementEvent, HeatmapElementEvent, MetricElementEvent, + PartialTheme, PartitionElementEvent, Theme, WordCloudElementEvent, @@ -88,7 +89,8 @@ interface Props { patternRollup: PatternRollup | undefined; selectedIndex: SelectedIndex | null; setSelectedIndex: (selectedIndex: SelectedIndex | null) => void; - theme: Theme; + theme?: PartialTheme; + baseTheme: Theme; updatePatternIndexNames: ({ indexNames, pattern, @@ -114,6 +116,7 @@ const PatternComponent: React.FC = ({ selectedIndex, setSelectedIndex, theme, + baseTheme, updatePatternIndexNames, updatePatternRollup, }) => { @@ -157,6 +160,7 @@ const PatternComponent: React.FC = ({ pattern={pattern} patternRollup={patternRollup} theme={theme} + baseTheme={baseTheme} updatePatternRollup={updatePatternRollup} /> @@ -178,6 +182,7 @@ const PatternComponent: React.FC = ({ patternRollup, stats, theme, + baseTheme, updatePatternRollup, ] ); diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/storage_treemap/index.test.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/storage_treemap/index.test.tsx index f523c96cc08019..6485f3c1e4717d 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/storage_treemap/index.test.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/storage_treemap/index.test.tsx @@ -54,7 +54,7 @@ const defaultProps: Props = { onIndexSelected, patternRollups, patterns, - theme: DARK_THEME, + baseTheme: DARK_THEME, }; jest.mock('@elastic/charts', () => { diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/storage_treemap/index.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/storage_treemap/index.tsx index b42cd6072ad820..2be755813dd1f8 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/storage_treemap/index.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/storage_treemap/index.tsx @@ -45,7 +45,8 @@ export interface Props { onIndexSelected: ({ indexName, pattern }: SelectedIndex) => void; patternRollups: Record; patterns: string[]; - theme: Theme; + theme?: PartialTheme; + baseTheme: Theme; } interface GetGroupByFieldsResult { @@ -89,23 +90,25 @@ const StorageTreemapComponent: React.FC = ({ onIndexSelected, patternRollups, patterns, - theme, + theme = {}, + baseTheme, }: Props) => { - const fillColor = useMemo(() => theme.background.color, [theme.background.color]); - - const treemapTheme: PartialTheme[] = useMemo( - () => [ - { - partition: { - fillLabel: { valueFont: { fontWeight: 700 } }, - idealFontSizeJump: 1.15, - maxFontSize: 16, - minFontSize: 4, - sectorLineStroke: fillColor, // draws the light or dark "lines" between partitions - sectorLineWidth: 1.5, - }, + const fillColor = useMemo( + () => theme?.background?.color ?? baseTheme.background.color, + [theme?.background?.color, baseTheme.background.color] + ); + + const treemapTheme = useMemo( + () => ({ + partition: { + fillLabel: { valueFont: { fontWeight: 700 } }, + idealFontSizeJump: 1.15, + maxFontSize: 16, + minFontSize: 4, + sectorLineStroke: fillColor, // draws the light or dark "lines" between partitions + sectorLineWidth: 1.5, }, - ], + }), [fillColor] ); @@ -151,9 +154,9 @@ const StorageTreemapComponent: React.FC = ({ ) : ( { patternDocsCount: 57410, setSelectedTabId: jest.fn(), stats: mockStatsGreenIndex, - theme: DARK_THEME, + baseTheme: DARK_THEME, }).map((x) => omit(['append', 'content'], x)) ).toEqual([ { diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/tabs/helpers.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/tabs/helpers.tsx index c04a7a861d17f8..f52adc443fc502 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/tabs/helpers.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/tabs/helpers.tsx @@ -9,6 +9,7 @@ import type { FlameElementEvent, HeatmapElementEvent, MetricElementEvent, + PartialTheme, PartitionElementEvent, Theme, WordCloudElementEvent, @@ -74,6 +75,7 @@ export const getTabs = ({ setSelectedTabId, stats, theme, + baseTheme, }: { addSuccessToast: (toast: { title: string }) => void; addToNewCaseDisabled: boolean; @@ -102,7 +104,8 @@ export const getTabs = ({ patternDocsCount: number; setSelectedTabId: (tabId: string) => void; stats: Record | null; - theme: Theme; + theme?: PartialTheme; + baseTheme: Theme; }) => [ { content: ( @@ -123,6 +126,7 @@ export const getTabs = ({ setSelectedTabId={setSelectedTabId} sizeInBytes={getSizeInBytes({ indexName, stats })} theme={theme} + baseTheme={baseTheme} /> ), id: SUMMARY_TAB_ID, diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/tabs/summary_tab/index.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/tabs/summary_tab/index.tsx index 8f27a409c74554..eed0c5a69d3b3f 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/tabs/summary_tab/index.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/tabs/summary_tab/index.tsx @@ -11,6 +11,7 @@ import type { FlameElementEvent, HeatmapElementEvent, MetricElementEvent, + PartialTheme, PartitionElementEvent, Theme, WordCloudElementEvent, @@ -49,7 +50,8 @@ interface Props { patternDocsCount: number; setSelectedTabId: (tabId: string) => void; sizeInBytes: number | undefined; - theme: Theme; + theme?: PartialTheme; + baseTheme: Theme; } const SummaryTabComponent: React.FC = ({ @@ -69,6 +71,7 @@ const SummaryTabComponent: React.FC = ({ setSelectedTabId, sizeInBytes, theme, + baseTheme, }) => ( <> = ({ partitionedFieldMetadata={partitionedFieldMetadata} setSelectedTabId={setSelectedTabId} theme={theme} + baseTheme={baseTheme} /> ); diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/ecs_summary_donut_chart/index.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/ecs_summary_donut_chart/index.tsx index b09a04b131ccbd..8c8aecac56db8d 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/ecs_summary_donut_chart/index.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/ecs_summary_donut_chart/index.tsx @@ -84,7 +84,8 @@ interface Props { height?: number; partitionedFieldMetadata: PartitionedFieldMetadata; setSelectedTabId: (tabId: string) => void; - theme: Theme; + theme?: PartialTheme; + baseTheme: Theme; } const EcsSummaryDonutChartComponent: React.FC = ({ @@ -93,7 +94,8 @@ const EcsSummaryDonutChartComponent: React.FC = ({ height = DEFAULT_HEIGHT, partitionedFieldMetadata, setSelectedTabId, - theme, + theme = {}, + baseTheme, }) => { const summaryData = useMemo( () => getSummaryData(partitionedFieldMetadata), @@ -163,7 +165,11 @@ const EcsSummaryDonutChartComponent: React.FC = ({ - + { openCreateCaseFlyout={jest.fn()} patterns={[]} setLastChecked={jest.fn()} - theme={DARK_THEME} + baseTheme={DARK_THEME} /> ); @@ -66,7 +66,7 @@ describe('DataQualityPanel', () => { openCreateCaseFlyout={jest.fn()} patterns={[]} setLastChecked={jest.fn()} - theme={DARK_THEME} + baseTheme={DARK_THEME} /> ); diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/index.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/index.tsx index 026be1f05d0d83..2afd1de99a3d64 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/index.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/index.tsx @@ -11,6 +11,7 @@ import type { FlameElementEvent, HeatmapElementEvent, MetricElementEvent, + PartialTheme, PartitionElementEvent, Theme, WordCloudElementEvent, @@ -53,7 +54,8 @@ interface Props { }) => void; patterns: string[]; setLastChecked: (lastChecked: string) => void; - theme: Theme; + theme?: PartialTheme; + baseTheme: Theme; } /** Renders the `Data Quality` dashboard content */ @@ -71,6 +73,7 @@ const DataQualityPanelComponent: React.FC = ({ patterns, setLastChecked, theme, + baseTheme, }) => { const formatBytes = useCallback( (value: number | undefined): string => @@ -99,6 +102,7 @@ const DataQualityPanelComponent: React.FC = ({ patterns={patterns} setLastChecked={setLastChecked} theme={theme} + baseTheme={baseTheme} /> ); diff --git a/x-pack/plugins/aiops/public/components/mini_histogram/mini_histogram.tsx b/x-pack/plugins/aiops/public/components/mini_histogram/mini_histogram.tsx index 7b62ed15ca7557..c0bb77cdbfebc6 100644 --- a/x-pack/plugins/aiops/public/components/mini_histogram/mini_histogram.tsx +++ b/x-pack/plugins/aiops/public/components/mini_histogram/mini_histogram.tsx @@ -8,7 +8,15 @@ import React, { FC } from 'react'; import { css } from '@emotion/react'; -import { Chart, BarSeries, PartialTheme, ScaleType, Settings } from '@elastic/charts'; +import { + Chart, + BarSeries, + PartialTheme, + ScaleType, + Settings, + Tooltip, + TooltipType, +} from '@elastic/charts'; import { EuiLoadingChart, EuiTextColor } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -96,11 +104,8 @@ export const MiniHistogram: FC = ({ return (
- + + " + } + } + }, + "apm-7.14.0-error-000002": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000003": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000004": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000005": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000006": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000007": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000008": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000009": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000010": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000011": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000012": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000013": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000014": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-error-000015": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000001": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000002": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000003": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000004": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000005": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000006": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000007": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000008": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000009": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000010": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000011": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000012": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000013": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000014": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-metric-000015": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-onboarding-2021.09.09": { + "settings": { + "index": { + "provided_name": "apm-7.14.0-onboarding-2021.09.09" + } + } + }, + "apm-7.14.0-onboarding-2021.11.02": { + "settings": { + "index": { + "provided_name": "apm-7.14.0-onboarding-2021.11.02" + } + } + }, + "apm-7.14.0-profile-000001": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000002": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000003": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000004": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000005": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000006": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000007": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000008": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000009": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000010": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000011": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000012": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000013": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000014": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-profile-000015": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000001": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000002": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000003": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000004": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000005": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000006": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000007": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000008": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000009": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000010": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000011": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000012": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000013": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000014": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-span-000015": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000001": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000002": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000003": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000004": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000005": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000006": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000007": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000008": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000009": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000010": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000011": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000012": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000013": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000014": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.14.0-transaction-000015": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-error-000001": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-error-000002": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-error-000003": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-error-000004": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-error-000005": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-error-000006": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-error-000007": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-error-000008": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-error-000009": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-error-000010": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-error-000011": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-error-000012": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-metric-000001": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-metric-000002": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-metric-000003": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-metric-000004": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-metric-000005": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-metric-000006": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-metric-000007": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-metric-000008": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-metric-000009": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-metric-000010": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-metric-000011": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-metric-000012": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-onboarding-2021.12.08": { + "settings": { + "index": { + "provided_name": "apm-7.15.0-onboarding-2021.12.08" + } + } + }, + "apm-7.15.0-profile-000001": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-profile-000002": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-profile-000003": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-profile-000004": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-profile-000005": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-profile-000006": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-profile-000007": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-profile-000008": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-profile-000009": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-profile-000010": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-profile-000011": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-profile-000012": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-span-000001": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-span-000002": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-span-000003": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-span-000004": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-span-000005": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-span-000006": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-span-000007": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-span-000008": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-span-000009": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-span-000010": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-span-000011": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-span-000012": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-transaction-000001": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-transaction-000002": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-transaction-000003": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-transaction-000004": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-transaction-000005": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-transaction-000006": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-transaction-000007": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-transaction-000008": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-transaction-000009": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-transaction-000010": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-transaction-000011": { + "settings": { + "index": { + "provided_name": "" + } + } + }, + "apm-7.15.0-transaction-000012": { + "settings": { + "index": { + "provided_name": "" + } + } + } + }, + "ingestPipelines": { + "logs-apm.error-8.8.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "metrics-apm.internal-8.6.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "metrics-apm.internal-8.7.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "metrics-apm.internal-8.8.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "metrics-apm.service_destination.1m-8.7.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "metrics-apm.service_destination.1m-8.8.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "metrics-apm.service_summary.1m-8.7.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "metrics-apm.service_summary.1m-8.8.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "metrics-apm.service_transaction.1m-8.7.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "metrics-apm.service_transaction.1m-8.8.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "metrics-apm.transaction.1m-8.7.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "metrics-apm.transaction.1m-8.8.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "traces-apm-8.8.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "traces-apm.rum-8.7.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + }, + "traces-apm.rum-8.8.0": { + "processors": [ + { + "grok": { + "field": "observer.version", + "patterns": [ + "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" + ] + } + } + ] + } + }, + "existingIndexTemplates": [ + { + "name": "logs-apm.app", + "index_template": { + "index_patterns": [ + "logs-apm.app.*-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "logs-apm.app@package", + "logs-apm.app@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 150, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } + } + }, + { + "name": "logs-apm.error", + "index_template": { + "index_patterns": [ + "logs-apm.error-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "logs-apm.error@package", + "logs-apm.error@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.app", + "index_template": { + "index_patterns": [ + "metrics-apm.app.*-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.app@package", + "metrics-apm.app@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 150, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.internal", + "index_template": { + "index_patterns": [ + "metrics-apm.internal-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.internal@package", + "metrics-apm.internal@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } + } + }, + { + "name": "traces-apm.rum", + "index_template": { + "index_patterns": [ + "traces-apm.rum-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "traces-apm.rum@package", + "traces-apm.rum@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } + } + }, + { + "name": "traces-apm.sampled", + "index_template": { + "index_patterns": [ + "traces-apm.sampled-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "traces-apm.sampled@package", + "traces-apm.sampled@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } + } + }, + { + "name": "traces-apm", + "index_template": { + "index_patterns": [ + "traces-apm-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "traces-apm@package", + "traces-apm@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.service_destination.1m", + "index_template": { + "index_patterns": [ + "metrics-apm.service_destination.1m-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.service_destination.1m@package", + "metrics-apm.service_destination.1m@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.service_summary.1m", + "index_template": { + "index_patterns": [ + "metrics-apm.service_summary.1m-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.service_summary.1m@package", + "metrics-apm.service_summary.1m@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.service_transaction.1m", + "index_template": { + "index_patterns": [ + "metrics-apm.service_transaction.1m-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.service_transaction.1m@package", + "metrics-apm.service_transaction.1m@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.transaction.1m", + "index_template": { + "index_patterns": [ + "metrics-apm.transaction.1m-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.transaction.1m@package", + "metrics-apm.transaction.1m@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.service_destination.10m", + "index_template": { + "index_patterns": [ + "metrics-apm.service_destination.10m-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.service_destination.10m@package", + "metrics-apm.service_destination.10m@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": true, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.service_summary.10m", + "index_template": { + "index_patterns": [ + "metrics-apm.service_summary.10m-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.service_summary.10m@package", + "metrics-apm.service_summary.10m@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": true, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.service_transaction.10m", + "index_template": { + "index_patterns": [ + "metrics-apm.service_transaction.10m-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.service_transaction.10m@package", + "metrics-apm.service_transaction.10m@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": true, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.transaction.10m", + "index_template": { + "index_patterns": [ + "metrics-apm.transaction.10m-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.transaction.10m@package", + "metrics-apm.transaction.10m@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": true, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.service_destination.60m", + "index_template": { + "index_patterns": [ + "metrics-apm.service_destination.60m-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.service_destination.60m@package", + "metrics-apm.service_destination.60m@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": true, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.service_summary.60m", + "index_template": { + "index_patterns": [ + "metrics-apm.service_summary.60m-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.service_summary.60m@package", + "metrics-apm.service_summary.60m@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": true, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.service_transaction.60m", + "index_template": { + "index_patterns": [ + "metrics-apm.service_transaction.60m-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.service_transaction.60m@package", + "metrics-apm.service_transaction.60m@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": true, + "allow_custom_routing": false + } + } + }, + { + "name": "metrics-apm.transaction.60m", + "index_template": { + "index_patterns": [ + "metrics-apm.transaction.60m-*" + ], + "template": { + "settings": {}, + "mappings": { + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + } + } + }, + "composed_of": [ + "metrics-apm.transaction.60m@package", + "metrics-apm.transaction.60m@custom", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "_meta": { + "package": { + "name": "apm" + }, + "managed_by": "fleet", + "managed": true + }, + "data_stream": { + "hidden": true, + "allow_custom_routing": false + } + } + } + ] + }, + "apmIndexTemplates": [ + { + "name": "logs-apm.app", + "exists": true, + "isNonStandard": false + }, + { + "name": "logs-apm.error", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.app", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.internal", + "exists": true, + "isNonStandard": false + }, + { + "name": "traces-apm.rum", + "exists": true, + "isNonStandard": false + }, + { + "name": "traces-apm.sampled", + "exists": true, + "isNonStandard": false + }, + { + "name": "traces-apm", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.service_destination.1m", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.service_summary.1m", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.service_transaction.1m", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.transaction.1m", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.service_destination.10m", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.service_summary.10m", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.service_transaction.10m", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.transaction.10m", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.service_destination.60m", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.service_summary.60m", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.service_transaction.60m", + "exists": true, + "isNonStandard": false + }, + { + "name": "metrics-apm.transaction.60m", + "exists": true, + "isNonStandard": false + } + ], + "invalidIndices": [ + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000001" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000002" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000003" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000004" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000005" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000006" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000007" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000008" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000009" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000010" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000011" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000012" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000013" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000014" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-error-000015" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000001" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000002" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000003" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000004" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000005" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000006" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000007" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000008" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000009" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000010" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000011" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000012" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000013" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000014" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-metric-000015" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-onboarding-2021.09.09" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-onboarding-2021.11.02" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000001" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000002" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000003" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000004" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000005" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000006" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000007" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000008" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000009" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000010" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000011" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000012" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000013" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000014" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-profile-000015" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000001" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000002" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000003" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000004" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000005" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000006" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000007" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000008" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000009" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000010" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000011" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000012" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000013" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000014" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-span-000015" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000001" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000002" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000003" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000004" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000005" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000006" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000007" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000008" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000009" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000010" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000011" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000012" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000013" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000014" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.14.0-transaction-000015" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-error-000001" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-error-000002" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-error-000003" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-error-000004" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-error-000005" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-error-000006" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-error-000007" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-error-000008" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-error-000009" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-error-000010" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-error-000011" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-error-000012" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-metric-000001" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-metric-000002" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-metric-000003" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-metric-000004" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-metric-000005" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-metric-000006" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-metric-000007" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-metric-000008" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-metric-000009" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-metric-000010" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-metric-000011" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-metric-000012" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-onboarding-2021.12.08" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-profile-000001" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-profile-000002" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-profile-000003" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-profile-000004" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-profile-000005" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-profile-000006" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-profile-000007" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-profile-000008" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-profile-000009" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-profile-000010" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-profile-000011" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-profile-000012" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-span-000001" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-span-000002" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-span-000003" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-span-000004" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-span-000005" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-span-000006" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-span-000007" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-span-000008" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-span-000009" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-span-000010" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-span-000011" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-span-000012" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-transaction-000001" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-transaction-000002" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-transaction-000003" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-transaction-000004" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-transaction-000005" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-transaction-000006" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-transaction-000007" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-transaction-000008" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-transaction-000009" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-transaction-000010" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-transaction-000011" + }, + { + "isValid": false, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": false + }, + "index": "apm-7.15.0-transaction-000012" + } + ], + "validIndices": [ + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "logs-apm.error-8.8.0" + }, + "index": ".ds-logs-apm.error-default-2023.06.05-000022", + "dataStream": "logs-apm.error-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.internal-8.6.0" + }, + "index": ".ds-metrics-apm.internal-default-2023.03.13-000011", + "dataStream": "metrics-apm.internal-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.internal-8.6.0" + }, + "index": ".ds-metrics-apm.internal-default-2023.04.12-000014", + "dataStream": "metrics-apm.internal-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.internal-8.7.0" + }, + "index": ".ds-metrics-apm.internal-default-2023.04.16-000015", + "dataStream": "metrics-apm.internal-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.internal-8.7.0" + }, + "index": ".ds-metrics-apm.internal-default-2023.05.16-000017", + "dataStream": "metrics-apm.internal-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.internal-8.8.0" + }, + "index": ".ds-metrics-apm.internal-default-2023.06.05-000018", + "dataStream": "metrics-apm.internal-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.service_destination.1m-8.7.0" + }, + "index": ".ds-metrics-apm.service_destination.1m-default-2023.04.17-000001", + "dataStream": "metrics-apm.service_destination.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.service_destination.1m-8.8.0" + }, + "index": ".ds-metrics-apm.service_destination.1m-default-2023.06.05-000002", + "dataStream": "metrics-apm.service_destination.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.service_destination.1m-8.8.0" + }, + "index": ".ds-metrics-apm.service_destination.1m-default-2023.06.12-000003", + "dataStream": "metrics-apm.service_destination.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.service_destination.1m-8.8.0" + }, + "index": ".ds-metrics-apm.service_destination.1m-default-2023.06.19-000004", + "dataStream": "metrics-apm.service_destination.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.service_summary.1m-8.7.0" + }, + "index": ".ds-metrics-apm.service_summary.1m-default-2023.04.17-000001", + "dataStream": "metrics-apm.service_summary.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.service_summary.1m-8.8.0" + }, + "index": ".ds-metrics-apm.service_summary.1m-default-2023.06.05-000002", + "dataStream": "metrics-apm.service_summary.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.service_summary.1m-8.8.0" + }, + "index": ".ds-metrics-apm.service_summary.1m-default-2023.06.12-000003", + "dataStream": "metrics-apm.service_summary.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.service_summary.1m-8.8.0" + }, + "index": ".ds-metrics-apm.service_summary.1m-default-2023.06.19-000004", + "dataStream": "metrics-apm.service_summary.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.service_transaction.1m-8.7.0" + }, + "index": ".ds-metrics-apm.service_transaction.1m-default-2023.04.17-000001", + "dataStream": "metrics-apm.service_transaction.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.service_transaction.1m-8.8.0" + }, + "index": ".ds-metrics-apm.service_transaction.1m-default-2023.06.05-000002", + "dataStream": "metrics-apm.service_transaction.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.service_transaction.1m-8.8.0" + }, + "index": ".ds-metrics-apm.service_transaction.1m-default-2023.06.12-000003", + "dataStream": "metrics-apm.service_transaction.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.service_transaction.1m-8.8.0" + }, + "index": ".ds-metrics-apm.service_transaction.1m-default-2023.06.19-000004", + "dataStream": "metrics-apm.service_transaction.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.transaction.1m-8.7.0" + }, + "index": ".ds-metrics-apm.transaction.1m-default-2023.04.17-000001", + "dataStream": "metrics-apm.transaction.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.transaction.1m-8.8.0" + }, + "index": ".ds-metrics-apm.transaction.1m-default-2023.06.05-000002", + "dataStream": "metrics-apm.transaction.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.transaction.1m-8.8.0" + }, + "index": ".ds-metrics-apm.transaction.1m-default-2023.06.12-000003", + "dataStream": "metrics-apm.transaction.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "metrics-apm.transaction.1m-8.8.0" + }, + "index": ".ds-metrics-apm.transaction.1m-default-2023.06.19-000004", + "dataStream": "metrics-apm.transaction.1m-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "traces-apm-8.8.0" + }, + "index": ".ds-traces-apm-default-2023.06.05-000022", + "dataStream": "traces-apm-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "traces-apm.rum-8.7.0" + }, + "index": ".ds-traces-apm.rum-default-2023.03.15-000002", + "dataStream": "traces-apm.rum-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "traces-apm.rum-8.7.0" + }, + "index": ".ds-traces-apm.rum-default-2023.04.14-000003", + "dataStream": "traces-apm.rum-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "traces-apm.rum-8.7.0" + }, + "index": ".ds-traces-apm.rum-default-2023.05.14-000004", + "dataStream": "traces-apm.rum-default" + }, + { + "isValid": true, + "fieldMappings": { + "isValid": true + }, + "ingestPipeline": { + "isValid": true, + "id": "traces-apm.rum-8.8.0" + }, + "index": ".ds-traces-apm.rum-default-2023.06.05-000005", + "dataStream": "traces-apm.rum-default" + } + ], + "indexTemplatesByIndexPattern": [ + { + "indexPattern": "logs-apm*", + "indexTemplates": [ + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "logs-apm.error-*" + ], + "templateName": "logs-apm.error" + }, + { + "isNonStandard": false, + "priority": 150, + "templateIndexPatterns": [ + "logs-apm.app.*-*" + ], + "templateName": "logs-apm.app" + }, + { + "isNonStandard": false, + "priority": 100, + "templateIndexPatterns": [ + "logs-*-*" + ], + "templateName": "logs" + } + ] + }, + { + "indexPattern": "apm-*", + "indexTemplates": [ + { + "isNonStandard": true, + "templateIndexPatterns": [ + "apm-7.15.0-error*" + ], + "templateName": "apm-7.15.0-error" + }, + { + "isNonStandard": true, + "templateIndexPatterns": [ + "apm-7.14.0-error*" + ], + "templateName": "apm-7.14.0-error" + }, + { + "isNonStandard": true, + "templateIndexPatterns": [ + "apm-7.14.0-metric*" + ], + "templateName": "apm-7.14.0-metric" + }, + { + "isNonStandard": true, + "templateIndexPatterns": [ + "apm-7.14.0-transaction*" + ], + "templateName": "apm-7.14.0-transaction" + }, + { + "isNonStandard": true, + "templateIndexPatterns": [ + "apm-7.15.0-profile*" + ], + "templateName": "apm-7.15.0-profile" + }, + { + "isNonStandard": true, + "templateIndexPatterns": [ + "apm-7.14.0-profile*" + ], + "templateName": "apm-7.14.0-profile" + }, + { + "isNonStandard": true, + "templateIndexPatterns": [ + "apm-7.15.0-transaction*" + ], + "templateName": "apm-7.15.0-transaction" + }, + { + "isNonStandard": true, + "templateIndexPatterns": [ + "apm-7.15.0-metric*" + ], + "templateName": "apm-7.15.0-metric" + }, + { + "isNonStandard": true, + "templateIndexPatterns": [ + "apm-7.15.0-span*" + ], + "templateName": "apm-7.15.0-span" + }, + { + "isNonStandard": true, + "templateIndexPatterns": [ + "apm-7.15.0*" + ], + "templateName": "apm-7.15.0" + }, + { + "isNonStandard": true, + "templateIndexPatterns": [ + "apm-7.14.0-span*" + ], + "templateName": "apm-7.14.0-span" + }, + { + "isNonStandard": true, + "templateIndexPatterns": [ + "apm-7.14.0*" + ], + "templateName": "apm-7.14.0" + } + ] + }, + { + "indexPattern": "metrics-apm*", + "indexTemplates": [ + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.service_transaction.60m-*" + ], + "templateName": "metrics-apm.service_transaction.60m" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.service_destination.10m-*" + ], + "templateName": "metrics-apm.service_destination.10m" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.transaction.1m-*" + ], + "templateName": "metrics-apm.transaction.1m" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.service_destination.1m-*" + ], + "templateName": "metrics-apm.service_destination.1m" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.service_transaction.10m-*" + ], + "templateName": "metrics-apm.service_transaction.10m" + }, + { + "isNonStandard": true, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.profiling-*" + ], + "templateName": "metrics-apm.profiling" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.service_transaction.1m-*" + ], + "templateName": "metrics-apm.service_transaction.1m" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.transaction.60m-*" + ], + "templateName": "metrics-apm.transaction.60m" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.service_destination.60m-*" + ], + "templateName": "metrics-apm.service_destination.60m" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.service_summary.1m-*" + ], + "templateName": "metrics-apm.service_summary.1m" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.transaction.10m-*" + ], + "templateName": "metrics-apm.transaction.10m" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.internal-*" + ], + "templateName": "metrics-apm.internal" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.service_summary.10m-*" + ], + "templateName": "metrics-apm.service_summary.10m" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "metrics-apm.service_summary.60m-*" + ], + "templateName": "metrics-apm.service_summary.60m" + }, + { + "isNonStandard": false, + "priority": 150, + "templateIndexPatterns": [ + "metrics-apm.app.*-*" + ], + "templateName": "metrics-apm.app" + }, + { + "isNonStandard": false, + "priority": 100, + "templateIndexPatterns": [ + "metrics-*-*" + ], + "templateName": "metrics" + } + ] + }, + { + "indexPattern": "traces-apm*", + "indexTemplates": [ + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "traces-apm-*" + ], + "templateName": "traces-apm" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "traces-apm.rum-*" + ], + "templateName": "traces-apm.rum" + }, + { + "isNonStandard": false, + "priority": 200, + "templateIndexPatterns": [ + "traces-apm.sampled-*" + ], + "templateName": "traces-apm.sampled" + } + ] + } + ], + "dataStreams": [ + { + "name": "logs-apm.error-default", + "template": "logs-apm.error" + }, + { + "name": "metrics-apm.internal-default", + "template": "metrics-apm.internal" + }, + { + "name": "metrics-apm.service_destination.1m-default", + "template": "metrics-apm.service_destination.1m" + }, + { + "name": "metrics-apm.service_summary.1m-default", + "template": "metrics-apm.service_summary.1m" + }, + { + "name": "metrics-apm.service_transaction.1m-default", + "template": "metrics-apm.service_transaction.1m" + }, + { + "name": "metrics-apm.transaction.1m-default", + "template": "metrics-apm.transaction.1m" + }, + { + "name": "traces-apm-default", + "template": "traces-apm" + }, + { + "name": "traces-apm.rum-default", + "template": "traces-apm.rum" + } + ], + "nonDataStreamIndices": [ + "apm-7.14.0-error-000001", + "apm-7.14.0-error-000002", + "apm-7.14.0-error-000003", + "apm-7.14.0-error-000004", + "apm-7.14.0-error-000005", + "apm-7.14.0-error-000006", + "apm-7.14.0-error-000007", + "apm-7.14.0-error-000008", + "apm-7.14.0-error-000009", + "apm-7.14.0-error-000010", + "apm-7.14.0-error-000011", + "apm-7.14.0-error-000012", + "apm-7.14.0-error-000013", + "apm-7.14.0-error-000014", + "apm-7.14.0-error-000015", + "apm-7.14.0-metric-000001", + "apm-7.14.0-metric-000002", + "apm-7.14.0-metric-000003", + "apm-7.14.0-metric-000004", + "apm-7.14.0-metric-000005", + "apm-7.14.0-metric-000006", + "apm-7.14.0-metric-000007", + "apm-7.14.0-metric-000008", + "apm-7.14.0-metric-000009", + "apm-7.14.0-metric-000010", + "apm-7.14.0-metric-000011", + "apm-7.14.0-metric-000012", + "apm-7.14.0-metric-000013", + "apm-7.14.0-metric-000014", + "apm-7.14.0-metric-000015", + "apm-7.14.0-onboarding-2021.09.09", + "apm-7.14.0-onboarding-2021.11.02", + "apm-7.14.0-profile-000001", + "apm-7.14.0-profile-000002", + "apm-7.14.0-profile-000003", + "apm-7.14.0-profile-000004", + "apm-7.14.0-profile-000005", + "apm-7.14.0-profile-000006", + "apm-7.14.0-profile-000007", + "apm-7.14.0-profile-000008", + "apm-7.14.0-profile-000009", + "apm-7.14.0-profile-000010", + "apm-7.14.0-profile-000011", + "apm-7.14.0-profile-000012", + "apm-7.14.0-profile-000013", + "apm-7.14.0-profile-000014", + "apm-7.14.0-profile-000015", + "apm-7.14.0-span-000001", + "apm-7.14.0-span-000002", + "apm-7.14.0-span-000003", + "apm-7.14.0-span-000004", + "apm-7.14.0-span-000005", + "apm-7.14.0-span-000006", + "apm-7.14.0-span-000007", + "apm-7.14.0-span-000008", + "apm-7.14.0-span-000009", + "apm-7.14.0-span-000010", + "apm-7.14.0-span-000011", + "apm-7.14.0-span-000012", + "apm-7.14.0-span-000013", + "apm-7.14.0-span-000014", + "apm-7.14.0-span-000015", + "apm-7.14.0-transaction-000001", + "apm-7.14.0-transaction-000002", + "apm-7.14.0-transaction-000003", + "apm-7.14.0-transaction-000004", + "apm-7.14.0-transaction-000005", + "apm-7.14.0-transaction-000006", + "apm-7.14.0-transaction-000007", + "apm-7.14.0-transaction-000008", + "apm-7.14.0-transaction-000009", + "apm-7.14.0-transaction-000010", + "apm-7.14.0-transaction-000011", + "apm-7.14.0-transaction-000012", + "apm-7.14.0-transaction-000013", + "apm-7.14.0-transaction-000014", + "apm-7.14.0-transaction-000015", + "apm-7.15.0-error-000001", + "apm-7.15.0-error-000002", + "apm-7.15.0-error-000003", + "apm-7.15.0-error-000004", + "apm-7.15.0-error-000005", + "apm-7.15.0-error-000006", + "apm-7.15.0-error-000007", + "apm-7.15.0-error-000008", + "apm-7.15.0-error-000009", + "apm-7.15.0-error-000010", + "apm-7.15.0-error-000011", + "apm-7.15.0-error-000012", + "apm-7.15.0-metric-000001", + "apm-7.15.0-metric-000002", + "apm-7.15.0-metric-000003", + "apm-7.15.0-metric-000004", + "apm-7.15.0-metric-000005", + "apm-7.15.0-metric-000006", + "apm-7.15.0-metric-000007", + "apm-7.15.0-metric-000008", + "apm-7.15.0-metric-000009", + "apm-7.15.0-metric-000010", + "apm-7.15.0-metric-000011", + "apm-7.15.0-metric-000012", + "apm-7.15.0-onboarding-2021.12.08", + "apm-7.15.0-profile-000001", + "apm-7.15.0-profile-000002", + "apm-7.15.0-profile-000003", + "apm-7.15.0-profile-000004", + "apm-7.15.0-profile-000005", + "apm-7.15.0-profile-000006", + "apm-7.15.0-profile-000007", + "apm-7.15.0-profile-000008", + "apm-7.15.0-profile-000009", + "apm-7.15.0-profile-000010", + "apm-7.15.0-profile-000011", + "apm-7.15.0-profile-000012", + "apm-7.15.0-span-000001", + "apm-7.15.0-span-000002", + "apm-7.15.0-span-000003", + "apm-7.15.0-span-000004", + "apm-7.15.0-span-000005", + "apm-7.15.0-span-000006", + "apm-7.15.0-span-000007", + "apm-7.15.0-span-000008", + "apm-7.15.0-span-000009", + "apm-7.15.0-span-000010", + "apm-7.15.0-span-000011", + "apm-7.15.0-span-000012", + "apm-7.15.0-transaction-000001", + "apm-7.15.0-transaction-000002", + "apm-7.15.0-transaction-000003", + "apm-7.15.0-transaction-000004", + "apm-7.15.0-transaction-000005", + "apm-7.15.0-transaction-000006", + "apm-7.15.0-transaction-000007", + "apm-7.15.0-transaction-000008", + "apm-7.15.0-transaction-000009", + "apm-7.15.0-transaction-000010", + "apm-7.15.0-transaction-000011", + "apm-7.15.0-transaction-000012" + ], + "apmEvents": [ + { + "name": "Metric: Service destination", + "kuery": "processor.event: \"metric\" AND metricset.name: \"service_destination\"", + "index": [ + "metrics-apm*", + "apm-*" + ], + "docCount": 4036, + "intervals": { + "1m": 18899 + } + }, + { + "name": "Metric: Service transaction (with summary field)", + "kuery": "processor.event: \"metric\" AND metricset.name: \"service_transaction\" AND transaction.duration.summary :* ", + "index": [ + "metrics-apm*", + "apm-*" + ], + "docCount": 1122, + "intervals": { + "1m": 33017 + } + }, + { + "name": "Metric: Transaction (with summary field)", + "kuery": "processor.event: \"metric\" AND metricset.name: \"transaction\" AND transaction.duration.summary :* ", + "index": [ + "metrics-apm*", + "apm-*" + ], + "docCount": 2873, + "intervals": { + "1m": 33017 + } + }, + { + "name": "Metric: Service transaction (without summary field)", + "kuery": "processor.event: \"metric\" AND metricset.name: \"service_transaction\" AND not transaction.duration.summary :* ", + "index": [ + "metrics-apm*", + "apm-*" + ], + "docCount": 0, + "intervals": {} + }, + { + "name": "Metric: Transaction (without summary field)", + "kuery": "processor.event: \"metric\" AND metricset.name: \"transaction\" AND not transaction.duration.summary :* ", + "index": [ + "metrics-apm*", + "apm-*" + ], + "docCount": 0, + "intervals": {} + }, + { + "name": "Metric: Span breakdown", + "kuery": "processor.event: \"metric\" AND metricset.name: \"span_breakdown\"", + "index": [ + "metrics-apm*", + "apm-*" + ], + "docCount": 6603, + "intervals": {} + }, + { + "name": "Metric: Service summary", + "kuery": "processor.event: \"metric\" AND metricset.name: \"service_summary\"", + "index": [ + "metrics-apm*", + "apm-*" + ], + "docCount": 1409, + "intervals": { + "1m": 1409 + } + }, + { + "name": "Event: Transaction", + "kuery": "processor.event: \"transaction\"", + "index": [ + "traces-apm*", + "apm-*" + ], + "docCount": 32941 + }, + { + "name": "Event: Span", + "kuery": "processor.event: \"span\"", + "index": [ + "traces-apm*", + "apm-*" + ], + "docCount": 39666 + }, + { + "name": "Event: Error", + "kuery": "processor.event: \"error\"", + "index": [ + "logs-apm*", + "apm-*" + ], + "docCount": 259 + } + ], + "params": { + "start": 1687212000000, + "end": 1687298400000 + }, + "fleetPackageInfo": { + "version": "8.8.0", + "isInstalled": "installed" + }, + "kibanaVersion": "8.8.0" +} \ No newline at end of file diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/e2e/power_user/diagnostics/apm_diagnostics_8.9.0_1685708312530.json b/x-pack/plugins/apm/ftr_e2e/cypress/e2e/power_user/diagnostics/apm_diagnostics_8.9.0_1685708312530.json deleted file mode 100644 index a526a34d03bd0c..00000000000000 --- a/x-pack/plugins/apm/ftr_e2e/cypress/e2e/power_user/diagnostics/apm_diagnostics_8.9.0_1685708312530.json +++ /dev/null @@ -1,2037 +0,0 @@ -{ - "created_at": "2023-06-02T12:18:32.301Z", - "elasticsearchVersion": "8.9.0-SNAPSHOT", - "esResponses": { - "fieldCaps": { - "fields": { - "service.name": { - "text": { - "type": "text", - "metadata_field": false, - "searchable": true, - "aggregatable": false, - "indices": [ - "traces-apm-default" - ] - }, - "keyword": { - "type": "keyword", - "metadata_field": false, - "searchable": true, - "aggregatable": true, - "indices": [ - ".ds-metrics-apm.app.synth-go-0-default-2023.06.02-000001", - ".ds-metrics-apm.app.synth-go-0-default-2023.06.02-000002", - ".ds-metrics-apm.app.synth-go-1-default-2023.06.02-000001", - ".ds-metrics-apm.app.synth-go-1-default-2023.06.02-000002", - ".ds-metrics-apm.app.synth-go-2-default-2023.06.02-000001", - ".ds-metrics-apm.app.synth-go-2-default-2023.06.02-000002", - ".ds-metrics-apm.internal-default-2023.06.02-000001", - ".ds-metrics-apm.internal-default-2023.06.02-000002", - ".ds-metrics-apm.service_destination.10m-default-2023.06.02-000001", - ".ds-metrics-apm.service_destination.10m-default-2023.06.02-000002", - ".ds-metrics-apm.service_destination.1m-default-2023.06.02-000001", - ".ds-metrics-apm.service_destination.1m-default-2023.06.02-000002", - ".ds-metrics-apm.service_destination.60m-default-2023.06.02-000001", - ".ds-metrics-apm.service_destination.60m-default-2023.06.02-000002", - ".ds-metrics-apm.service_summary.10m-default-2023.06.02-000001", - ".ds-metrics-apm.service_summary.10m-default-2023.06.02-000002", - ".ds-metrics-apm.service_summary.1m-default-2023.06.02-000001", - ".ds-metrics-apm.service_summary.1m-default-2023.06.02-000002", - ".ds-metrics-apm.service_summary.60m-default-2023.06.02-000001", - ".ds-metrics-apm.service_summary.60m-default-2023.06.02-000002", - ".ds-metrics-apm.service_transaction.10m-default-2023.06.02-000001", - ".ds-metrics-apm.service_transaction.10m-default-2023.06.02-000002", - ".ds-metrics-apm.service_transaction.1m-default-2023.06.02-000001", - ".ds-metrics-apm.service_transaction.1m-default-2023.06.02-000002", - ".ds-metrics-apm.service_transaction.60m-default-2023.06.02-000001", - ".ds-metrics-apm.service_transaction.60m-default-2023.06.02-000002", - ".ds-metrics-apm.transaction.10m-default-2023.06.02-000001", - ".ds-metrics-apm.transaction.10m-default-2023.06.02-000002", - ".ds-metrics-apm.transaction.1m-default-2023.06.02-000001", - ".ds-metrics-apm.transaction.1m-default-2023.06.02-000002", - ".ds-metrics-apm.transaction.60m-default-2023.06.02-000001", - ".ds-metrics-apm.transaction.60m-default-2023.06.02-000002" - ] - } - } - } - }, - "indices": { - ".ds-logs-apm.error-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-logs-apm.error-default-2023.06.02-000001", - "default_pipeline": "logs-default-pipeline" - } - }, - "data_stream": "logs-apm.error-default" - }, - ".ds-logs-apm.error-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-logs-apm.error-default-2023.06.02-000002", - "default_pipeline": "logs-apm.error-8.9.0-preview-1685091758" - } - }, - "data_stream": "logs-apm.error-default" - }, - ".ds-metrics-apm.app.synth-go-0-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.app.synth-go-0-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.app.synth-go-0-default" - }, - ".ds-metrics-apm.app.synth-go-0-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.app.synth-go-0-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.app-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.app.synth-go-0-default" - }, - ".ds-metrics-apm.app.synth-go-1-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.app.synth-go-1-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.app.synth-go-1-default" - }, - ".ds-metrics-apm.app.synth-go-1-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.app.synth-go-1-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.app-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.app.synth-go-1-default" - }, - ".ds-metrics-apm.app.synth-go-2-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.app.synth-go-2-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.app.synth-go-2-default" - }, - ".ds-metrics-apm.app.synth-go-2-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.app.synth-go-2-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.app-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.app.synth-go-2-default" - }, - ".ds-metrics-apm.internal-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.internal-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.internal-default" - }, - ".ds-metrics-apm.internal-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.internal-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.internal-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.internal-default" - }, - ".ds-metrics-apm.service_destination.10m-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_destination.10m-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.service_destination.10m-default" - }, - ".ds-metrics-apm.service_destination.10m-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_destination.10m-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.service_destination.10m-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.service_destination.10m-default" - }, - ".ds-metrics-apm.service_destination.1m-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_destination.1m-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.service_destination.1m-default" - }, - ".ds-metrics-apm.service_destination.1m-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_destination.1m-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.service_destination.1m-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.service_destination.1m-default" - }, - ".ds-metrics-apm.service_destination.60m-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_destination.60m-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.service_destination.60m-default" - }, - ".ds-metrics-apm.service_destination.60m-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_destination.60m-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.service_destination.60m-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.service_destination.60m-default" - }, - ".ds-metrics-apm.service_summary.10m-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_summary.10m-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.service_summary.10m-default" - }, - ".ds-metrics-apm.service_summary.10m-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_summary.10m-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.service_summary.10m-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.service_summary.10m-default" - }, - ".ds-metrics-apm.service_summary.1m-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_summary.1m-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.service_summary.1m-default" - }, - ".ds-metrics-apm.service_summary.1m-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_summary.1m-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.service_summary.1m-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.service_summary.1m-default" - }, - ".ds-metrics-apm.service_summary.60m-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_summary.60m-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.service_summary.60m-default" - }, - ".ds-metrics-apm.service_summary.60m-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_summary.60m-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.service_summary.60m-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.service_summary.60m-default" - }, - ".ds-metrics-apm.service_transaction.10m-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_transaction.10m-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.service_transaction.10m-default" - }, - ".ds-metrics-apm.service_transaction.10m-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_transaction.10m-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.service_transaction.10m-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.service_transaction.10m-default" - }, - ".ds-metrics-apm.service_transaction.1m-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_transaction.1m-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.service_transaction.1m-default" - }, - ".ds-metrics-apm.service_transaction.1m-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_transaction.1m-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.service_transaction.1m-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.service_transaction.1m-default" - }, - ".ds-metrics-apm.service_transaction.60m-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_transaction.60m-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.service_transaction.60m-default" - }, - ".ds-metrics-apm.service_transaction.60m-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.service_transaction.60m-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.service_transaction.60m-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.service_transaction.60m-default" - }, - ".ds-metrics-apm.transaction.10m-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.transaction.10m-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.transaction.10m-default" - }, - ".ds-metrics-apm.transaction.10m-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.transaction.10m-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.transaction.10m-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.transaction.10m-default" - }, - ".ds-metrics-apm.transaction.1m-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.transaction.1m-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.transaction.1m-default" - }, - ".ds-metrics-apm.transaction.1m-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.transaction.1m-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.transaction.1m-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.transaction.1m-default" - }, - ".ds-metrics-apm.transaction.60m-default-2023.06.02-000001": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.transaction.60m-default-2023.06.02-000001" - } - }, - "data_stream": "metrics-apm.transaction.60m-default" - }, - ".ds-metrics-apm.transaction.60m-default-2023.06.02-000002": { - "settings": { - "index": { - "provided_name": ".ds-metrics-apm.transaction.60m-default-2023.06.02-000002", - "default_pipeline": "metrics-apm.transaction.60m-8.9.0-preview-1685091758" - } - }, - "data_stream": "metrics-apm.transaction.60m-default" - }, - "traces-apm-default": { - "settings": { - "index": { - "provided_name": "traces-apm-default" - } - } - } - }, - "ingestPipelines": { - "logs-apm.error-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.app-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.internal-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.service_destination.10m-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.service_destination.1m-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.service_destination.60m-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.service_summary.10m-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.service_summary.1m-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.service_summary.60m-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.service_transaction.10m-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.service_transaction.1m-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.service_transaction.60m-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.transaction.10m-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.transaction.1m-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - }, - "metrics-apm.transaction.60m-8.9.0-preview-1685091758": { - "processors": [ - { - "grok": { - "field": "observer.version", - "patterns": [ - "%{DIGITS:observer.version_major:int}.%{DIGITS:observer.version_minor:int}.%{DIGITS:observer.version_patch:int}(?:[-+].*)?" - ] - } - } - ] - } - }, - "existingIndexTemplates": [ - { - "name": "logs-apm.app", - "index_template": { - "index_patterns": [ - "logs-apm.app.*-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "logs-apm.app@package", - "logs-apm.app@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 150, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": false, - "allow_custom_routing": false - } - } - }, - { - "name": "logs-apm.error", - "index_template": { - "index_patterns": [ - "logs-apm.error-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "logs-apm.error@package", - "logs-apm.error@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": false, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.app", - "index_template": { - "index_patterns": [ - "metrics-apm.app.*-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.app@package", - "metrics-apm.app@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 150, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": false, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.internal", - "index_template": { - "index_patterns": [ - "metrics-apm.internal-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.internal@package", - "metrics-apm.internal@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": false, - "allow_custom_routing": false - } - } - }, - { - "name": "traces-apm.rum", - "index_template": { - "index_patterns": [ - "traces-apm.rum-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "traces-apm.rum@package", - "traces-apm.rum@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": false, - "allow_custom_routing": false - } - } - }, - { - "name": "traces-apm.sampled", - "index_template": { - "index_patterns": [ - "traces-apm.sampled-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "traces-apm.sampled@package", - "traces-apm.sampled@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": false, - "allow_custom_routing": false - } - } - }, - { - "name": "traces-apm", - "index_template": { - "index_patterns": [ - "traces-apm-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "traces-apm@package", - "traces-apm@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": false, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.service_destination.1m", - "index_template": { - "index_patterns": [ - "metrics-apm.service_destination.1m-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.service_destination.1m@package", - "metrics-apm.service_destination.1m@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": false, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.service_summary.1m", - "index_template": { - "index_patterns": [ - "metrics-apm.service_summary.1m-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.service_summary.1m@package", - "metrics-apm.service_summary.1m@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": false, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.service_transaction.1m", - "index_template": { - "index_patterns": [ - "metrics-apm.service_transaction.1m-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.service_transaction.1m@package", - "metrics-apm.service_transaction.1m@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": false, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.transaction.1m", - "index_template": { - "index_patterns": [ - "metrics-apm.transaction.1m-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.transaction.1m@package", - "metrics-apm.transaction.1m@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": false, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.service_destination.10m", - "index_template": { - "index_patterns": [ - "metrics-apm.service_destination.10m-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.service_destination.10m@package", - "metrics-apm.service_destination.10m@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": true, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.service_summary.10m", - "index_template": { - "index_patterns": [ - "metrics-apm.service_summary.10m-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.service_summary.10m@package", - "metrics-apm.service_summary.10m@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": true, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.service_transaction.10m", - "index_template": { - "index_patterns": [ - "metrics-apm.service_transaction.10m-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.service_transaction.10m@package", - "metrics-apm.service_transaction.10m@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": true, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.transaction.10m", - "index_template": { - "index_patterns": [ - "metrics-apm.transaction.10m-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.transaction.10m@package", - "metrics-apm.transaction.10m@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": true, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.service_destination.60m", - "index_template": { - "index_patterns": [ - "metrics-apm.service_destination.60m-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.service_destination.60m@package", - "metrics-apm.service_destination.60m@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": true, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.service_summary.60m", - "index_template": { - "index_patterns": [ - "metrics-apm.service_summary.60m-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.service_summary.60m@package", - "metrics-apm.service_summary.60m@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": true, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.service_transaction.60m", - "index_template": { - "index_patterns": [ - "metrics-apm.service_transaction.60m-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.service_transaction.60m@package", - "metrics-apm.service_transaction.60m@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": true, - "allow_custom_routing": false - } - } - }, - { - "name": "metrics-apm.transaction.60m", - "index_template": { - "index_patterns": [ - "metrics-apm.transaction.60m-*" - ], - "template": { - "settings": {}, - "mappings": { - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - } - } - }, - "composed_of": [ - "metrics-apm.transaction.60m@package", - "metrics-apm.transaction.60m@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "_meta": { - "package": { - "name": "apm" - }, - "managed_by": "fleet", - "managed": true - }, - "data_stream": { - "hidden": true, - "allow_custom_routing": false - } - } - } - ] - }, - "apmIndexTemplates": [ - { - "name": "logs-apm.app", - "exists": true, - "isNonStandard": false - }, - { - "name": "logs-apm.error", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.app", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.internal", - "exists": true, - "isNonStandard": false - }, - { - "name": "traces-apm.rum", - "exists": true, - "isNonStandard": false - }, - { - "name": "traces-apm.sampled", - "exists": true, - "isNonStandard": false - }, - { - "name": "traces-apm", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.service_destination.1m", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.service_summary.1m", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.service_transaction.1m", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.transaction.1m", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.service_destination.10m", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.service_summary.10m", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.service_transaction.10m", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.transaction.10m", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.service_destination.60m", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.service_summary.60m", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.service_transaction.60m", - "exists": true, - "isNonStandard": false - }, - { - "name": "metrics-apm.transaction.60m", - "exists": true, - "isNonStandard": false - } - ], - "invalidIndices": [ - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false, - "id": "logs-default-pipeline" - }, - "index": ".ds-logs-apm.error-default-2023.06.02-000001", - "dataStream": "logs-apm.error-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.app.synth-go-0-default-2023.06.02-000001", - "dataStream": "metrics-apm.app.synth-go-0-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.app.synth-go-1-default-2023.06.02-000001", - "dataStream": "metrics-apm.app.synth-go-1-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.app.synth-go-2-default-2023.06.02-000001", - "dataStream": "metrics-apm.app.synth-go-2-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.internal-default-2023.06.02-000001", - "dataStream": "metrics-apm.internal-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.service_destination.10m-default-2023.06.02-000001", - "dataStream": "metrics-apm.service_destination.10m-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.service_destination.1m-default-2023.06.02-000001", - "dataStream": "metrics-apm.service_destination.1m-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.service_destination.60m-default-2023.06.02-000001", - "dataStream": "metrics-apm.service_destination.60m-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.service_summary.10m-default-2023.06.02-000001", - "dataStream": "metrics-apm.service_summary.10m-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.service_summary.1m-default-2023.06.02-000001", - "dataStream": "metrics-apm.service_summary.1m-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.service_summary.60m-default-2023.06.02-000001", - "dataStream": "metrics-apm.service_summary.60m-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.service_transaction.10m-default-2023.06.02-000001", - "dataStream": "metrics-apm.service_transaction.10m-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.service_transaction.1m-default-2023.06.02-000001", - "dataStream": "metrics-apm.service_transaction.1m-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.service_transaction.60m-default-2023.06.02-000001", - "dataStream": "metrics-apm.service_transaction.60m-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.transaction.10m-default-2023.06.02-000001", - "dataStream": "metrics-apm.transaction.10m-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.transaction.1m-default-2023.06.02-000001", - "dataStream": "metrics-apm.transaction.1m-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": false - }, - "index": ".ds-metrics-apm.transaction.60m-default-2023.06.02-000001", - "dataStream": "metrics-apm.transaction.60m-default" - }, - { - "isValid": false, - "fieldMappings": { - "isValid": false, - "invalidType": "text" - }, - "ingestPipeline": { - "isValid": false - }, - "index": "traces-apm-default" - } - ], - "validIndices": [ - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "logs-apm.error-8.9.0-preview-1685091758" - }, - "index": ".ds-logs-apm.error-default-2023.06.02-000002", - "dataStream": "logs-apm.error-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.app-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.app.synth-go-0-default-2023.06.02-000002", - "dataStream": "metrics-apm.app.synth-go-0-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.app-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.app.synth-go-1-default-2023.06.02-000002", - "dataStream": "metrics-apm.app.synth-go-1-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.app-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.app.synth-go-2-default-2023.06.02-000002", - "dataStream": "metrics-apm.app.synth-go-2-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.internal-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.internal-default-2023.06.02-000002", - "dataStream": "metrics-apm.internal-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.service_destination.10m-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.service_destination.10m-default-2023.06.02-000002", - "dataStream": "metrics-apm.service_destination.10m-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.service_destination.1m-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.service_destination.1m-default-2023.06.02-000002", - "dataStream": "metrics-apm.service_destination.1m-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.service_destination.60m-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.service_destination.60m-default-2023.06.02-000002", - "dataStream": "metrics-apm.service_destination.60m-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.service_summary.10m-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.service_summary.10m-default-2023.06.02-000002", - "dataStream": "metrics-apm.service_summary.10m-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.service_summary.1m-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.service_summary.1m-default-2023.06.02-000002", - "dataStream": "metrics-apm.service_summary.1m-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.service_summary.60m-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.service_summary.60m-default-2023.06.02-000002", - "dataStream": "metrics-apm.service_summary.60m-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.service_transaction.10m-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.service_transaction.10m-default-2023.06.02-000002", - "dataStream": "metrics-apm.service_transaction.10m-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.service_transaction.1m-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.service_transaction.1m-default-2023.06.02-000002", - "dataStream": "metrics-apm.service_transaction.1m-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.service_transaction.60m-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.service_transaction.60m-default-2023.06.02-000002", - "dataStream": "metrics-apm.service_transaction.60m-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.transaction.10m-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.transaction.10m-default-2023.06.02-000002", - "dataStream": "metrics-apm.transaction.10m-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.transaction.1m-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.transaction.1m-default-2023.06.02-000002", - "dataStream": "metrics-apm.transaction.1m-default" - }, - { - "isValid": true, - "fieldMappings": { - "isValid": true - }, - "ingestPipeline": { - "isValid": true, - "id": "metrics-apm.transaction.60m-8.9.0-preview-1685091758" - }, - "index": ".ds-metrics-apm.transaction.60m-default-2023.06.02-000002", - "dataStream": "metrics-apm.transaction.60m-default" - } - ], - "indexTemplatesByIndexPattern": [ - { - "indexPattern": "logs-apm*", - "indexTemplates": [ - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "logs-apm.error-*" - ], - "templateName": "logs-apm.error" - }, - { - "isNonStandard": false, - "priority": 150, - "templateIndexPatterns": [ - "logs-apm.app.*-*" - ], - "templateName": "logs-apm.app" - }, - { - "isNonStandard": false, - "priority": 100, - "templateIndexPatterns": [ - "logs-*-*" - ], - "templateName": "logs" - } - ] - }, - { - "indexPattern": "apm-*", - "indexTemplates": [] - }, - { - "indexPattern": "metrics-apm*", - "indexTemplates": [ - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.service_transaction.60m-*" - ], - "templateName": "metrics-apm.service_transaction.60m" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.service_destination.10m-*" - ], - "templateName": "metrics-apm.service_destination.10m" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.transaction.1m-*" - ], - "templateName": "metrics-apm.transaction.1m" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.service_destination.1m-*" - ], - "templateName": "metrics-apm.service_destination.1m" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.service_transaction.10m-*" - ], - "templateName": "metrics-apm.service_transaction.10m" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.service_transaction.1m-*" - ], - "templateName": "metrics-apm.service_transaction.1m" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.transaction.60m-*" - ], - "templateName": "metrics-apm.transaction.60m" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.service_destination.60m-*" - ], - "templateName": "metrics-apm.service_destination.60m" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.service_summary.1m-*" - ], - "templateName": "metrics-apm.service_summary.1m" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.transaction.10m-*" - ], - "templateName": "metrics-apm.transaction.10m" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.internal-*" - ], - "templateName": "metrics-apm.internal" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.service_summary.10m-*" - ], - "templateName": "metrics-apm.service_summary.10m" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "metrics-apm.service_summary.60m-*" - ], - "templateName": "metrics-apm.service_summary.60m" - }, - { - "isNonStandard": false, - "priority": 150, - "templateIndexPatterns": [ - "metrics-apm.app.*-*" - ], - "templateName": "metrics-apm.app" - }, - { - "isNonStandard": false, - "priority": 100, - "templateIndexPatterns": [ - "metrics-*-*" - ], - "templateName": "metrics" - } - ] - }, - { - "indexPattern": "traces-apm*", - "indexTemplates": [ - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "traces-apm-*" - ], - "templateName": "traces-apm" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "traces-apm.rum-*" - ], - "templateName": "traces-apm.rum" - }, - { - "isNonStandard": false, - "priority": 200, - "templateIndexPatterns": [ - "traces-apm.sampled-*" - ], - "templateName": "traces-apm.sampled" - } - ] - } - ], - "dataStreams": [ - { - "name": "logs-apm.error-default", - "template": "logs-apm.error" - }, - { - "name": "metrics-apm.app.synth-go-0-default", - "template": "metrics-apm.app" - }, - { - "name": "metrics-apm.app.synth-go-1-default", - "template": "metrics-apm.app" - }, - { - "name": "metrics-apm.app.synth-go-2-default", - "template": "metrics-apm.app" - }, - { - "name": "metrics-apm.internal-default", - "template": "metrics-apm.internal" - }, - { - "name": "metrics-apm.service_destination.10m-default", - "template": "metrics-apm.service_destination.10m" - }, - { - "name": "metrics-apm.service_destination.1m-default", - "template": "metrics-apm.service_destination.1m" - }, - { - "name": "metrics-apm.service_destination.60m-default", - "template": "metrics-apm.service_destination.60m" - }, - { - "name": "metrics-apm.service_summary.10m-default", - "template": "metrics-apm.service_summary.10m" - }, - { - "name": "metrics-apm.service_summary.1m-default", - "template": "metrics-apm.service_summary.1m" - }, - { - "name": "metrics-apm.service_summary.60m-default", - "template": "metrics-apm.service_summary.60m" - }, - { - "name": "metrics-apm.service_transaction.10m-default", - "template": "metrics-apm.service_transaction.10m" - }, - { - "name": "metrics-apm.service_transaction.1m-default", - "template": "metrics-apm.service_transaction.1m" - }, - { - "name": "metrics-apm.service_transaction.60m-default", - "template": "metrics-apm.service_transaction.60m" - }, - { - "name": "metrics-apm.transaction.10m-default", - "template": "metrics-apm.transaction.10m" - }, - { - "name": "metrics-apm.transaction.1m-default", - "template": "metrics-apm.transaction.1m" - }, - { - "name": "metrics-apm.transaction.60m-default", - "template": "metrics-apm.transaction.60m" - } - ], - "nonDataStreamIndices": [ - "traces-apm-default" - ], - "fleetPackageInfo": { - "isInstalled": true, - "version": "8.9.0-preview-1685091758" - }, - "kibanaVersion": "8.9.0" -} \ No newline at end of file diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/e2e/power_user/diagnostics/diagnostics.cy.ts b/x-pack/plugins/apm/ftr_e2e/cypress/e2e/power_user/diagnostics/diagnostics.cy.ts index 34f34b13917533..4b8da46571c03d 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/e2e/power_user/diagnostics/diagnostics.cy.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/e2e/power_user/diagnostics/diagnostics.cy.ts @@ -45,7 +45,7 @@ describe('Diagnostics', () => { cy.loginAs({ username: 'elastic', password: 'changeme' }); cy.visitKibana('/app/apm/diagnostics/import-export'); cy.get('#file-picker').selectFile( - './cypress/e2e/power_user/diagnostics/apm_diagnostics_8.9.0_1685708312530.json' + './cypress/e2e/power_user/diagnostics/apm-diagnostics-8.8.0-1687436214804.json' ); }); @@ -56,7 +56,7 @@ describe('Diagnostics', () => { }); it('can display summary tab', () => { - cy.get('[href="/app/apm/diagnostics"]').click(); + cy.get('[data-test-subj="summary-tab"]').click(); // integration package cy.get('[data-test-subj="integrationPackageStatus_Badge"]').should( @@ -66,7 +66,7 @@ describe('Diagnostics', () => { cy.get('[data-test-subj="integrationPackageStatus_Content"]').should( 'have.text', - 'APM integration (8.9.0-preview-1685091758)' + 'APM integration (8.8.0)' ); // data stream @@ -89,26 +89,35 @@ describe('Diagnostics', () => { }); it('can display index template tab', () => { - cy.get('[href="/app/apm/diagnostics/index-templates"]').click(); + cy.get('[data-test-subj="index-templates-tab"]').click(); cy.get('.euiTableRow').should('have.length', 19); }); it('can display data streams tab', () => { - cy.get('[href="/app/apm/diagnostics/data-streams"]').click(); - cy.get('.euiTableRow').should('have.length', 17); + cy.get('[data-test-subj="data-streams-tab"]').click(); + cy.get('.euiTableRow').should('have.length', 8); }); it('can display indices tab', () => { - cy.get('[href="/app/apm/diagnostics/indices"]').click(); + cy.get('[data-test-subj="indices-tab"]').click(); cy.get('[data-test-subj="indicedWithProblems"] .euiTableRow').should( 'have.length', - 18 + 138 ); cy.get('[data-test-subj="indicedWithoutProblems"] .euiTableRow').should( 'have.length', - 17 + 27 + ); + }); + + it('can display documents tab', () => { + cy.get('[data-test-subj="documents-tab"]').click(); + + cy.get('[data-test-subj="documents-table"] .euiTableRow').should( + 'have.length', + 10 ); }); }); diff --git a/x-pack/plugins/apm/kibana.jsonc b/x-pack/plugins/apm/kibana.jsonc index 0be1b3f631d3bd..ac33a0ee0b844b 100644 --- a/x-pack/plugins/apm/kibana.jsonc +++ b/x-pack/plugins/apm/kibana.jsonc @@ -25,7 +25,6 @@ "share", "unifiedSearch", "dataViews", - "advancedSettings", "lens", "maps", "uiActions" @@ -36,6 +35,7 @@ "cases", "charts", "cloud", + "discover", "fleet", "fieldFormats", "home", @@ -48,6 +48,7 @@ "licenseManagement" ], "requiredBundles": [ + "advancedSettings", "fleet", "kibanaReact", "kibanaUtils", diff --git a/x-pack/plugins/apm/public/components/alerting/ui_components/chart_preview/index.tsx b/x-pack/plugins/apm/public/components/alerting/ui_components/chart_preview/index.tsx index 083b52280deffc..fb7ec291dae2bf 100644 --- a/x-pack/plugins/apm/public/components/alerting/ui_components/chart_preview/index.tsx +++ b/x-pack/plugins/apm/public/components/alerting/ui_components/chart_preview/index.tsx @@ -17,7 +17,7 @@ import { ScaleType, Settings, TickFormatter, - TooltipProps, + Tooltip, niceTimeFormatter, } from '@elastic/charts'; import { EuiSpacer } from '@elastic/eui'; @@ -57,6 +57,7 @@ export function ChartPreview({ }: ChartPreviewProps) { const theme = useTheme(); const thresholdOpacity = 0.3; + const DEFAULT_DATE_FORMAT = 'Y-MM-DD HH:mm:ss'; const style = { fill: theme.eui.euiColorVis2, @@ -68,17 +69,6 @@ export function ChartPreview({ opacity: thresholdOpacity, }; - const DEFAULT_DATE_FORMAT = 'Y-MM-DD HH:mm:ss'; - - const tooltipProps: TooltipProps = { - headerFormatter: ({ value }) => { - const dateFormat = - (uiSettings && uiSettings.get(UI_SETTINGS.DATE_FORMAT)) || - DEFAULT_DATE_FORMAT; - return moment(value).format(dateFormat); - }, - }; - const barSeries = useMemo(() => { return series.flatMap((serie) => serie.data.map((point) => ({ ...point, groupBy: serie.name })) @@ -126,8 +116,16 @@ export function ChartPreview({ }} data-test-subj="ChartPreview" > + { + const dateFormat = + (uiSettings && uiSettings.get(UI_SETTINGS.DATE_FORMAT)) || + DEFAULT_DATE_FORMAT; + return moment(value).format(dateFormat); + }} + /> ().services; + const [sortField, setSortField] = useState('name'); + const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc'); + const { + query: { rangeFrom, rangeTo }, + } = useApmParams('/diagnostics/documents'); + + const items = diagnosticsBundle?.apmEvents ?? []; + const columns: Array> = [ + { + name: 'Name', + field: 'name', + width: '40%', + }, + { + name: 'Doc count', + field: 'docCount', + render: (_, { docCount }) => asInteger(docCount), + sortable: true, + }, + { + name: '1m', + field: 'intervals.1m', + render: (_, { intervals }) => { + const interval = intervals?.['1m']; + return interval ? asInteger(interval) : '-'; + }, + }, + { + name: '10m', + field: 'intervals.10m', + render: (_, { intervals }) => { + const interval = intervals?.['10m']; + return interval ? asInteger(interval) : '-'; + }, + }, + { + name: '60m', + field: 'intervals.60m', + render: (_, { intervals }) => { + const interval = intervals?.['60m']; + return interval ? asInteger(interval) : '-'; + }, + }, + { + name: 'Actions', + actions: [ + { + name: 'View', + description: 'View in Discover', + type: 'icon', + icon: 'discoverApp', + onClick: async (item) => { + await discover?.locator?.navigate({ + query: { + language: 'kuery', + query: item.kuery, + }, + dataViewId: APM_STATIC_DATA_VIEW_ID, + timeRange: + rangeTo && rangeFrom + ? { + to: rangeTo, + from: rangeFrom, + } + : undefined, + }); + }, + }, + ], + }, + ]; + + return ( + <> + {isImported && diagnosticsBundle ? ( + <> + + From: {new Date(diagnosticsBundle.params.start).toISOString()} + + + To: {new Date(diagnosticsBundle.params.end).toISOString()} + + + Filter: {diagnosticsBundle?.params.kuery ?? Empty} + + + + ) : ( + + )} + + { + if (sort) { + setSortField(sort.field); + setSortDirection(sort.direction); + } + }} + /> + + ); +} diff --git a/x-pack/plugins/apm/public/components/app/diagnostics/context/diagnostics_context.tsx b/x-pack/plugins/apm/public/components/app/diagnostics/context/diagnostics_context.tsx index cfaf72c94f6310..2292071d68642d 100644 --- a/x-pack/plugins/apm/public/components/app/diagnostics/context/diagnostics_context.tsx +++ b/x-pack/plugins/apm/public/components/app/diagnostics/context/diagnostics_context.tsx @@ -6,6 +6,8 @@ */ import React, { useMemo, useState } from 'react'; +import { useApmParams } from '../../../../hooks/use_apm_params'; +import { useTimeRange } from '../../../../hooks/use_time_range'; import { APIReturnType } from '../../../../services/rest/create_call_apm_api'; import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; @@ -29,9 +31,25 @@ export function DiagnosticsContextProvider({ }: { children: React.ReactChild; }) { - const { data, status, refetch } = useFetcher((callApmApi) => { - return callApmApi(`GET /internal/apm/diagnostics`); - }, []); + const { + query: { kuery, rangeFrom, rangeTo }, + } = useApmParams('/diagnostics/*'); + + const { start, end } = useTimeRange({ rangeFrom, rangeTo, optional: true }); + const { data, status, refetch } = useFetcher( + (callApmApi) => { + return callApmApi(`GET /internal/apm/diagnostics`, { + params: { + query: { + start, + end, + kuery, + }, + }, + }); + }, + [start, end, kuery] + ); const [importedDiagnosticsBundle, setImportedDiagnosticsBundle] = useState< DiagnosticsBundle | undefined diff --git a/x-pack/plugins/apm/public/components/app/diagnostics/data_stream_tab.tsx b/x-pack/plugins/apm/public/components/app/diagnostics/data_stream_tab.tsx index da9861831aafd2..09713b6ce75a01 100644 --- a/x-pack/plugins/apm/public/components/app/diagnostics/data_stream_tab.tsx +++ b/x-pack/plugins/apm/public/components/app/diagnostics/data_stream_tab.tsx @@ -63,7 +63,6 @@ function DataStreamsTable({ data }: { data?: DiagnosticsBundle }) { return ( } title="Import diagnostics report" - description="Import a diagnostics report in order to view the results in the UI" + description={ + isImported + ? 'Diagnostics report was imported' + : `Import a diagnostics report in order to view the results in the UI` + } footer={
{isImported ? ( @@ -131,6 +135,7 @@ function ImportCard() { setImportError(true); } } catch (e) { + setImportError(true); console.error( `Could not parse file ${file.name}. ${e.message}` ); diff --git a/x-pack/plugins/apm/public/components/app/diagnostics/index.tsx b/x-pack/plugins/apm/public/components/app/diagnostics/index.tsx index 40a107e1b3b2ee..62b93ccddab369 100644 --- a/x-pack/plugins/apm/public/components/app/diagnostics/index.tsx +++ b/x-pack/plugins/apm/public/components/app/diagnostics/index.tsx @@ -8,7 +8,9 @@ import { i18n } from '@kbn/i18n'; import { Outlet } from '@kbn/typed-react-router-config'; import React from 'react'; +import * as t from 'io-ts'; import { EuiButton, EuiCallOut, EuiIcon } from '@elastic/eui'; +import { useApmParams } from '../../../hooks/use_apm_params'; import { useApmRouter } from '../../../hooks/use_apm_router'; import { useApmRoutePath } from '../../../hooks/use_apm_route_path'; import { DiagnosticsSummary } from './summary_tab'; @@ -26,6 +28,21 @@ import { useDiagnosticsContext } from './context/use_diagnostics'; import { getIndexTemplateStatus } from './summary_tab/index_templates_status'; import { getDataStreamTabStatus } from './summary_tab/data_streams_status'; import { getIndicesTabStatus } from './summary_tab/indicies_status'; +import { DiagnosticsApmDocuments } from './apm_documents_tab'; + +const params = t.type({ + query: t.intersection([ + t.type({ + rangeFrom: t.string, + rangeTo: t.string, + }), + t.partial({ + refreshPaused: t.union([t.literal('true'), t.literal('false')]), + refreshInterval: t.string, + kuery: t.string, + }), + ]), +}); export const diagnosticsRoute = { '/diagnostics': { @@ -36,24 +53,35 @@ export const diagnosticsRoute = { ), + params, children: { '/diagnostics': { element: , + params, }, '/diagnostics/index-pattern-settings': { element: , + params, }, '/diagnostics/index-templates': { element: , + params, }, '/diagnostics/data-streams': { element: , + params, }, '/diagnostics/indices': { element: , + params, + }, + '/diagnostics/documents': { + element: , + params, }, '/diagnostics/import-export': { element: , + params, }, }, }, @@ -63,6 +91,7 @@ function DiagnosticsTemplate({ children }: { children: React.ReactChild }) { const routePath = useApmRoutePath(); const router = useApmRouter(); const { diagnosticsBundle } = useDiagnosticsContext(); + const { query } = useApmParams('/diagnostics/*'); return ( , tabs: [ { - href: router.link('/diagnostics'), + 'data-test-subj': 'summary-tab', + href: router.link('/diagnostics', { query }), label: i18n.translate('xpack.apm.diagnostics.tab.summary', { defaultMessage: 'Summary', }), isSelected: routePath === '/diagnostics', }, { + 'data-test-subj': 'index-pattern-tab', prepend: !getIndexPatternTabStatus(diagnosticsBundle) && ( ), - href: router.link('/diagnostics/index-pattern-settings'), + href: router.link('/diagnostics/index-pattern-settings', { query }), label: i18n.translate( 'xpack.apm.diagnostics.tab.index_pattern_settings', { @@ -96,37 +127,49 @@ function DiagnosticsTemplate({ children }: { children: React.ReactChild }) { isSelected: routePath === '/diagnostics/index-pattern-settings', }, { + 'data-test-subj': 'index-templates-tab', prepend: !getIndexTemplateStatus(diagnosticsBundle) && ( ), - href: router.link('/diagnostics/index-templates'), + href: router.link('/diagnostics/index-templates', { query }), label: i18n.translate('xpack.apm.diagnostics.tab.index_templates', { defaultMessage: 'Index templates', }), isSelected: routePath === '/diagnostics/index-templates', }, { + 'data-test-subj': 'data-streams-tab', prepend: !getDataStreamTabStatus(diagnosticsBundle) && ( ), - href: router.link('/diagnostics/data-streams'), + href: router.link('/diagnostics/data-streams', { query }), label: i18n.translate('xpack.apm.diagnostics.tab.datastreams', { defaultMessage: 'Data streams', }), isSelected: routePath === '/diagnostics/data-streams', }, { + 'data-test-subj': 'indices-tab', prepend: !getIndicesTabStatus(diagnosticsBundle) && ( ), - href: router.link('/diagnostics/indices'), + href: router.link('/diagnostics/indices', { query }), label: i18n.translate('xpack.apm.diagnostics.tab.indices', { defaultMessage: 'Indices', }), isSelected: routePath === '/diagnostics/indices', }, { - href: router.link('/diagnostics/import-export'), + 'data-test-subj': 'documents-tab', + href: router.link('/diagnostics/documents', { query }), + label: i18n.translate('xpack.apm.diagnostics.tab.apmEvents', { + defaultMessage: 'Documents', + }), + isSelected: routePath === '/diagnostics/documents', + }, + { + 'data-test-subj': 'import-export-tab', + href: router.link('/diagnostics/import-export', { query }), label: i18n.translate('xpack.apm.diagnostics.tab.import_export', { defaultMessage: 'Import/Export', }), diff --git a/x-pack/plugins/apm/public/components/app/diagnostics/summary_tab/data_streams_status.tsx b/x-pack/plugins/apm/public/components/app/diagnostics/summary_tab/data_streams_status.tsx index f11eea3082cffd..60add5d3aebdec 100644 --- a/x-pack/plugins/apm/public/components/app/diagnostics/summary_tab/data_streams_status.tsx +++ b/x-pack/plugins/apm/public/components/app/diagnostics/summary_tab/data_streams_status.tsx @@ -7,6 +7,7 @@ import React from 'react'; import { EuiLink } from '@elastic/eui'; +import { useApmParams } from '../../../../hooks/use_apm_params'; import { APIReturnType } from '../../../../services/rest/create_call_apm_api'; import { useApmRouter } from '../../../../hooks/use_apm_router'; import { FETCH_STATUS } from '../../../../hooks/use_fetcher'; @@ -19,6 +20,7 @@ type DiagnosticsBundle = APIReturnType<'GET /internal/apm/diagnostics'>; export function DataStreamsStatus() { const { diagnosticsBundle, status } = useDiagnosticsContext(); const router = useApmRouter(); + const { query } = useApmParams('/diagnostics/*'); const isLoading = status === FETCH_STATUS.LOADING; const tabStatus = getDataStreamTabStatus(diagnosticsBundle); @@ -31,7 +33,7 @@ export function DataStreamsStatus() { Data streams See details diff --git a/x-pack/plugins/apm/public/components/app/diagnostics/summary_tab/index_templates_status.tsx b/x-pack/plugins/apm/public/components/app/diagnostics/summary_tab/index_templates_status.tsx index 8bec094db9414c..94fda44bf955c7 100644 --- a/x-pack/plugins/apm/public/components/app/diagnostics/summary_tab/index_templates_status.tsx +++ b/x-pack/plugins/apm/public/components/app/diagnostics/summary_tab/index_templates_status.tsx @@ -7,6 +7,7 @@ import React from 'react'; import { EuiLink } from '@elastic/eui'; import { FETCH_STATUS } from '@kbn/observability-shared-plugin/public'; +import { useApmParams } from '../../../../hooks/use_apm_params'; import { APIReturnType } from '../../../../services/rest/create_call_apm_api'; import { useApmRouter } from '../../../../hooks/use_apm_router'; import { useDiagnosticsContext } from '../context/use_diagnostics'; @@ -16,6 +17,7 @@ type DiagnosticsBundle = APIReturnType<'GET /internal/apm/diagnostics'>; export function IndexTemplatesStatus() { const router = useApmRouter(); + const { query } = useApmParams('/diagnostics/*'); const { diagnosticsBundle, status } = useDiagnosticsContext(); const isLoading = status === FETCH_STATUS.LOADING; const tabStatus = getIndexTemplateStatus(diagnosticsBundle); @@ -29,7 +31,7 @@ export function IndexTemplatesStatus() { Index templates See details diff --git a/x-pack/plugins/apm/public/components/app/diagnostics/summary_tab/indicies_status.tsx b/x-pack/plugins/apm/public/components/app/diagnostics/summary_tab/indicies_status.tsx index 02ecbe174241d3..84c4958e23847f 100644 --- a/x-pack/plugins/apm/public/components/app/diagnostics/summary_tab/indicies_status.tsx +++ b/x-pack/plugins/apm/public/components/app/diagnostics/summary_tab/indicies_status.tsx @@ -7,6 +7,7 @@ import React from 'react'; import { EuiLink } from '@elastic/eui'; +import { useApmParams } from '../../../../hooks/use_apm_params'; import { FETCH_STATUS } from '../../../../hooks/use_fetcher'; import { APIReturnType } from '../../../../services/rest/create_call_apm_api'; import { useApmRouter } from '../../../../hooks/use_apm_router'; @@ -17,6 +18,7 @@ type DiagnosticsBundle = APIReturnType<'GET /internal/apm/diagnostics'>; export function FieldMappingStatus() { const router = useApmRouter(); + const { query } = useApmParams('/diagnostics/*'); const { diagnosticsBundle, status } = useDiagnosticsContext(); const isLoading = status === FETCH_STATUS.LOADING; const isOk = getIndicesTabStatus(diagnosticsBundle); @@ -30,7 +32,7 @@ export function FieldMappingStatus() { Indices See details diff --git a/x-pack/plugins/apm/public/components/app/error_group_details/distribution/index.tsx b/x-pack/plugins/apm/public/components/app/error_group_details/distribution/index.tsx index 0e3abf248df158..76e79311ec805c 100644 --- a/x-pack/plugins/apm/public/components/app/error_group_details/distribution/index.tsx +++ b/x-pack/plugins/apm/public/components/app/error_group_details/distribution/index.tsx @@ -13,6 +13,7 @@ import { Position, ScaleType, Settings, + Tooltip, } from '@elastic/charts'; import { EuiTitle } from '@elastic/eui'; import { @@ -94,9 +95,9 @@ export function ErrorDistribution({ distribution, title, fetchStatus }: Props) { id="errorDistribution" > + {storageTimeSeries.map((serie) => ( diff --git a/x-pack/plugins/apm/public/components/shared/charts/breakdown_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/breakdown_chart/index.tsx index 20db0b4c836367..9bc03a17d8f1fb 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/breakdown_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/breakdown_chart/index.tsx @@ -18,6 +18,7 @@ import { Settings, TickFormatter, XYBrushEvent, + Tooltip, } from '@elastic/charts'; import { EuiIcon } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -106,8 +107,8 @@ export function BreakdownChart({ id={id} > + onBrushEnd({ x: (event as XYBrushEvent).x, history }) } diff --git a/x-pack/plugins/apm/public/components/shared/charts/duration_distribution_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/duration_distribution_chart/index.tsx index 224b668caaaaf8..e519f04ab58c18 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/duration_distribution_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/duration_distribution_chart/index.tsx @@ -74,13 +74,6 @@ const getAnnotationsStyle = (color = 'gray'): LineAnnotationStyle => ({ stroke: color, opacity: 0.8, }, - details: { - fontSize: 8, - fontFamily: 'Arial', - fontStyle: 'normal', - fill: color, - padding: 0, - }, }); // With a log based y axis in combination with the `CURVE_STEP_AFTER` style, diff --git a/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/index.tsx index 134b2070809315..da4b732da224e2 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/index.tsx @@ -17,6 +17,7 @@ import { TooltipInfo, TooltipProps, TooltipType, + Tooltip, } from '@elastic/charts'; import { EuiPanel, EuiTitle } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -123,10 +124,10 @@ export function InstancesLatencyDistributionChart({ id="instancesLatencyDistribution" > + + {type && type === 'bar' ? ( <> - { - const formattedValue = xFormatter(value); - if (max === value) { - return ( - <> - - - - - {END_ZONE_LABEL} - - - {formattedValue} - - ); - } - return formattedValue; - }, + { + const formattedValue = xFormatter(value); + if (max === value) { + return ( + <> + + + + + {END_ZONE_LABEL} + + + {formattedValue} + + ); + } + return formattedValue; }} + /> + onBrushEnd({ x: (event as XYBrushEvent).x, history }) } diff --git a/x-pack/plugins/apm/public/components/shared/critical_path_flamegraph/index.tsx b/x-pack/plugins/apm/public/components/shared/critical_path_flamegraph/index.tsx index c2ef496aa5cde3..641313ecd7d10e 100644 --- a/x-pack/plugins/apm/public/components/shared/critical_path_flamegraph/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/critical_path_flamegraph/index.tsx @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { Chart, Datum, Flame, Settings } from '@elastic/charts'; +import { Chart, Datum, Flame, Settings, Tooltip } from '@elastic/charts'; import { EuiFlexGroup, EuiFlexItem, @@ -117,6 +117,25 @@ export function CriticalPathFlamegraph( flameGraph && ( + { + const valueIndex = tooltipProps.values[0] + .valueAccessor as number; + const operationId = flameGraph.operationId[valueIndex]; + const operationMetadata = criticalPath?.metadata[operationId]; + const countInclusive = flameGraph.viewModel.value[valueIndex]; + const countExclusive = flameGraph.countExclusive[valueIndex]; + + return ( + + ); + }} + /> { - const valueIndex = tooltipProps.values[0] - .valueAccessor as number; - const operationId = flameGraph.operationId[valueIndex]; - const operationMetadata = - criticalPath?.metadata[operationId]; - const countInclusive = - flameGraph.viewModel.value[valueIndex]; - const countExclusive = - flameGraph.countExclusive[valueIndex]; - - return ( - - ); - }, - }} onElementClick={(elements) => {}} /> { return ( + route.path === '/diagnostics' || route.path === '/services' || route.path === '/traces' || route.path === '/service-map' || diff --git a/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_storybook.tsx b/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_storybook.tsx index fd7f3afc9718ad..21c9a32ed38876 100644 --- a/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_storybook.tsx +++ b/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_storybook.tsx @@ -15,6 +15,7 @@ import { RouterProvider } from '@kbn/typed-react-router-config'; import { createMemoryHistory } from 'history'; import { merge } from 'lodash'; import React, { ReactNode } from 'react'; +import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; import { Observable, of } from 'rxjs'; import { apmRouter } from '../../components/routing/apm_route_config'; import { createCallApmApi } from '../../services/rest/create_call_apm_api'; @@ -144,20 +145,22 @@ export function MockApmPluginStorybook({ }); return ( - - - - - - - - {children} - - - - - - - + + + + + + + + + {children} + + + + + + + + ); } diff --git a/x-pack/plugins/apm/public/context/time_range_metadata/time_range_metadata_context.tsx b/x-pack/plugins/apm/public/context/time_range_metadata/time_range_metadata_context.tsx index c2e7550a1ed013..23727ceeaba884 100644 --- a/x-pack/plugins/apm/public/context/time_range_metadata/time_range_metadata_context.tsx +++ b/x-pack/plugins/apm/public/context/time_range_metadata/time_range_metadata_context.tsx @@ -32,7 +32,7 @@ export function ApmTimeRangeMetadataContextProvider({ const { query } = useApmParams('/*'); - const kuery = 'kuery' in query ? query.kuery : ''; + const kuery = 'kuery' in query && query.kuery ? query.kuery : ''; const range = 'rangeFrom' in query && 'rangeTo' in query diff --git a/x-pack/plugins/apm/public/plugin.ts b/x-pack/plugins/apm/public/plugin.ts index 20f5d5a9b46456..0941eda344188f 100644 --- a/x-pack/plugins/apm/public/plugin.ts +++ b/x-pack/plugins/apm/public/plugin.ts @@ -61,6 +61,10 @@ import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import { UiActionsStart, UiActionsSetup } from '@kbn/ui-actions-plugin/public'; import { ObservabilityTriggerId } from '@kbn/observability-shared-plugin/common'; import { LicenseManagementUIPluginSetup } from '@kbn/license-management-plugin/public'; +import { + DiscoverStart, + DiscoverSetup, +} from '@kbn/discover-plugin/public/plugin'; import { registerApmRuleTypes } from './components/alerting/rule_types/register_apm_rule_types'; import { getApmEnrollmentFlyoutData, @@ -80,6 +84,7 @@ export type ApmPluginStart = void; export interface ApmPluginSetupDeps { alerting?: AlertingPluginPublicSetup; data: DataPublicPluginSetup; + discover?: DiscoverSetup; exploratoryView: ExploratoryViewPublicSetup; unifiedSearch: UnifiedSearchPublicPluginStart; features: FeaturesPluginSetup; @@ -98,6 +103,7 @@ export interface ApmPluginStartDeps { alerting?: AlertingPluginPublicStart; charts?: ChartsPluginStart; data: DataPublicPluginStart; + discover?: DiscoverStart; embeddable: EmbeddableStart; home: void; inspector: InspectorPluginStart; diff --git a/x-pack/plugins/apm/scripts/diagnostics_bundle.js b/x-pack/plugins/apm/scripts/create_diagnostics_bundle.js similarity index 88% rename from x-pack/plugins/apm/scripts/diagnostics_bundle.js rename to x-pack/plugins/apm/scripts/create_diagnostics_bundle.js index 66dc16c79709ff..f9579e40e5cf69 100644 --- a/x-pack/plugins/apm/scripts/diagnostics_bundle.js +++ b/x-pack/plugins/apm/scripts/create_diagnostics_bundle.js @@ -6,4 +6,4 @@ */ require('@kbn/babel-register').install(); -require('./diagnostics_bundle/main'); +require('./diagnostics_bundle/cli'); diff --git a/x-pack/plugins/apm/scripts/diagnostics_bundle/cli.ts b/x-pack/plugins/apm/scripts/diagnostics_bundle/cli.ts new file mode 100644 index 00000000000000..30fb927bf51620 --- /dev/null +++ b/x-pack/plugins/apm/scripts/diagnostics_bundle/cli.ts @@ -0,0 +1,86 @@ +/* + * 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. + */ + +/* eslint-disable no-console */ + +import datemath from '@elastic/datemath'; +import yargs from 'yargs'; +import { initDiagnosticsBundle } from './diagnostics_bundle'; + +const { argv } = yargs(process.argv.slice(2)) + .option('esHost', { + demandOption: true, + type: 'string', + description: 'Elasticsearch host name', + }) + .option('kbHost', { + demandOption: true, + type: 'string', + description: 'Kibana host name', + }) + .option('username', { + demandOption: true, + type: 'string', + description: 'Kibana host name', + }) + .option('password', { + demandOption: true, + type: 'string', + description: 'Kibana host name', + }) + .option('rangeFrom', { + type: 'string', + description: 'Time-range start', + coerce: convertDate, + }) + .option('rangeTo', { + type: 'string', + description: 'Time range end', + coerce: convertDate, + }) + .option('kuery', { + type: 'string', + description: 'KQL query to filter documents by', + }) + .help(); + +const { esHost, kbHost, password, username, kuery } = argv; +const rangeFrom = argv.rangeFrom as unknown as number; +const rangeTo = argv.rangeTo as unknown as number; + +if (rangeFrom) { + console.log(`rangeFrom = ${new Date(rangeFrom).toISOString()}`); +} + +if (rangeTo) { + console.log(`rangeTo = ${new Date(rangeTo).toISOString()}`); +} + +initDiagnosticsBundle({ + esHost, + kbHost, + password, + username, + start: rangeFrom, + end: rangeTo, + kuery, +}) + .then((res) => { + console.log(res); + }) + .catch((err) => { + console.log(err); + }); + +function convertDate(dateString: string): number { + const parsed = datemath.parse(dateString); + if (parsed && parsed.isValid()) { + return parsed.valueOf(); + } + + throw new Error(`Incorrect argument: ${dateString}`); +} diff --git a/x-pack/plugins/apm/scripts/diagnostics_bundle/diagnostics_bundle.ts b/x-pack/plugins/apm/scripts/diagnostics_bundle/diagnostics_bundle.ts index f0e9d4efe2c8cd..af1de9a98988ec 100644 --- a/x-pack/plugins/apm/scripts/diagnostics_bundle/diagnostics_bundle.ts +++ b/x-pack/plugins/apm/scripts/diagnostics_bundle/diagnostics_bundle.ts @@ -21,11 +21,17 @@ export async function initDiagnosticsBundle({ kbHost, username, password, + start, + end, + kuery, }: { esHost: string; kbHost: string; username: string; password: string; + start: number | undefined; + end: number | undefined; + kuery: string | undefined; }) { const esClient = new Client({ node: esHost, auth: { username, password } }); @@ -34,7 +40,13 @@ export async function initDiagnosticsBundle({ auth: { username, password }, }); const apmIndices = await getApmIndices(kibanaClient); - const bundle = await getDiagnosticsBundle(esClient, apmIndices); + const bundle = await getDiagnosticsBundle({ + esClient, + apmIndices, + start, + end, + kuery, + }); const fleetPackageInfo = await getFleetPackageInfo(kibanaClient); const kibanaVersion = await getKibanaVersion(kibanaClient); diff --git a/x-pack/plugins/apm/scripts/diagnostics_bundle/main.ts b/x-pack/plugins/apm/scripts/diagnostics_bundle/main.ts deleted file mode 100644 index f2b418f373f512..00000000000000 --- a/x-pack/plugins/apm/scripts/diagnostics_bundle/main.ts +++ /dev/null @@ -1,44 +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. - */ - -/* eslint-disable no-console */ - -import yargs from 'yargs'; -import { initDiagnosticsBundle } from './diagnostics_bundle'; - -const { argv } = yargs(process.argv.slice(2)) - .option('esHost', { - demandOption: true, - type: 'string', - description: 'Elasticsearch host name', - }) - .option('kbHost', { - demandOption: true, - type: 'string', - description: 'Kibana host name', - }) - .option('username', { - demandOption: true, - type: 'string', - description: 'Kibana host name', - }) - .option('password', { - demandOption: true, - type: 'string', - description: 'Kibana host name', - }) - .help(); - -const { esHost, kbHost, password, username } = argv; - -initDiagnosticsBundle({ esHost, kbHost, password, username }) - .then((res) => { - console.log(res); - }) - .catch((err) => { - console.log(err); - }); diff --git a/x-pack/plugins/apm/server/lib/service_group_query_with_overflow.ts b/x-pack/plugins/apm/server/lib/service_group_query_with_overflow.ts new file mode 100644 index 00000000000000..f0f1009b7d036c --- /dev/null +++ b/x-pack/plugins/apm/server/lib/service_group_query_with_overflow.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 { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { kqlQuery, termQuery } from '@kbn/observability-plugin/server'; +import { SERVICE_NAME } from '../../common/es_fields/apm'; +import { ServiceGroup } from '../../common/service_groups'; + +export function serviceGroupWithOverflowQuery( + serviceGroup?: ServiceGroup | null +): QueryDslQueryContainer[] { + if (serviceGroup) { + const serviceGroupQuery = kqlQuery(serviceGroup?.kuery); + const otherBucketQuery = termQuery(SERVICE_NAME, '_other'); + + return [ + { + bool: { + should: [ + { + bool: { + filter: serviceGroupQuery, + }, + }, + { + bool: { + filter: otherBucketQuery, + }, + }, + ], + }, + }, + ]; + } + return []; +} diff --git a/x-pack/plugins/apm/server/routes/alerts/rule_types/transaction_duration/register_transaction_duration_rule_type.test.ts b/x-pack/plugins/apm/server/routes/alerts/rule_types/transaction_duration/register_transaction_duration_rule_type.test.ts index f3993dfed7009f..0d006c1368df11 100644 --- a/x-pack/plugins/apm/server/routes/alerts/rule_types/transaction_duration/register_transaction_duration_rule_type.test.ts +++ b/x-pack/plugins/apm/server/routes/alerts/rule_types/transaction_duration/register_transaction_duration_rule_type.test.ts @@ -64,7 +64,7 @@ describe('registerTransactionDurationRuleType', () => { environment: 'development', interval: `5 mins`, reason: - 'Avg. latency is 5,500 ms in the last 5 mins for service: opbeans-java, env: development, type: request. Alert when > 3,000 ms.', + 'Avg. latency is 5.5 s in the last 5 mins for service: opbeans-java, env: development, type: request. Alert when > 3.0 s.', transactionType: 'request', serviceName: 'opbeans-java', threshold: 3000, @@ -133,7 +133,7 @@ describe('registerTransactionDurationRuleType', () => { environment: 'development', interval: `5 mins`, reason: - 'Avg. latency is 5,500 ms in the last 5 mins for service: opbeans-java, env: development, type: request, name: GET /products. Alert when > 3,000 ms.', + 'Avg. latency is 5.5 s in the last 5 mins for service: opbeans-java, env: development, type: request, name: GET /products. Alert when > 3.0 s.', transactionType: 'request', serviceName: 'opbeans-java', threshold: 3000, @@ -199,7 +199,7 @@ describe('registerTransactionDurationRuleType', () => { environment: 'development', interval: `5 mins`, reason: - 'Avg. latency is 5,500 ms in the last 5 mins for service: opbeans-java, env: development, type: request. Alert when > 3,000 ms.', + 'Avg. latency is 5.5 s in the last 5 mins for service: opbeans-java, env: development, type: request. Alert when > 3.0 s.', transactionType: 'request', serviceName: 'opbeans-java', threshold: 3000, @@ -273,7 +273,7 @@ describe('registerTransactionDurationRuleType', () => { environment: 'Not defined', interval: `5 mins`, reason: - 'Avg. latency is 5,500 ms in the last 5 mins for service: opbeans-java, env: Not defined, type: request, name: tx-java. Alert when > 3,000 ms.', + 'Avg. latency is 5.5 s in the last 5 mins for service: opbeans-java, env: Not defined, type: request, name: tx-java. Alert when > 3.0 s.', transactionType: 'request', serviceName: 'opbeans-java', threshold: 3000, diff --git a/x-pack/plugins/apm/server/routes/diagnostics/bundle/get_apm_events.ts b/x-pack/plugins/apm/server/routes/diagnostics/bundle/get_apm_events.ts new file mode 100644 index 00000000000000..42de61050abd9f --- /dev/null +++ b/x-pack/plugins/apm/server/routes/diagnostics/bundle/get_apm_events.ts @@ -0,0 +1,220 @@ +/* + * 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 { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { kqlQuery, rangeQuery } from '@kbn/observability-plugin/server'; +import { + PROCESSOR_EVENT, + METRICSET_NAME, + METRICSET_INTERVAL, + TRANSACTION_DURATION_SUMMARY, +} from '../../../../common/es_fields/apm'; +import { ApmIndicesConfig } from '../../settings/apm_indices/get_apm_indices'; +import { getTypedSearch, TypedSearch } from '../create_typed_es_client'; +import { getApmIndexPatterns } from './get_indices'; + +export interface ApmEvent { + name: string; + kuery: string; + index: string[]; + docCount: number; + intervals?: Record; +} + +export async function getApmEvents({ + esClient, + apmIndices, + start, + end, + kuery, +}: { + esClient: ElasticsearchClient; + apmIndices: ApmIndicesConfig; + start: number; + end: number; + kuery?: string; +}): Promise { + const typedSearch = getTypedSearch(esClient); + + const commonProps = { start, end, typedSearch }; + const items = await Promise.all([ + getEventWithMetricsetInterval({ + ...commonProps, + name: 'Metric: Service destination', + index: getApmIndexPatterns([apmIndices.metric]), + kuery: mergeKueries( + `${PROCESSOR_EVENT}: "metric" AND ${METRICSET_NAME}: "service_destination"`, + kuery + ), + }), + getEventWithMetricsetInterval({ + ...commonProps, + name: 'Metric: Service transaction (with summary field)', + index: getApmIndexPatterns([apmIndices.metric]), + kuery: mergeKueries( + `${PROCESSOR_EVENT}: "metric" AND ${METRICSET_NAME}: "service_transaction" AND ${TRANSACTION_DURATION_SUMMARY} :* `, + kuery + ), + }), + getEventWithMetricsetInterval({ + ...commonProps, + name: 'Metric: Transaction (with summary field)', + index: getApmIndexPatterns([apmIndices.metric]), + kuery: mergeKueries( + `${PROCESSOR_EVENT}: "metric" AND ${METRICSET_NAME}: "transaction" AND ${TRANSACTION_DURATION_SUMMARY} :* `, + kuery + ), + }), + getEventWithMetricsetInterval({ + ...commonProps, + name: 'Metric: Service transaction (without summary field)', + index: getApmIndexPatterns([apmIndices.metric]), + kuery: mergeKueries( + `${PROCESSOR_EVENT}: "metric" AND ${METRICSET_NAME}: "service_transaction" AND not ${TRANSACTION_DURATION_SUMMARY} :* `, + kuery + ), + }), + getEventWithMetricsetInterval({ + ...commonProps, + name: 'Metric: Transaction (without summary field)', + index: getApmIndexPatterns([apmIndices.metric]), + kuery: mergeKueries( + `${PROCESSOR_EVENT}: "metric" AND ${METRICSET_NAME}: "transaction" AND not ${TRANSACTION_DURATION_SUMMARY} :* `, + kuery + ), + }), + getEventWithMetricsetInterval({ + ...commonProps, + name: 'Metric: Span breakdown', + index: getApmIndexPatterns([apmIndices.metric]), + kuery: mergeKueries( + `${PROCESSOR_EVENT}: "metric" AND ${METRICSET_NAME}: "span_breakdown"`, + kuery + ), + }), + getEventWithMetricsetInterval({ + ...commonProps, + name: 'Metric: Service summary', + index: getApmIndexPatterns([apmIndices.metric]), + kuery: mergeKueries( + `${PROCESSOR_EVENT}: "metric" AND ${METRICSET_NAME}: "service_summary"`, + kuery + ), + }), + getEvent({ + ...commonProps, + name: 'Event: Transaction', + index: getApmIndexPatterns([apmIndices.transaction]), + kuery: mergeKueries(`${PROCESSOR_EVENT}: "transaction"`, kuery), + }), + getEvent({ + ...commonProps, + name: 'Event: Span', + index: getApmIndexPatterns([apmIndices.span]), + kuery: mergeKueries(`${PROCESSOR_EVENT}: "span"`, kuery), + }), + getEvent({ + ...commonProps, + name: 'Event: Error', + index: getApmIndexPatterns([apmIndices.error]), + kuery: mergeKueries(`${PROCESSOR_EVENT}: "error"`, kuery), + }), + ]); + + return items; +} + +async function getEventWithMetricsetInterval({ + name, + index, + start, + end, + kuery, + typedSearch, +}: { + name: string; + index: string[]; + start: number; + end: number; + kuery: string; + typedSearch: TypedSearch; +}) { + const res = await typedSearch({ + expand_wildcards: 'all', + track_total_hits: true, + index, + size: 0, + query: { + bool: { + filter: [...kqlQuery(kuery), ...rangeQuery(start, end)], + }, + }, + aggs: { + metricset_intervals: { + terms: { + size: 1000, + field: METRICSET_INTERVAL, + }, + }, + }, + }); + + return { + name, + kuery, + index, + docCount: res.hits.total.value, + intervals: res.aggregations?.metricset_intervals.buckets.reduce< + Record + >((acc, item) => { + acc[item.key] = item.doc_count; + return acc; + }, {}), + }; +} + +async function getEvent({ + name, + index, + start, + end, + kuery, + typedSearch, +}: { + name: string; + index: string[]; + start: number; + end: number; + kuery: string; + typedSearch: TypedSearch; +}) { + const res = await typedSearch({ + track_total_hits: true, + index, + size: 0, + query: { + bool: { + filter: [...kqlQuery(kuery), ...rangeQuery(start, end)], + }, + }, + }); + + return { + name, + kuery, + index, + docCount: res.hits.total.value, + }; +} + +function mergeKueries(fixedKuery: string, kuery?: string) { + if (!kuery) { + return fixedKuery; + } + + return `(${fixedKuery}) AND (${kuery})`; +} diff --git a/x-pack/plugins/apm/server/routes/diagnostics/create_typed_es_client.ts b/x-pack/plugins/apm/server/routes/diagnostics/create_typed_es_client.ts new file mode 100644 index 00000000000000..a834a2b236ef4e --- /dev/null +++ b/x-pack/plugins/apm/server/routes/diagnostics/create_typed_es_client.ts @@ -0,0 +1,25 @@ +/* + * 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 { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { ESSearchRequest, InferSearchResponseOf } from '@kbn/es-types'; + +type RequiredParams = ESSearchRequest & { + size: number; + track_total_hits: boolean | number; +}; + +export type TypedSearch = ReturnType; +export function getTypedSearch(esClient: ElasticsearchClient) { + async function search( + opts: TParams + ): Promise> { + return esClient.search(opts) as Promise; + } + + return search; +} diff --git a/x-pack/plugins/apm/server/routes/diagnostics/get_diagnostics_bundle.ts b/x-pack/plugins/apm/server/routes/diagnostics/get_diagnostics_bundle.ts index 32a06f067325d7..dd2fb3559c0f7f 100644 --- a/x-pack/plugins/apm/server/routes/diagnostics/get_diagnostics_bundle.ts +++ b/x-pack/plugins/apm/server/routes/diagnostics/get_diagnostics_bundle.ts @@ -17,11 +17,24 @@ import { getExistingApmIndexTemplates } from './bundle/get_existing_index_templa import { getFieldCaps } from './bundle/get_field_caps'; import { getIndicesAndIngestPipelines } from './bundle/get_indices'; import { getIndicesStates } from './bundle/get_indices_states'; +import { getApmEvents } from './bundle/get_apm_events'; -export async function getDiagnosticsBundle( - esClient: ElasticsearchClient, - apmIndices: ApmIndicesConfig -) { +const DEFEAULT_START = Date.now() - 60 * 5 * 1000; // 5 minutes +const DEFAULT_END = Date.now(); + +export async function getDiagnosticsBundle({ + esClient, + apmIndices, + start = DEFEAULT_START, + end = DEFAULT_END, + kuery, +}: { + esClient: ElasticsearchClient; + apmIndices: ApmIndicesConfig; + start: number | undefined; + end: number | undefined; + kuery: string | undefined; +}) { const apmIndexTemplateNames = getApmIndexTemplateNames(); const { indices, ingestPipelines } = await getIndicesAndIngestPipelines({ @@ -52,6 +65,14 @@ export async function getDiagnosticsBundle( ingestPipelines, }); + const apmEvents = await getApmEvents({ + esClient, + apmIndices, + start, + end, + kuery, + }); + return { created_at: new Date().toISOString(), elasticsearchVersion: await getElasticsearchVersion(esClient), @@ -70,6 +91,8 @@ export async function getDiagnosticsBundle( indexTemplatesByIndexPattern, dataStreams, nonDataStreamIndices, + apmEvents, + params: { start, end, kuery }, }; } diff --git a/x-pack/plugins/apm/server/routes/diagnostics/route.ts b/x-pack/plugins/apm/server/routes/diagnostics/route.ts index dbf0567d9c8f0a..c25a67581482e3 100644 --- a/x-pack/plugins/apm/server/routes/diagnostics/route.ts +++ b/x-pack/plugins/apm/server/routes/diagnostics/route.ts @@ -12,8 +12,11 @@ import { IndicesGetResponse, IngestGetPipelineResponse, } from '@elastic/elasticsearch/lib/api/types'; +import * as t from 'io-ts'; +import { isoToEpochRt } from '@kbn/io-ts-utils'; import { createApmServerRoute } from '../apm_routes/create_apm_server_route'; import { getApmIndices } from '../settings/apm_indices/get_apm_indices'; +import { ApmEvent } from './bundle/get_apm_events'; import { getDiagnosticsBundle } from './get_diagnostics_bundle'; import { getFleetPackageInfo } from './get_fleet_package_info'; @@ -33,8 +36,14 @@ export interface IndiciesItem { const getDiagnosticsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/diagnostics', - options: { tags: ['access:apm'] }, + params: t.partial({ + query: t.partial({ + kuery: t.string, + start: isoToEpochRt, + end: isoToEpochRt, + }), + }), handler: async ( resources ): Promise<{ @@ -55,6 +64,7 @@ const getDiagnosticsRoute = createApmServerRoute({ }; kibanaVersion: string; elasticsearchVersion: string; + apmEvents: ApmEvent[]; invalidIndices: IndiciesItem[]; validIndices: IndiciesItem[]; dataStreams: IndicesDataStream[]; @@ -68,7 +78,9 @@ const getDiagnosticsRoute = createApmServerRoute({ templateName: string; }>; }>; + params: { start: number; end: number; kuery?: string }; }> => { + const { start, end, kuery } = resources.params.query; const coreContext = await resources.context.core; const { asCurrentUser: esClient } = coreContext.elasticsearch.client; const apmIndices = await getApmIndices({ @@ -76,7 +88,14 @@ const getDiagnosticsRoute = createApmServerRoute({ config: resources.config, }); - const bundle = await getDiagnosticsBundle(esClient, apmIndices); + const bundle = await getDiagnosticsBundle({ + esClient, + apmIndices, + start, + end, + kuery, + }); + const fleetPackageInfo = await getFleetPackageInfo(resources); const kibanaVersion = resources.kibanaVersion; diff --git a/x-pack/plugins/apm/server/routes/services/get_services/get_service_alerts.ts b/x-pack/plugins/apm/server/routes/services/get_services/get_service_alerts.ts index f212172364f2e6..a8968f9bbb3904 100644 --- a/x-pack/plugins/apm/server/routes/services/get_services/get_service_alerts.ts +++ b/x-pack/plugins/apm/server/routes/services/get_services/get_service_alerts.ts @@ -24,8 +24,8 @@ import { SERVICE_NAME } from '../../../../common/es_fields/apm'; import { ServiceGroup } from '../../../../common/service_groups'; import { ApmAlertsClient } from '../../../lib/helpers/get_apm_alerts_client'; import { environmentQuery } from '../../../../common/utils/environment_query'; -import { serviceGroupQuery } from '../../../lib/service_group_query'; import { MAX_NUMBER_OF_SERVICES } from './get_services_items'; +import { serviceGroupWithOverflowQuery } from '../../../lib/service_group_query_with_overflow'; interface ServiceAggResponse { buckets: Array< @@ -69,7 +69,7 @@ export async function getServicesAlerts({ ...termQuery(ALERT_STATUS, ALERT_STATUS_ACTIVE), ...rangeQuery(start, end), ...kqlQuery(kuery), - ...serviceGroupQuery(serviceGroup), + ...serviceGroupWithOverflowQuery(serviceGroup), ...termQuery(SERVICE_NAME, serviceName), ...environmentQuery(environment), ], diff --git a/x-pack/plugins/apm/server/routes/services/get_services/get_service_transaction_stats.ts b/x-pack/plugins/apm/server/routes/services/get_services/get_service_transaction_stats.ts index 3cd6cfd2698db2..9557d130522a66 100644 --- a/x-pack/plugins/apm/server/routes/services/get_services/get_service_transaction_stats.ts +++ b/x-pack/plugins/apm/server/routes/services/get_services/get_service_transaction_stats.ts @@ -27,8 +27,8 @@ import { calculateFailedTransactionRate, getOutcomeAggregation, } from '../../../lib/helpers/transaction_error_rate'; -import { serviceGroupQuery } from '../../../lib/service_group_query'; import { maybe } from '../../../../common/utils/maybe'; +import { serviceGroupWithOverflowQuery } from '../../../lib/service_group_query_with_overflow'; interface AggregationParams { environment: string; @@ -102,7 +102,7 @@ export async function getServiceTransactionStats({ ...rangeQuery(start, end), ...environmentQuery(environment), ...kqlQuery(kuery), - ...serviceGroupQuery(serviceGroup), + ...serviceGroupWithOverflowQuery(serviceGroup), ], }, }, diff --git a/x-pack/plugins/apm/server/routes/services/get_services/get_services_without_transactions.ts b/x-pack/plugins/apm/server/routes/services/get_services/get_services_without_transactions.ts index 05af47e61e8ec5..0eedb8494f21bd 100644 --- a/x-pack/plugins/apm/server/routes/services/get_services/get_services_without_transactions.ts +++ b/x-pack/plugins/apm/server/routes/services/get_services/get_services_without_transactions.ts @@ -14,12 +14,12 @@ import { SERVICE_NAME, } from '../../../../common/es_fields/apm'; import { environmentQuery } from '../../../../common/utils/environment_query'; -import { serviceGroupQuery } from '../../../lib/service_group_query'; import { ServiceGroup } from '../../../../common/service_groups'; import { RandomSampler } from '../../../lib/helpers/get_random_sampler'; import { APMEventClient } from '../../../lib/helpers/create_es_client/create_apm_event_client'; import { ApmDocumentType } from '../../../../common/document_type'; import { RollupInterval } from '../../../../common/rollup'; +import { serviceGroupWithOverflowQuery } from '../../../lib/service_group_query_with_overflow'; export interface ServicesWithoutTransactionsResponse { services: Array<{ @@ -82,7 +82,7 @@ export async function getServicesWithoutTransactions({ ...rangeQuery(start, end), ...environmentQuery(environment), ...kqlQuery(kuery), - ...serviceGroupQuery(serviceGroup), + ...serviceGroupWithOverflowQuery(serviceGroup), ], }, }, diff --git a/x-pack/plugins/apm/tsconfig.json b/x-pack/plugins/apm/tsconfig.json index 260f6803881ad3..40526935236120 100644 --- a/x-pack/plugins/apm/tsconfig.json +++ b/x-pack/plugins/apm/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../../tsconfig.base.json", "compilerOptions": { - "outDir": "target/types", + "outDir": "target/types" }, "include": [ "../../../typings/**/*", @@ -13,7 +13,7 @@ "jest.config.js", // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 "public/**/*.json", - "server/**/*.json", + "server/**/*.json" ], "kbn_references": [ "@kbn/core", @@ -94,8 +94,7 @@ "@kbn/core-http-server", "@kbn/unified-field-list", "@kbn/slo-schema", + "@kbn/discover-plugin" ], - "exclude": [ - "target/**/*", - ] + "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.ts b/x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.tsx similarity index 91% rename from x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.ts rename to x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.tsx index 68ad770d0a8bf1..eea1561076ae46 100644 --- a/x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.ts +++ b/x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.tsx @@ -30,6 +30,7 @@ interface StartServiceArgs { export const createStartServicesMock = ({ license }: StartServiceArgs = {}): StartServices => { const licensingPluginMock = licensingMock.createStart(); + const triggersActionsUi = triggersActionsUiMock.createStart(); const services = { ...coreMock.createStart(), @@ -39,7 +40,11 @@ export const createStartServicesMock = ({ license }: StartServiceArgs = {}): Sta navigateToPrefilledEditor: jest.fn(), }, security: securityMock.createStart(), - triggersActionsUi: triggersActionsUiMock.createStart(), + triggersActionsUi: { + actionTypeRegistry: triggersActionsUi.actionTypeRegistry, + alertsTableConfigurationRegistry: triggersActionsUi.alertsTableConfigurationRegistry, + getAlertsStateTable: jest.fn().mockReturnValue(
), + }, spaces: spacesPluginMock.createStartContract(), licensing: license != null diff --git a/x-pack/plugins/cases/public/components/case_view/case_view_page.test.tsx b/x-pack/plugins/cases/public/components/case_view/case_view_page.test.tsx index 69a66653829bca..49af1aed3a075c 100644 --- a/x-pack/plugins/cases/public/components/case_view/case_view_page.test.tsx +++ b/x-pack/plugins/cases/public/components/case_view/case_view_page.test.tsx @@ -6,10 +6,8 @@ */ import React from 'react'; -import { act, waitFor, within, screen } from '@testing-library/react'; +import { waitFor, within, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { waitForEuiPopoverOpen } from '@elastic/eui/lib/test/rtl'; -import { ConnectorTypes } from '../../../common/api'; import type { AppMockRenderer } from '../../common/mock'; import { createAppMockRenderer } from '../../common/mock'; import '../../common/mock/match_media'; @@ -36,14 +34,13 @@ import { defaultUseFindCaseUserActions, } from './mocks'; import type { CaseViewPageProps } from './types'; -import { userProfiles } from '../../containers/user_profiles/api.mock'; import { licensingMock } from '@kbn/licensing-plugin/public/mocks'; import { CASE_VIEW_PAGE_TABS } from '../../../common/types'; import { getCaseConnectorsMockResponse } from '../../common/mock/connectors'; import { useInfiniteFindCaseUserActions } from '../../containers/use_infinite_find_case_user_actions'; import { useGetCaseUserActionsStats } from '../../containers/use_get_case_user_actions_stats'; - -const mockSetTitle = jest.fn(); +import { createQueryWithMarkup } from '../../common/test_utils'; +import { useCasesFeatures } from '../../common/use_cases_features'; jest.mock('../../containers/use_get_action_license'); jest.mock('../../containers/use_update_case'); @@ -58,27 +55,14 @@ jest.mock('../../containers/use_post_push_to_service'); jest.mock('../../containers/use_get_case_connectors'); jest.mock('../../containers/use_get_case_users'); jest.mock('../../containers/user_profiles/use_bulk_get_user_profiles'); +jest.mock('../../common/use_cases_features'); jest.mock('../user_actions/timestamp', () => ({ UserActionTimestamp: () => <>, })); jest.mock('../../common/navigation/hooks'); jest.mock('../../common/hooks'); jest.mock('../connectors/resilient/api'); -jest.mock('../../common/lib/kibana', () => { - const originalModule = jest.requireActual('../../common/lib/kibana'); - return { - ...originalModule, - useKibana: () => { - const { services } = originalModule.useKibana(); - return { - services: { - ...services, - chrome: { setBreadcrumbs: jest.fn(), docTitle: { change: mockSetTitle } }, - }, - }; - }, - }; -}); +jest.mock('../../common/lib/kibana'); const useFetchCaseMock = useGetCase as jest.Mock; const useUrlParamsMock = useUrlParams as jest.Mock; @@ -93,12 +77,14 @@ const useGetCaseConnectorsMock = useGetCaseConnectors as jest.Mock; const useGetCaseMetricsMock = useGetCaseMetrics as jest.Mock; const useGetTagsMock = useGetTags as jest.Mock; const useGetCaseUsersMock = useGetCaseUsers as jest.Mock; +const useCasesFeaturesMock = useCasesFeatures as jest.Mock; const mockGetCase = (props: Partial = {}) => { const data = { ...defaultGetCase.data, ...props.data, }; + useFetchCaseMock.mockReturnValue({ ...defaultGetCase, ...props, @@ -127,11 +113,49 @@ const userActionsStats = { describe('CaseViewPage', () => { const updateCaseProperty = defaultUpdateCaseState.mutate; const pushCaseToExternalService = jest.fn(); - const data = caseProps.caseData; - let appMockRenderer: AppMockRenderer; const caseConnectors = getCaseConnectorsMockResponse(); const caseUsers = getCaseUsersMockResponse(); + let appMockRenderer: AppMockRenderer; + + // eslint-disable-next-line prefer-object-spread + const originalGetComputedStyle = Object.assign({}, window.getComputedStyle); + + const platinumLicense = licensingMock.createLicense({ + license: { type: 'platinum' }, + }); + + beforeAll(() => { + // The JSDOM implementation is too slow + // Especially for dropdowns that try to position themselves + // perf issue - https://github.com/jsdom/jsdom/issues/3234 + Object.defineProperty(window, 'getComputedStyle', { + value: (el: HTMLElement) => { + /** + * This is based on the jsdom implementation of getComputedStyle + * https://github.com/jsdom/jsdom/blob/9dae17bf0ad09042cfccd82e6a9d06d3a615d9f4/lib/jsdom/browser/Window.js#L779-L820 + * + * It is missing global style parsing and will only return styles applied directly to an element. + * Will not return styles that are global or from emotion + */ + const declaration = new CSSStyleDeclaration(); + const { style } = el; + + Array.prototype.forEach.call(style, (property: string) => { + declaration.setProperty( + property, + style.getPropertyValue(property), + style.getPropertyPriority(property) + ); + }); + + return declaration; + }, + configurable: true, + writable: true, + }); + }); + beforeEach(() => { jest.clearAllMocks(); mockGetCase(); @@ -150,54 +174,26 @@ describe('CaseViewPage', () => { }); useGetConnectorsMock.mockReturnValue({ data: connectorsMock, isLoading: false }); useGetTagsMock.mockReturnValue({ data: [], isLoading: false }); - const license = licensingMock.createLicense({ - license: { type: 'platinum' }, - }); useGetCaseUsersMock.mockReturnValue({ isLoading: false, data: caseUsers }); - - appMockRenderer = createAppMockRenderer({ license }); - }); - - it('should render CaseViewPage', async () => { - const damagedRaccoonUser = userProfiles[0].user; - const caseDataWithDamagedRaccoon = { - ...caseData, - createdBy: { - profileUid: userProfiles[0].uid, - username: damagedRaccoonUser.username, - fullName: damagedRaccoonUser.full_name, - email: damagedRaccoonUser.email, - }, - }; - - const license = licensingMock.createLicense({ - license: { type: 'platinum' }, + useCasesFeaturesMock.mockReturnValue({ + metricsFeatures: ['alerts.count'], + pushToServiceAuthorized: true, + caseAssignmentAuthorized: true, + isAlertsEnabled: true, + isSyncAlertsEnabled: true, }); - const props = { ...caseProps, caseData: caseDataWithDamagedRaccoon }; - appMockRenderer = createAppMockRenderer({ features: { metrics: ['alerts.count'] }, license }); - const result = appMockRenderer.render(); - - expect(result.getByTestId('header-page-title')).toHaveTextContent(data.title); - expect(result.getByTestId('case-view-status-dropdown')).toHaveTextContent('Open'); - expect(result.getByTestId('case-view-metrics-panel')).toBeInTheDocument(); - expect( - within(result.getByTestId('case-view-tag-list')).getByTestId('tag-coke') - ).toHaveTextContent(data.tags[0]); - - expect( - within(result.getByTestId('case-view-tag-list')).getByTestId('tag-pepsi') - ).toHaveTextContent(data.tags[1]); + appMockRenderer = createAppMockRenderer({ license: platinumLicense }); + }); - expect(result.getAllByText(data.createdBy.fullName!)[0]).toBeInTheDocument(); + afterAll(() => { + Object.defineProperty(window, 'getComputedStyle', originalGetComputedStyle); + }); - expect( - within(result.getByTestId('description')).getByTestId('scrollable-markdown') - ).toHaveTextContent(data.description); + it('shows the metrics section', async () => { + appMockRenderer.render(); - expect(result.getByTestId('case-view-status-action-button')).toHaveTextContent( - 'Mark in progress' - ); + expect(await screen.findByTestId('case-view-metrics-panel')).toBeInTheDocument(); }); it('should show closed indicators in header when case is closed', async () => { @@ -206,40 +202,9 @@ describe('CaseViewPage', () => { caseData: basicCaseClosed, })); - const result = appMockRenderer.render(); + appMockRenderer.render(); - expect(result.getByTestId('case-view-status-dropdown')).toHaveTextContent('Closed'); - }); - - it('should update status', async () => { - const result = appMockRenderer.render(); - - const dropdown = result.getByTestId('case-view-status-dropdown'); - userEvent.click(dropdown.querySelector('button')!); - await waitForEuiPopoverOpen(); - userEvent.click(result.getByTestId('case-view-status-dropdown-closed')); - const updateObject = updateCaseProperty.mock.calls[0][0]; - - await waitFor(() => { - expect(updateCaseProperty).toHaveBeenCalledTimes(1); - expect(updateObject.updateKey).toEqual('status'); - expect(updateObject.updateValue).toEqual('closed'); - }); - }); - - it('should update title', async () => { - const result = appMockRenderer.render(); - const newTitle = 'The new title'; - userEvent.click(result.getByTestId('editable-title-edit-icon')); - userEvent.clear(result.getByTestId('editable-title-input-field')); - userEvent.type(result.getByTestId('editable-title-input-field'), newTitle); - userEvent.click(result.getByTestId('editable-title-submit-btn')); - - const updateObject = updateCaseProperty.mock.calls[0][0]; - await waitFor(() => { - expect(updateObject.updateKey).toEqual('title'); - expect(updateObject.updateValue).toEqual(newTitle); - }); + expect(await screen.findByTestId('case-view-status-dropdown')).toHaveTextContent('Closed'); }); it('should push updates on button click', async () => { @@ -254,11 +219,12 @@ describe('CaseViewPage', () => { }, })); - const result = appMockRenderer.render(); + appMockRenderer.render(); - expect(result.getByTestId('push-to-external-service')).toBeInTheDocument(); + expect(await screen.findByTestId('edit-connectors')).toBeInTheDocument(); + expect(await screen.findByTestId('push-to-external-service')).toBeInTheDocument(); - userEvent.click(result.getByTestId('push-to-external-service')); + userEvent.click(screen.getByTestId('push-to-external-service')); await waitFor(() => { expect(pushCaseToExternalService).toHaveBeenCalled(); @@ -266,7 +232,7 @@ describe('CaseViewPage', () => { }); it('should disable the push button when connector is invalid', async () => { - const result = appMockRenderer.render( + appMockRenderer.render( { }} /> ); - await waitFor(() => { - expect(result.getByTestId('push-to-external-service')).toBeDisabled(); - }); - }); - it('should update connector', async () => { - const result = appMockRenderer.render( - - ); - - userEvent.click(result.getByTestId('connector-edit').querySelector('button')!); - userEvent.click(result.getByTestId('dropdown-connectors')); - await waitForEuiPopoverOpen(); - userEvent.click(result.getByTestId('dropdown-connector-resilient-2')); - - await waitFor(() => { - expect(result.getByTestId('connector-fields-resilient')).toBeInTheDocument(); - }); - - userEvent.click(result.getByTestId('edit-connectors-submit')); - - await waitFor(() => { - expect(updateCaseProperty).toHaveBeenCalledTimes(1); - const updateObject = updateCaseProperty.mock.calls[0][0]; - expect(updateObject.updateKey).toEqual('connector'); - expect(updateObject.updateValue).toEqual({ - id: 'resilient-2', - name: 'My Resilient connector', - type: ConnectorTypes.resilient, - fields: { - incidentTypes: null, - severityCode: null, - }, - }); - }); + expect(await screen.findByTestId('edit-connectors')).toBeInTheDocument(); + expect(await screen.findByTestId('push-to-external-service')).toBeDisabled(); }); it('should call onComponentInitialized on mount', async () => { @@ -337,22 +260,17 @@ describe('CaseViewPage', () => { const useFetchAlertData = jest.fn().mockReturnValue([true]); useGetCaseUserActionsStatsMock.mockReturnValue({ isLoading: true }); - const result = appMockRenderer.render( - - ); - await waitFor(() => { - expect(result.getByTestId('case-view-loading-content')).toBeInTheDocument(); - expect(result.queryByTestId('user-actions-list')).not.toBeInTheDocument(); - }); + appMockRenderer.render(); + + expect(await screen.findByTestId('case-view-loading-content')).toBeInTheDocument(); + expect(screen.queryByTestId('user-actions-list')).not.toBeInTheDocument(); }); it('should call show alert details with expected arguments', async () => { const showAlertDetails = jest.fn(); - const result = appMockRenderer.render( - - ); + appMockRenderer.render(); - userEvent.click(result.getAllByTestId('comment-action-show-alert-alert-action-id')[1]); + userEvent.click((await screen.findAllByTestId('comment-action-show-alert-alert-action-id'))[1]); await waitFor(() => { expect(showAlertDetails).toHaveBeenCalledWith('alert-id-1', 'alert-index-1'); @@ -360,23 +278,23 @@ describe('CaseViewPage', () => { }); it('should show the rule name', async () => { - const result = appMockRenderer.render(); + appMockRenderer.render(); - await waitFor(() => { - expect( - result - .getAllByTestId('user-action-alert-comment-create-action-alert-action-id')[1] - .querySelector('.euiCommentEvent__headerEvent') - ).toHaveTextContent('added an alert from Awesome rule'); - }); + expect( + ( + await screen.findAllByTestId('user-action-alert-comment-create-action-alert-action-id') + )[1].querySelector('.euiCommentEvent__headerEvent') + ).toHaveTextContent('added an alert from Awesome rule'); }); it('should update settings', async () => { - const result = appMockRenderer.render(); - userEvent.click(result.getByTestId('sync-alerts-switch')); - const updateObject = updateCaseProperty.mock.calls[0][0]; + appMockRenderer.render(); + + userEvent.click(await screen.findByTestId('sync-alerts-switch')); await waitFor(() => { + const updateObject = updateCaseProperty.mock.calls[0][0]; + expect(updateObject.updateKey).toEqual('settings'); expect(updateObject.updateValue).toEqual({ syncAlerts: false }); }); @@ -385,95 +303,57 @@ describe('CaseViewPage', () => { it('should show the correct connector name on the push button', async () => { useGetConnectorsMock.mockImplementation(() => ({ data: connectorsMock, isLoading: false })); - const result = appMockRenderer.render( + appMockRenderer.render( ); - await waitFor(() => { - expect(result.getByTestId('push-to-external-service')).toHaveTextContent( - 'My Resilient connector' - ); - }); + expect(await screen.findByTestId('edit-connectors')).toBeInTheDocument(); + expect(await screen.findByText('Update My Resilient connector incident')).toBeInTheDocument(); }); describe('Callouts', () => { + const errorText = + 'The connector used to send updates to the external service has been deleted or you do not have the appropriate licenseExternal link(opens in a new tab or window) to use it. To update cases in external systems, select a different connector or create a new one.'; + it('it shows the danger callout when a connector has been deleted', async () => { useGetConnectorsMock.mockImplementation(() => ({ data: [], isLoading: false })); - const result = appMockRenderer.render(); + appMockRenderer.render(); - expect(result.container.querySelector('.euiCallOut--danger')).toBeInTheDocument(); + expect(await screen.findByTestId('edit-connectors')).toBeInTheDocument(); + + const getByText = createQueryWithMarkup(screen.getByText); + expect(getByText(errorText)).toBeInTheDocument(); }); it('it does NOT shows the danger callout when connectors are loading', async () => { useGetConnectorsMock.mockImplementation(() => ({ data: [], isLoading: true })); - const result = appMockRenderer.render(); + appMockRenderer.render(); - expect(result.container.querySelector('.euiCallOut--danger')).not.toBeInTheDocument(); + expect(await screen.findByTestId('edit-connectors')).toBeInTheDocument(); + expect( + screen.queryByTestId('case-callout-a25a5b368b6409b179ef4b6c5168244f') + ).not.toBeInTheDocument(); }); }); - // FLAKY: https://github.com/elastic/kibana/issues/149775 - // FLAKY: https://github.com/elastic/kibana/issues/149776 - // FLAKY: https://github.com/elastic/kibana/issues/149777 - // FLAKY: https://github.com/elastic/kibana/issues/149778 - // FLAKY: https://github.com/elastic/kibana/issues/149779 - // FLAKY: https://github.com/elastic/kibana/issues/149780 - // FLAKY: https://github.com/elastic/kibana/issues/149781 - // FLAKY: https://github.com/elastic/kibana/issues/149782 - // FLAKY: https://github.com/elastic/kibana/issues/153335 - // FLAKY: https://github.com/elastic/kibana/issues/153336 - describe.skip('Tabs', () => { - jest.mock('@kbn/kibana-react-plugin/public', () => ({ - useKibana: () => ({ - services: { - application: { - capabilities: { - fakeCases: { - create_cases: true, - read_cases: true, - update_cases: true, - delete_cases: true, - push_cases: true, - }, - }, - }, - cases: { - ui: { - getCasesContext: () => null, - }, - helpers: { - getUICapabilities: () => ({ - all: true, - read: true, - create: true, - update: true, - delete: true, - push: true, - }), - }, - }, - notifications: { - toasts: { - addDanger: () => {}, - }, - }, - }, - }), - })); + describe('Tabs', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('renders tabs correctly', async () => { - const result = appMockRenderer.render(); - await act(async () => { - expect(result.getByTestId('case-view-tab-title-activity')).toBeTruthy(); - expect(result.getByTestId('case-view-tab-title-alerts')).toBeTruthy(); - expect(result.getByTestId('case-view-tab-title-files')).toBeTruthy(); - }); + appMockRenderer.render(); + + expect(await screen.findByRole('tablist')).toBeInTheDocument(); + + expect(await screen.findByTestId('case-view-tab-title-activity')).toBeInTheDocument(); + expect(await screen.findByTestId('case-view-tab-title-alerts')).toBeInTheDocument(); + expect(await screen.findByTestId('case-view-tab-title-files')).toBeInTheDocument(); }); it('renders the activity tab by default', async () => { - const result = appMockRenderer.render(); - await act(async () => { - expect(result.getByTestId('case-view-tab-content-activity')).toBeTruthy(); - }); + appMockRenderer.render(); + expect(await screen.findByTestId('case-view-tab-content-activity')).toBeInTheDocument(); }); it('renders the alerts tab when the query parameter tabId has alerts', async () => { @@ -482,10 +362,11 @@ describe('CaseViewPage', () => { tabId: CASE_VIEW_PAGE_TABS.ALERTS, }, }); - const result = appMockRenderer.render(); - await act(async () => { - expect(result.getByTestId('case-view-tab-content-alerts')).toBeTruthy(); - }); + + appMockRenderer.render(); + + expect(await screen.findByTestId('case-view-tab-content-alerts')).toBeInTheDocument(); + expect(await screen.findByTestId('alerts-table')).toBeInTheDocument(); }); it('renders the activity tab when the query parameter tabId has activity', async () => { @@ -494,10 +375,10 @@ describe('CaseViewPage', () => { tabId: CASE_VIEW_PAGE_TABS.ACTIVITY, }, }); - const result = appMockRenderer.render(); - await act(async () => { - expect(result.getByTestId('case-view-tab-content-activity')).toBeTruthy(); - }); + + appMockRenderer.render(); + + expect(await screen.findByTestId('case-view-tab-content-activity')).toBeInTheDocument(); }); it('renders the activity tab when the query parameter tabId has an unknown value', async () => { @@ -506,18 +387,20 @@ describe('CaseViewPage', () => { tabId: 'what-is-love', }, }); - const result = appMockRenderer.render(); - await act(async () => { - expect(result.getByTestId('case-view-tab-content-activity')).toBeTruthy(); - expect(result.queryByTestId('case-view-tab-content-alerts')).toBeFalsy(); - }); + + appMockRenderer.render(); + + expect(await screen.findByTestId('case-view-tab-content-activity')).toBeInTheDocument(); + expect(screen.queryByTestId('case-view-tab-content-alerts')).not.toBeInTheDocument(); }); it('navigates to the activity tab when the activity tab is clicked', async () => { const navigateToCaseViewMock = useCaseViewNavigationMock().navigateToCaseView; - const result = appMockRenderer.render(); - userEvent.click(result.getByTestId('case-view-tab-title-activity')); - await act(async () => { + appMockRenderer.render(); + + userEvent.click(await screen.findByTestId('case-view-tab-title-activity')); + + await waitFor(() => { expect(navigateToCaseViewMock).toHaveBeenCalledWith({ detailName: caseData.id, tabId: CASE_VIEW_PAGE_TABS.ACTIVITY, @@ -527,9 +410,11 @@ describe('CaseViewPage', () => { it('navigates to the alerts tab when the alerts tab is clicked', async () => { const navigateToCaseViewMock = useCaseViewNavigationMock().navigateToCaseView; - const result = appMockRenderer.render(); - userEvent.click(result.getByTestId('case-view-tab-title-alerts')); - await act(async () => { + appMockRenderer.render(); + + userEvent.click(await screen.findByTestId('case-view-tab-title-alerts')); + + await waitFor(async () => { expect(navigateToCaseViewMock).toHaveBeenCalledWith({ detailName: caseData.id, tabId: CASE_VIEW_PAGE_TABS.ALERTS, @@ -539,45 +424,45 @@ describe('CaseViewPage', () => { it('should display the alerts tab when the feature is enabled', async () => { appMockRenderer = createAppMockRenderer({ features: { alerts: { enabled: true } } }); - const result = appMockRenderer.render(); - await act(async () => { - expect(result.queryByTestId('case-view-tab-title-activity')).toBeTruthy(); - expect(result.queryByTestId('case-view-tab-title-alerts')).toBeTruthy(); - }); + appMockRenderer.render(); + + expect(await screen.findByTestId('case-view-tab-title-activity')).toBeInTheDocument(); + expect(await screen.findByTestId('case-view-tab-title-alerts')).toBeInTheDocument(); }); it('should not display the alerts tab when the feature is disabled', async () => { appMockRenderer = createAppMockRenderer({ features: { alerts: { enabled: false } } }); - const result = appMockRenderer.render(); - await act(async () => { - expect(result.queryByTestId('case-view-tab-title-activity')).toBeTruthy(); - expect(result.queryByTestId('case-view-tab-title-alerts')).toBeFalsy(); - }); + appMockRenderer.render(); + + expect(await screen.findByTestId('case-view-tab-title-activity')).toBeInTheDocument(); + expect(screen.queryByTestId('case-view-tab-title-alerts')).not.toBeInTheDocument(); }); it('should not show the experimental badge on the alerts table', async () => { - appMockRenderer = createAppMockRenderer({ features: { alerts: { isExperimental: false } } }); - const result = appMockRenderer.render(); - - await act(async () => { - expect(result.queryByTestId('case-view-alerts-table-experimental-badge')).toBeFalsy(); + appMockRenderer = createAppMockRenderer({ + features: { alerts: { isExperimental: false } }, }); + appMockRenderer.render(); + + expect( + screen.queryByTestId('case-view-alerts-table-experimental-badge') + ).not.toBeInTheDocument(); }); it('should show the experimental badge on the alerts table', async () => { appMockRenderer = createAppMockRenderer({ features: { alerts: { isExperimental: true } } }); - const result = appMockRenderer.render(); + appMockRenderer.render(); - await act(async () => { - expect(result.queryByTestId('case-view-alerts-table-experimental-badge')).toBeTruthy(); - }); + expect( + await screen.findByTestId('case-view-alerts-table-experimental-badge') + ).toBeInTheDocument(); }); describe('description', () => { it('renders the description correctly', async () => { appMockRenderer.render(); - const description = within(screen.getByTestId('description')); + const description = within(await screen.findByTestId('description')); expect(await description.findByText(caseData.description)).toBeInTheDocument(); }); @@ -591,37 +476,7 @@ describe('CaseViewPage', () => { appMockRenderer.render(); - await waitFor(() => { - expect(screen.getByTestId('description')).toBeInTheDocument(); - }); - }); - - it.skip('it should persist the draft of new comment while description is updated', async () => { - const newComment = 'another cool comment'; - - appMockRenderer.render(); - - userEvent.click(await screen.findByTestId('user-actions-filter-activity-button-all')); - - userEvent.type(await screen.findByTestId('euiMarkdownEditorTextArea'), newComment); - - userEvent.click(await screen.findByTestId('description-edit-icon')); - - userEvent.type(screen.getAllByTestId('euiMarkdownEditorTextArea')[0], 'Edited!'); - - userEvent.click(screen.getByTestId('editable-save-markdown')); - - expect(await screen.findByTestId('euiMarkdownEditorTextArea')).toHaveTextContent( - newComment - ); - }); - }); - - describe('breadcrumbs', () => { - it('should set the cases title', () => { - appMockRenderer.render(); - - expect(mockSetTitle).toHaveBeenCalledWith([caseProps.caseData.title, 'Cases', 'Test']); + expect(await screen.findByTestId('description')).toBeInTheDocument(); }); }); }); diff --git a/x-pack/plugins/cases/public/components/case_view/components/case_view_activity.tsx b/x-pack/plugins/cases/public/components/case_view/components/case_view_activity.tsx index 828753d0a410b2..e3b5395bbd03e5 100644 --- a/x-pack/plugins/cases/public/components/case_view/components/case_view_activity.tsx +++ b/x-pack/plugins/cases/public/components/case_view/components/case_view_activity.tsx @@ -262,7 +262,7 @@ export const CaseViewActivity = ({ ) : null} - + {caseAssignmentAuthorized ? ( <> diff --git a/x-pack/plugins/cases/public/components/edit_connector/index.tsx b/x-pack/plugins/cases/public/components/edit_connector/index.tsx index c0c98ceaa6db36..875e2ce6ffe234 100644 --- a/x-pack/plugins/cases/public/components/edit_connector/index.tsx +++ b/x-pack/plugins/cases/public/components/edit_connector/index.tsx @@ -90,7 +90,7 @@ export const EditConnector = React.memo( !needsToBePushed; return ( - + = ({ isDisabled, }) => { return ( - +

{SEVERITY_TITLE}

diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_package_policy_list.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_package_policy_list.ts index 6df792029084e9..d9b9c08a9bea16 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_package_policy_list.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_package_policy_list.ts @@ -21,24 +21,32 @@ interface PackagePolicyListData { const PACKAGE_POLICY_LIST_QUERY_KEY = ['packagePolicyList']; -export const usePackagePolicyList = (packageInfoName: string) => { +export const usePackagePolicyList = (packageInfoName: string, { enabled = true }) => { const { http } = useKibana().services; - const query = useQuery(PACKAGE_POLICY_LIST_QUERY_KEY, async () => { - try { - const res = await http.get(packagePolicyRouteService.getListPath(), { - query: { - perPage: SO_SEARCH_LIMIT, - page: 1, - kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.package.name:${packageInfoName}`, - }, - }); + const query = useQuery( + PACKAGE_POLICY_LIST_QUERY_KEY, + async () => { + try { + const res = await http.get(packagePolicyRouteService.getListPath(), { + query: { + perPage: SO_SEARCH_LIMIT, + page: 1, + kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.package.name:${packageInfoName}`, + }, + }); - return res; - } catch (error: any) { - throw new Error(`Failed to fetch package policy list: ${error.message}`); + return res; + } catch (error: any) { + throw new Error(`Failed to fetch package policy list: ${error.message}`); + } + }, + { + enabled, + refetchOnMount: false, + refetchOnWindowFocus: false, } - }); + ); return query; }; diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_credentials_form.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_credentials_form.tsx new file mode 100644 index 00000000000000..8110d1f92bbc8e --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_credentials_form.tsx @@ -0,0 +1,313 @@ +/* + * 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 { + EuiFieldText, + EuiFieldPassword, + EuiFormRow, + EuiLink, + EuiSpacer, + EuiText, + EuiTitle, + EuiSelect, + EuiCallOut, +} from '@elastic/eui'; +import type { NewPackagePolicy } from '@kbn/fleet-plugin/public'; +import { PackageInfo } from '@kbn/fleet-plugin/common'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { css } from '@emotion/react'; +import { i18n } from '@kbn/i18n'; +import { + getAwsCredentialsFormManualOptions, + AwsCredentialsType, + AwsOptions, + DEFAULT_MANUAL_AWS_CREDENTIALS_TYPE, +} from './get_aws_credentials_form_options'; +import { RadioGroup } from '../csp_boxed_radio_group'; +import { + getCspmCloudFormationDefaultValue, + getPosturePolicy, + NewPackagePolicyPostureInput, +} from '../utils'; +import { SetupFormat, useAwsCredentialsForm } from './hooks'; + +interface AWSSetupInfoContentProps { + integrationLink: string; +} + +const AWSSetupInfoContent = ({ integrationLink }: AWSSetupInfoContentProps) => { + return ( + <> + + +

+ +

+
+ + + + + + ), + }} + /> + + + ); +}; + +const getSetupFormatOptions = (): Array<{ id: SetupFormat; label: string }> => [ + { + id: 'cloud_formation', + label: 'CloudFormation', + }, + { + id: 'manual', + label: i18n.translate('xpack.csp.awsIntegration.setupFormatOptions.manual', { + defaultMessage: 'Manual', + }), + }, +]; + +export const getDefaultAwsVarsGroup = (packageInfo: PackageInfo): AwsCredentialsType => { + const hasCloudFormationTemplate = !!getCspmCloudFormationDefaultValue(packageInfo); + if (hasCloudFormationTemplate) { + return 'cloud_formation'; + } + + return DEFAULT_MANUAL_AWS_CREDENTIALS_TYPE; +}; + +interface Props { + newPolicy: NewPackagePolicy; + input: Extract; + updatePolicy(updatedPolicy: NewPackagePolicy): void; + packageInfo: PackageInfo; + onChange: any; + setIsValid: (isValid: boolean) => void; +} + +const CloudFormationSetup = ({ + hasCloudFormationTemplate, +}: { + hasCloudFormationTemplate: boolean; +}) => { + if (!hasCloudFormationTemplate) { + return ( + + + + ); + } + return ( + <> + +
    +
  1. + +
  2. +
  3. + +
  4. +
  5. + +
  6. +
+
+ + + + ); +}; + +const CLOUD_FORMATION_EXTERNAL_DOC_URL = + 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-howdoesitwork.html'; + +const Link = ({ children, url }: { children: React.ReactNode; url: string }) => ( + + {children} + +); + +const ReadDocumentation = ({ url }: { url: string }) => { + return ( + + + {i18n.translate('xpack.csp.awsIntegration.documentationLinkText', { + defaultMessage: 'documentation', + })} + + ), + }} + /> + + ); +}; + +export const AwsCredentialsForm = ({ + input, + newPolicy, + updatePolicy, + packageInfo, + onChange, + setIsValid, +}: Props) => { + const { + awsCredentialsType, + setupFormat, + group, + fields, + integrationLink, + hasCloudFormationTemplate, + onSetupFormatChange, + } = useAwsCredentialsForm({ + newPolicy, + input, + packageInfo, + onChange, + setIsValid, + updatePolicy, + }); + + return ( + <> + + + + + {setupFormat === 'cloud_formation' && ( + + )} + {setupFormat === 'manual' && ( + <> + { + updatePolicy( + getPosturePolicy(newPolicy, input.type, { + 'aws.credentials.type': { value: optionId }, + }) + ); + }} + /> + + {group.info} + + + + { + updatePolicy(getPosturePolicy(newPolicy, input.type, { [key]: { value } })); + }} + /> + + )} + + + ); +}; +const AwsCredentialTypeSelector = ({ + type, + onChange, +}: { + onChange(type: AwsCredentialsType): void; + type: AwsCredentialsType; +}) => ( + + { + onChange(optionElem.target.value as AwsCredentialsType); + }} + /> + +); + +const AwsInputVarFields = ({ + fields, + onChange, +}: { + fields: Array; + onChange: (key: string, value: string) => void; +}) => ( +
+ {fields.map((field) => ( + + <> + {field.type === 'password' && ( + onChange(field.id, event.target.value)} + /> + )} + {field.type === 'text' && ( + onChange(field.id, event.target.value)} + /> + )} + + + ))} +
+); diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/get_aws_credentials_form_options.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/get_aws_credentials_form_options.tsx new file mode 100644 index 00000000000000..4b245b9a992ac3 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/get_aws_credentials_form_options.tsx @@ -0,0 +1,176 @@ +/* + * 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 { EuiText } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { i18n } from '@kbn/i18n'; +import { NewPackagePolicyInput } from '@kbn/fleet-plugin/common'; + +const AssumeRoleDescription = ( +
+ + + +
+); + +const DirectAccessKeysDescription = ( +
+ + + +
+); + +const TemporaryKeysDescription = ( +
+ + + +
+); + +const SharedCredentialsDescription = ( +
+ + + +
+); + +const AWS_FIELD_LABEL = { + access_key_id: i18n.translate('xpack.csp.awsIntegration.accessKeyIdLabel', { + defaultMessage: 'Access Key ID', + }), + secret_access_key: i18n.translate('xpack.csp.awsIntegration.secretAccessKeyLabel', { + defaultMessage: 'Secret Access Key', + }), +}; + +export type AwsCredentialsType = + | 'assume_role' + | 'direct_access_keys' + | 'temporary_keys' + | 'shared_credentials' + | 'cloud_formation'; + +export type AwsCredentialsFields = Record; + +export interface AwsOptionValue { + label: string; + info: React.ReactNode; + fields: AwsCredentialsFields; +} + +export const getInputVarsFields = (input: NewPackagePolicyInput, fields: AwsCredentialsFields) => + Object.entries(input.streams[0].vars || {}) + .filter(([id]) => id in fields) + .map(([id, inputVar]) => { + const field = fields[id]; + return { + id, + label: field.label, + type: field.type || 'text', + value: inputVar.value, + } as const; + }); + +export type AwsOptions = Record; + +export const getAwsCredentialsFormManualOptions = (): Array<{ + value: AwsCredentialsType; + text: string; +}> => { + return Object.entries(getAwsCredentialsFormOptions()).map(([key, value]) => ({ + value: key as AwsCredentialsType, + text: value.label, + })); +}; + +export const DEFAULT_MANUAL_AWS_CREDENTIALS_TYPE = 'assume_role'; + +export const getAwsCredentialsFormOptions = (): AwsOptions => ({ + assume_role: { + label: i18n.translate('xpack.csp.awsIntegration.assumeRoleLabel', { + defaultMessage: 'Assume role', + }), + info: AssumeRoleDescription, + fields: { + role_arn: { + label: i18n.translate('xpack.csp.awsIntegration.roleArnLabel', { + defaultMessage: 'Role ARN', + }), + }, + }, + }, + direct_access_keys: { + label: i18n.translate('xpack.csp.awsIntegration.directAccessKeyLabel', { + defaultMessage: 'Direct access keys', + }), + info: DirectAccessKeysDescription, + fields: { + access_key_id: { label: AWS_FIELD_LABEL.access_key_id }, + secret_access_key: { label: AWS_FIELD_LABEL.secret_access_key, type: 'password' }, + }, + }, + temporary_keys: { + info: TemporaryKeysDescription, + label: i18n.translate('xpack.csp.awsIntegration.temporaryKeysLabel', { + defaultMessage: 'Temporary keys', + }), + fields: { + access_key_id: { label: AWS_FIELD_LABEL.access_key_id }, + secret_access_key: { label: AWS_FIELD_LABEL.secret_access_key, type: 'password' }, + session_token: { + label: i18n.translate('xpack.csp.awsIntegration.sessionTokenLabel', { + defaultMessage: 'Session Token', + }), + }, + }, + }, + shared_credentials: { + label: i18n.translate('xpack.csp.awsIntegration.sharedCredentialLabel', { + defaultMessage: 'Shared credentials', + }), + info: SharedCredentialsDescription, + fields: { + shared_credential_file: { + label: i18n.translate('xpack.csp.awsIntegration.sharedCredentialFileLabel', { + defaultMessage: 'Shared Credential File', + }), + }, + credential_profile_name: { + label: i18n.translate('xpack.csp.awsIntegration.credentialProfileNameLabel', { + defaultMessage: 'Credential Profile Name', + }), + }, + }, + }, + cloud_formation: { + label: 'CloudFormation', + info: [], + fields: {}, + }, +}); diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/hooks.ts b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/hooks.ts new file mode 100644 index 00000000000000..c689c99b52dfe0 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/hooks.ts @@ -0,0 +1,205 @@ +/* + * 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 { useEffect, useRef } from 'react'; +import { NewPackagePolicy, PackageInfo } from '@kbn/fleet-plugin/common'; +import { cspIntegrationDocsNavigation } from '../../../common/navigation/constants'; +import { + getCspmCloudFormationDefaultValue, + getPosturePolicy, + NewPackagePolicyPostureInput, +} from '../utils'; +import { + AwsCredentialsType, + DEFAULT_MANUAL_AWS_CREDENTIALS_TYPE, + getAwsCredentialsFormOptions, + getInputVarsFields, +} from './get_aws_credentials_form_options'; +import { CLOUDBEAT_AWS } from '../../../../common/constants'; +/** + * Update CloudFormation template and stack name in the Agent Policy + * based on the selected policy template + */ + +export type SetupFormat = 'cloud_formation' | 'manual'; + +const getSetupFormatFromInput = ( + input: Extract, + hasCloudFormationTemplate: boolean +): SetupFormat => { + const credentialsType = getAwsCredentialsType(input); + // CloudFormation is the default setup format if the integration has a CloudFormation template + if (!credentialsType && hasCloudFormationTemplate) { + return 'cloud_formation'; + } + if (credentialsType !== 'cloud_formation') { + return 'manual'; + } + + return 'cloud_formation'; +}; + +const getAwsCredentialsType = ( + input: Extract +): AwsCredentialsType | undefined => input.streams[0].vars?.['aws.credentials.type'].value; + +export const useAwsCredentialsForm = ({ + newPolicy, + input, + packageInfo, + onChange, + setIsValid, + updatePolicy, +}: { + newPolicy: NewPackagePolicy; + input: Extract; + packageInfo: PackageInfo; + onChange: (opts: any) => void; + setIsValid: (isValid: boolean) => void; + updatePolicy: (updatedPolicy: NewPackagePolicy) => void; +}) => { + // We only have a value for 'aws.credentials.type' once the form has mounted. + // On initial render we don't have that value so we fallback to the default option. + const awsCredentialsType: AwsCredentialsType = + getAwsCredentialsType(input) || DEFAULT_MANUAL_AWS_CREDENTIALS_TYPE; + + const options = getAwsCredentialsFormOptions(); + + const hasCloudFormationTemplate = !!getCspmCloudFormationDefaultValue(packageInfo); + + const setupFormat = getSetupFormatFromInput(input, hasCloudFormationTemplate); + + const group = options[awsCredentialsType]; + const fields = getInputVarsFields(input, group.fields); + const fieldsSnapshot = useRef({}); + const lastManualCredentialsType = useRef(undefined); + + useEffect(() => { + const isInvalid = setupFormat === 'cloud_formation' && !hasCloudFormationTemplate; + + setIsValid(!isInvalid); + + onChange({ + isValid: !isInvalid, + updatedPolicy: newPolicy, + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [setupFormat, input.type]); + + const integrationLink = cspIntegrationDocsNavigation.cspm.getStartedPath; + + useCloudFormationTemplate({ + packageInfo, + newPolicy, + updatePolicy, + setupFormat, + }); + + const onSetupFormatChange = (newSetupFormat: SetupFormat) => { + if (newSetupFormat === 'cloud_formation') { + // We need to store the current manual fields to restore them later + fieldsSnapshot.current = Object.fromEntries( + fields.map((field) => [field.id, { value: field.value }]) + ); + // We need to store the last manual credentials type to restore it later + lastManualCredentialsType.current = getAwsCredentialsType(input); + + updatePolicy( + getPosturePolicy(newPolicy, input.type, { + 'aws.credentials.type': { + value: 'cloud_formation', + type: 'text', + }, + // Clearing fields from previous setup format to prevent exposing credentials + // when switching from manual to cloud formation + ...Object.fromEntries(fields.map((field) => [field.id, { value: undefined }])), + }) + ); + } else { + updatePolicy( + getPosturePolicy(newPolicy, input.type, { + 'aws.credentials.type': { + // Restoring last manual credentials type or defaulting to the first option + value: lastManualCredentialsType.current || DEFAULT_MANUAL_AWS_CREDENTIALS_TYPE, + type: 'text', + }, + // Restoring fields from manual setup format if any + ...fieldsSnapshot.current, + }) + ); + } + }; + + return { + awsCredentialsType, + setupFormat, + group, + fields, + integrationLink, + hasCloudFormationTemplate, + onSetupFormatChange, + }; +}; + +const getAwsCloudFormationTemplate = (newPolicy: NewPackagePolicy) => { + const template: string | undefined = newPolicy?.inputs?.find((i) => i.type === CLOUDBEAT_AWS) + ?.config?.cloud_formation_template_url?.value; + + return template || undefined; +}; + +const updateCloudFormationPolicyTemplate = ( + newPolicy: NewPackagePolicy, + updatePolicy: (policy: NewPackagePolicy) => void, + templateUrl: string | undefined +) => { + updatePolicy?.({ + ...newPolicy, + inputs: newPolicy.inputs.map((input) => { + if (input.type === CLOUDBEAT_AWS) { + return { + ...input, + config: { cloud_formation_template_url: { value: templateUrl } }, + }; + } + return input; + }), + }); +}; + +const useCloudFormationTemplate = ({ + packageInfo, + newPolicy, + updatePolicy, + setupFormat, +}: { + packageInfo: PackageInfo; + newPolicy: NewPackagePolicy; + updatePolicy: (policy: NewPackagePolicy) => void; + setupFormat: SetupFormat; +}) => { + useEffect(() => { + const policyInputCloudFormationTemplate = getAwsCloudFormationTemplate(newPolicy); + + if (setupFormat === 'manual') { + if (!!policyInputCloudFormationTemplate) { + updateCloudFormationPolicyTemplate(newPolicy, updatePolicy, undefined); + } + return; + } + const templateUrl = getCspmCloudFormationDefaultValue(packageInfo); + + // If the template is not available, do not update the policy + if (templateUrl === '') return; + + // If the template is already set, do not update the policy + if (policyInputCloudFormationTemplate === templateUrl) return; + + updateCloudFormationPolicyTemplate(newPolicy, updatePolicy, templateUrl); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [newPolicy?.vars?.cloud_formation_template_url, newPolicy, packageInfo, setupFormat]); +}; diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/eks_credentials_form.tsx similarity index 72% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form.tsx rename to x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/eks_credentials_form.tsx index a0932d2efd7811..b14cb1cd9cdc7b 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/eks_credentials_form.tsx @@ -18,60 +18,56 @@ import type { NewPackagePolicy } from '@kbn/fleet-plugin/public'; import { NewPackagePolicyInput } from '@kbn/fleet-plugin/common'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; -import { CSPM_POLICY_TEMPLATE } from '../../../common/constants'; -import { PosturePolicyTemplate } from '../../../common/types'; import { RadioGroup } from './csp_boxed_radio_group'; import { getPosturePolicy, NewPackagePolicyPostureInput } from './utils'; -import { cspIntegrationDocsNavigation } from '../../common/navigation/constants'; -interface AWSSetupInfoContentProps { - policyTemplate: PosturePolicyTemplate | undefined; -} - -const AWSSetupInfoContent = ({ policyTemplate }: AWSSetupInfoContentProps) => { - const { cspm, kspm } = cspIntegrationDocsNavigation; - const integrationLink = - !policyTemplate || policyTemplate === CSPM_POLICY_TEMPLATE - ? cspm.getStartedPath - : kspm.getStartedPath; - - return ( - <> - - -

- -

-
- - +const AWSSetupInfoContent = () => ( + <> + + +

- - - ), - }} + id="xpack.csp.eksIntegration.setupInfoContentTitle" + defaultMessage="Setup Access" /> - - - ); -}; +

+
+ + + + + +); + +const DocsLink = ( + + + documentation + + ), + }} + /> + +); const AssumeRoleDescription = (
@@ -95,7 +91,7 @@ const TemporaryKeysDescription = (
@@ -117,10 +113,10 @@ const SharedCredentialsDescription = ( ); const AWS_FIELD_LABEL = { - access_key_id: i18n.translate('xpack.csp.awsIntegration.accessKeyIdLabel', { + access_key_id: i18n.translate('xpack.csp.eksIntegration.accessKeyIdLabel', { defaultMessage: 'Access Key ID', }), - secret_access_key: i18n.translate('xpack.csp.awsIntegration.secretAccessKeyLabel', { + secret_access_key: i18n.translate('xpack.csp.eksIntegration.secretAccessKeyLabel', { defaultMessage: 'Secret Access Key', }), }; @@ -136,20 +132,20 @@ type AwsOptions = Record< const options: AwsOptions = { assume_role: { - label: i18n.translate('xpack.csp.awsIntegration.assumeRoleLabel', { + label: i18n.translate('xpack.csp.eksIntegration.assumeRoleLabel', { defaultMessage: 'Assume role', }), info: AssumeRoleDescription, fields: { role_arn: { - label: i18n.translate('xpack.csp.awsIntegration.roleArnLabel', { + label: i18n.translate('xpack.csp.eksIntegration.roleArnLabel', { defaultMessage: 'Role ARN', }), }, }, }, direct_access_keys: { - label: i18n.translate('xpack.csp.awsIntegration.directAccessKeyLabel', { + label: i18n.translate('xpack.csp.eksIntegration.directAccessKeyLabel', { defaultMessage: 'Direct access keys', }), info: DirectAccessKeysDescription, @@ -160,32 +156,32 @@ const options: AwsOptions = { }, temporary_keys: { info: TemporaryKeysDescription, - label: i18n.translate('xpack.csp.awsIntegration.temporaryKeysLabel', { + label: i18n.translate('xpack.csp.eksIntegration.temporaryKeysLabel', { defaultMessage: 'Temporary keys', }), fields: { access_key_id: { label: AWS_FIELD_LABEL.access_key_id }, secret_access_key: { label: AWS_FIELD_LABEL.secret_access_key, type: 'password' }, session_token: { - label: i18n.translate('xpack.csp.awsIntegration.sessionTokenLabel', { + label: i18n.translate('xpack.csp.eksIntegration.sessionTokenLabel', { defaultMessage: 'Session Token', }), }, }, }, shared_credentials: { - label: i18n.translate('xpack.csp.awsIntegration.sharedCredentialLabel', { + label: i18n.translate('xpack.csp.eksIntegration.sharedCredentialLabel', { defaultMessage: 'Shared credentials', }), info: SharedCredentialsDescription, fields: { shared_credential_file: { - label: i18n.translate('xpack.csp.awsIntegration.sharedCredentialFileLabel', { + label: i18n.translate('xpack.csp.eksIntegration.sharedCredentialFileLabel', { defaultMessage: 'Shared Credential File', }), }, credential_profile_name: { - label: i18n.translate('xpack.csp.awsIntegration.credentialProfileNameLabel', { + label: i18n.translate('xpack.csp.eksIntegration.credentialProfileNameLabel', { defaultMessage: 'Credential Profile Name', }), }, @@ -194,7 +190,7 @@ const options: AwsOptions = { }; export type AwsCredentialsType = keyof typeof options; -export const DEFAULT_AWS_VARS_GROUP: AwsCredentialsType = 'assume_role'; +export const DEFAULT_EKS_VARS_GROUP: AwsCredentialsType = 'assume_role'; const AWS_CREDENTIALS_OPTIONS = Object.keys(options).map((value) => ({ id: value as AwsCredentialsType, label: options[value as keyof typeof options].label, @@ -225,7 +221,7 @@ const getInputVarsFields = ( const getAwsCredentialsType = (input: Props['input']): AwsCredentialsType | undefined => input.streams[0].vars?.['aws.credentials.type'].value; -export const AwsCredentialsForm = ({ input, newPolicy, updatePolicy }: Props) => { +export const EksCredentialsForm = ({ input, newPolicy, updatePolicy }: Props) => { // We only have a value for 'aws.credentials.type' once the form has mounted. // On initial render we don't have that value so we default to the first option. const awsCredentialsType = getAwsCredentialsType(input) || AWS_CREDENTIALS_OPTIONS[0].id; @@ -234,7 +230,7 @@ export const AwsCredentialsForm = ({ input, newPolicy, updatePolicy }: Props) => return ( <> - + /> {group.info} - + + {DocsLink} + diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts index 4bdfa4bc542ddc..151952f08a23c4 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts @@ -50,6 +50,34 @@ export const getMockPackageInfoVulnMgmtAWS = () => { } as PackageInfo; }; +export const getMockPackageInfoCspmAWS = () => { + return { + name: 'cspm', + policy_templates: [ + { + title: '', + description: '', + name: 'cspm', + inputs: [ + { + type: CLOUDBEAT_AWS, + title: '', + description: '', + vars: [ + { + type: 'text', + name: 'cloud_formation_template', + default: 's3_url', + show_user: false, + }, + ], + }, + ], + }, + ], + } as PackageInfo; +}; + const getPolicyMock = ( type: PostureInput, posture: string, @@ -58,6 +86,16 @@ const getPolicyMock = ( const mockPackagePolicy = createNewPackagePolicyMock(); const awsVarsMock = { + access_key_id: { type: 'text' }, + secret_access_key: { type: 'text' }, + session_token: { type: 'text' }, + shared_credential_file: { type: 'text' }, + credential_profile_name: { type: 'text' }, + role_arn: { type: 'text' }, + 'aws.credentials.type': { value: 'cloud_formation', type: 'text' }, + }; + + const eksVarsMock = { access_key_id: { type: 'text' }, secret_access_key: { type: 'text' }, session_token: { type: 'text' }, @@ -95,7 +133,7 @@ const getPolicyMock = ( type: CLOUDBEAT_EKS, policy_template: 'kspm', enabled: type === CLOUDBEAT_EKS, - streams: [{ enabled: type === CLOUDBEAT_EKS, data_stream: dataStream, vars: awsVarsMock }], + streams: [{ enabled: type === CLOUDBEAT_EKS, data_stream: dataStream, vars: eksVarsMock }], }, { type: CLOUDBEAT_AWS, diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx index 84c299ade66db6..7bb2e882fd3877 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx @@ -9,6 +9,7 @@ import { render } from '@testing-library/react'; import { CspPolicyTemplateForm } from './policy_template_form'; import { TestProvider } from '../../test/test_provider'; import { + getMockPackageInfoCspmAWS, getMockPackageInfoVulnMgmtAWS, getMockPolicyAWS, getMockPolicyEKS, @@ -281,7 +282,7 @@ describe('', () => { }); // 1st call happens on mount and selects the default policy template enabled input - expect(onChange).toHaveBeenNthCalledWith(1, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: { ...getMockPolicyK8s(), @@ -290,7 +291,7 @@ describe('', () => { }); // 2nd call happens on mount and increments kspm template enabled input - expect(onChange).toHaveBeenNthCalledWith(2, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: { ...getMockPolicyK8s(), @@ -302,7 +303,7 @@ describe('', () => { }, }); - expect(onChange).toHaveBeenNthCalledWith(3, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: { ...getMockPolicyK8s(), @@ -369,7 +370,7 @@ describe('', () => { }); // 1st call happens on mount and selects the default policy template enabled input - expect(onChange).toHaveBeenNthCalledWith(1, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: { ...getMockPolicyVulnMgmtAWS(), @@ -378,7 +379,7 @@ describe('', () => { }); // 2nd call happens on mount and increments vuln_mgmt template enabled input - expect(onChange).toHaveBeenNthCalledWith(2, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: { ...getMockPolicyVulnMgmtAWS(), @@ -391,7 +392,7 @@ describe('', () => { }); // 3rd call happens on mount and increments vuln_mgmt template enabled input - expect(onChange).toHaveBeenNthCalledWith(3, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: { ...getMockPolicyVulnMgmtAWS(), @@ -416,6 +417,7 @@ describe('', () => { (useParams as jest.Mock).mockReturnValue({ integration: 'cspm', }); + (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', @@ -440,12 +442,31 @@ describe('', () => { render( ); - onChange({ + // 1st call happens on mount and selects the CloudFormation template + expect(onChange).toHaveBeenCalledWith({ + isValid: true, + updatedPolicy: { + ...getMockPolicyAWS(), + name: 'cloud_security_posture-1', + inputs: policy.inputs.map((input) => { + if (input.type === CLOUDBEAT_AWS) { + return { + ...input, + enabled: true, + }; + } + return input; + }), + }, + }); + + // 2nd call happens on mount and increments cspm template enabled input + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: { ...getMockPolicyAWS(), @@ -453,21 +474,30 @@ describe('', () => { ...input, enabled: input.policy_template === 'cspm', })), - name: 'cspm-2', + name: 'cspm-1', }, }); - // 1st call happens on mount and selects the default policy template enabled input - expect(onChange).toHaveBeenNthCalledWith(1, { + // // 3rd call happens on mount and increments cspm template enabled input + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: { ...getMockPolicyAWS(), + inputs: policy.inputs.map((input) => { + if (input.type === CLOUDBEAT_AWS) { + return { + ...input, + enabled: true, + config: { cloud_formation_template_url: { value: 's3_url' } }, + }; + } + return input; + }), name: 'cloud_security_posture-1', }, }); - // 2nd call happens on mount and increments cspm template enabled input - expect(onChange).toHaveBeenNthCalledWith(2, { + onChange({ isValid: true, updatedPolicy: { ...getMockPolicyAWS(), @@ -475,12 +505,11 @@ describe('', () => { ...input, enabled: input.policy_template === 'cspm', })), - name: 'cspm-1', + name: 'cspm-2', }, }); - // 3rd call happens on mount and increments cspm template enabled input - expect(onChange).toHaveBeenNthCalledWith(3, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: { ...getMockPolicyAWS(), @@ -493,73 +522,69 @@ describe('', () => { }); }); - /** - * AWS Credentials input fields tests for KSPM/CSPM integrations - */ - const awsInputs = { - [CLOUDBEAT_EKS]: getMockPolicyEKS, - [CLOUDBEAT_AWS]: getMockPolicyAWS, - }; - - for (const [inputKey, getPolicy] of Object.entries(awsInputs) as Array< - [keyof typeof awsInputs, typeof awsInputs[keyof typeof awsInputs]] - >) { - it(`renders ${inputKey} Assume Role fields`, () => { - let policy = getPolicy(); - policy = getPosturePolicy(policy, inputKey, { + describe('EKS Credentials input fields', () => { + it(`renders ${CLOUDBEAT_EKS} Assume Role fields`, () => { + let policy = getMockPolicyEKS(); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { 'aws.credentials.type': { value: 'assume_role' }, + 'aws.setup.format': { value: 'manual' }, }); const { getByLabelText } = render(); - const option = getByLabelText('Assume role'); + const option = getByLabelText('Assume role'); expect(option).toBeChecked(); + expect(getByLabelText('Role ARN')).toBeInTheDocument(); }); - it(`updates ${inputKey} Assume Role fields`, () => { - let policy = getPolicy(); - policy = getPosturePolicy(policy, inputKey, { + it(`updates ${CLOUDBEAT_EKS} Assume Role fields`, () => { + let policy = getMockPolicyEKS(); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { 'aws.credentials.type': { value: 'assume_role' }, + 'aws.setup.format': { value: 'manual' }, }); const { getByLabelText } = render(); userEvent.type(getByLabelText('Role ARN'), 'a'); - policy = getPosturePolicy(policy, inputKey, { role_arn: { value: 'a' } }); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { role_arn: { value: 'a' } }); // Ignore 1st call triggered on mount to ensure initial state is valid - expect(onChange).toHaveBeenNthCalledWith(2, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: policy, }); }); - it(`renders ${inputKey} Direct Access Keys fields`, () => { - let policy: NewPackagePolicy = getPolicy(); - policy = getPosturePolicy(policy, inputKey, { + it(`renders ${CLOUDBEAT_EKS} Direct Access Keys fields`, () => { + let policy: NewPackagePolicy = getMockPolicyEKS(); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { 'aws.credentials.type': { value: 'direct_access_keys' }, + 'aws.setup.format': { value: 'manual' }, }); const { getByLabelText } = render(); - const option = getByLabelText('Direct access keys'); + const option = getByLabelText('Direct access keys'); expect(option).toBeChecked(); + expect(getByLabelText('Access Key ID')).toBeInTheDocument(); expect(getByLabelText('Secret Access Key')).toBeInTheDocument(); }); - it(`updates ${inputKey} Direct Access Keys fields`, () => { - let policy = getPolicy(); - policy = getPosturePolicy(policy, inputKey, { + it(`updates ${CLOUDBEAT_EKS} Direct Access Keys fields`, () => { + let policy = getMockPolicyEKS(); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { 'aws.credentials.type': { value: 'direct_access_keys' }, + 'aws.setup.format': { value: 'manual' }, }); const { getByLabelText, rerender } = render(); userEvent.type(getByLabelText('Access Key ID'), 'a'); - policy = getPosturePolicy(policy, inputKey, { access_key_id: { value: 'a' } }); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { access_key_id: { value: 'a' } }); // Ignore 1st call triggered on mount to ensure initial state is valid - expect(onChange).toHaveBeenNthCalledWith(2, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: policy, }); @@ -567,41 +592,43 @@ describe('', () => { rerender(); userEvent.type(getByLabelText('Secret Access Key'), 'b'); - policy = getPosturePolicy(policy, inputKey, { secret_access_key: { value: 'b' } }); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { secret_access_key: { value: 'b' } }); - expect(onChange).toHaveBeenNthCalledWith(3, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: policy, }); }); - it(`renders ${inputKey} Temporary Keys fields`, () => { - let policy: NewPackagePolicy = getPolicy(); - policy = getPosturePolicy(policy, inputKey, { + it(`renders ${CLOUDBEAT_EKS} Temporary Keys fields`, () => { + let policy: NewPackagePolicy = getMockPolicyEKS(); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { 'aws.credentials.type': { value: 'temporary_keys' }, + 'aws.setup.format': { value: 'manual' }, }); const { getByLabelText } = render(); - const option = getByLabelText('Temporary keys'); + const option = getByLabelText('Temporary keys'); expect(option).toBeChecked(); + expect(getByLabelText('Access Key ID')).toBeInTheDocument(); expect(getByLabelText('Secret Access Key')).toBeInTheDocument(); expect(getByLabelText('Session Token')).toBeInTheDocument(); }); - it(`updates ${inputKey} Temporary Keys fields`, () => { - let policy = getPolicy(); - policy = getPosturePolicy(policy, inputKey, { + it(`updates ${CLOUDBEAT_EKS} Temporary Keys fields`, () => { + let policy = getMockPolicyEKS(); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { 'aws.credentials.type': { value: 'temporary_keys' }, + 'aws.setup.format': { value: 'manual' }, }); const { getByLabelText, rerender } = render(); userEvent.type(getByLabelText('Access Key ID'), 'a'); - policy = getPosturePolicy(policy, inputKey, { access_key_id: { value: 'a' } }); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { access_key_id: { value: 'a' } }); - // Ignore 1st call triggered on mount to ensure initial state is valid - expect(onChange).toHaveBeenNthCalledWith(2, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: policy, }); @@ -609,9 +636,9 @@ describe('', () => { rerender(); userEvent.type(getByLabelText('Secret Access Key'), 'b'); - policy = getPosturePolicy(policy, inputKey, { secret_access_key: { value: 'b' } }); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { secret_access_key: { value: 'b' } }); - expect(onChange).toHaveBeenNthCalledWith(3, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: policy, }); @@ -619,42 +646,223 @@ describe('', () => { rerender(); userEvent.type(getByLabelText('Session Token'), 'a'); - policy = getPosturePolicy(policy, inputKey, { session_token: { value: 'a' } }); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { session_token: { value: 'a' } }); - expect(onChange).toHaveBeenNthCalledWith(4, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: policy, }); }); - it(`renders ${inputKey} Shared Credentials fields`, () => { - let policy: NewPackagePolicy = getPolicy(); - policy = getPosturePolicy(policy, inputKey, { + it(`renders ${CLOUDBEAT_EKS} Shared Credentials fields`, () => { + let policy: NewPackagePolicy = getMockPolicyEKS(); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { 'aws.credentials.type': { value: 'shared_credentials' }, }); const { getByLabelText } = render(); - const option = getByLabelText('Shared credentials'); + const option = getByLabelText('Shared credentials'); expect(option).toBeChecked(); + expect(getByLabelText('Shared Credential File')).toBeInTheDocument(); expect(getByLabelText('Credential Profile Name')).toBeInTheDocument(); }); - it(`updates ${inputKey} Shared Credentials fields`, () => { - let policy = getPolicy(); - policy = getPosturePolicy(policy, inputKey, { + it(`updates ${CLOUDBEAT_EKS} Shared Credentials fields`, () => { + let policy = getMockPolicyEKS(); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { 'aws.credentials.type': { value: 'shared_credentials' }, + 'aws.setup.format': { value: 'manual' }, }); const { getByLabelText, rerender } = render(); userEvent.type(getByLabelText('Shared Credential File'), 'a'); - policy = getPosturePolicy(policy, inputKey, { + + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { shared_credential_file: { value: 'a' }, }); + expect(onChange).toHaveBeenCalledWith({ + isValid: true, + updatedPolicy: policy, + }); + + rerender(); + + userEvent.type(getByLabelText('Credential Profile Name'), 'b'); + policy = getPosturePolicy(policy, CLOUDBEAT_EKS, { + credential_profile_name: { value: 'b' }, + }); + + expect(onChange).toHaveBeenCalledWith({ + isValid: true, + updatedPolicy: policy, + }); + }); + }); + + describe('AWS Credentials input fields', () => { + it(`renders ${CLOUDBEAT_AWS} Assume Role fields`, () => { + let policy = getMockPolicyAWS(); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { + 'aws.credentials.type': { value: 'assume_role' }, + 'aws.setup.format': { value: 'manual' }, + }); + + const { getByLabelText, getByRole } = render(); + + expect(getByRole('option', { name: 'Assume role', selected: true })).toBeInTheDocument(); + + expect(getByLabelText('Role ARN')).toBeInTheDocument(); + }); + + it(`updates ${CLOUDBEAT_AWS} Assume Role fields`, () => { + let policy = getMockPolicyAWS(); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { + 'aws.credentials.type': { value: 'assume_role' }, + 'aws.setup.format': { value: 'manual' }, + }); + const { getByLabelText } = render(); + + userEvent.type(getByLabelText('Role ARN'), 'a'); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { role_arn: { value: 'a' } }); + // Ignore 1st call triggered on mount to ensure initial state is valid - expect(onChange).toHaveBeenNthCalledWith(2, { + expect(onChange).toHaveBeenCalledWith({ + isValid: true, + updatedPolicy: policy, + }); + }); + + it(`renders ${CLOUDBEAT_AWS} Direct Access Keys fields`, () => { + let policy: NewPackagePolicy = getMockPolicyAWS(); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { + 'aws.credentials.type': { value: 'direct_access_keys' }, + 'aws.setup.format': { value: 'manual' }, + }); + + const { getByLabelText, getByRole } = render(); + + expect( + getByRole('option', { name: 'Direct access keys', selected: true }) + ).toBeInTheDocument(); + + expect(getByLabelText('Access Key ID')).toBeInTheDocument(); + expect(getByLabelText('Secret Access Key')).toBeInTheDocument(); + }); + + it(`updates ${CLOUDBEAT_AWS} Direct Access Keys fields`, () => { + let policy = getMockPolicyAWS(); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { + 'aws.credentials.type': { value: 'direct_access_keys' }, + 'aws.setup.format': { value: 'manual' }, + }); + const { getByLabelText, rerender } = render(); + + userEvent.type(getByLabelText('Access Key ID'), 'a'); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { access_key_id: { value: 'a' } }); + + // Ignore 1st call triggered on mount to ensure initial state is valid + expect(onChange).toHaveBeenCalledWith({ + isValid: true, + updatedPolicy: policy, + }); + + rerender(); + + userEvent.type(getByLabelText('Secret Access Key'), 'b'); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { secret_access_key: { value: 'b' } }); + + expect(onChange).toHaveBeenCalledWith({ + isValid: true, + updatedPolicy: policy, + }); + }); + + it(`renders ${CLOUDBEAT_AWS} Temporary Keys fields`, () => { + let policy: NewPackagePolicy = getMockPolicyAWS(); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { + 'aws.credentials.type': { value: 'temporary_keys' }, + 'aws.setup.format': { value: 'manual' }, + }); + + const { getByLabelText, getByRole } = render(); + expect(getByRole('option', { name: 'Temporary keys', selected: true })).toBeInTheDocument(); + + expect(getByLabelText('Access Key ID')).toBeInTheDocument(); + expect(getByLabelText('Secret Access Key')).toBeInTheDocument(); + expect(getByLabelText('Session Token')).toBeInTheDocument(); + }); + + it(`updates ${CLOUDBEAT_AWS} Temporary Keys fields`, () => { + let policy = getMockPolicyAWS(); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { + 'aws.credentials.type': { value: 'temporary_keys' }, + 'aws.setup.format': { value: 'manual' }, + }); + const { getByLabelText, rerender } = render(); + + userEvent.type(getByLabelText('Access Key ID'), 'a'); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { access_key_id: { value: 'a' } }); + + expect(onChange).toHaveBeenCalledWith({ + isValid: true, + updatedPolicy: policy, + }); + + rerender(); + + userEvent.type(getByLabelText('Secret Access Key'), 'b'); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { secret_access_key: { value: 'b' } }); + + expect(onChange).toHaveBeenCalledWith({ + isValid: true, + updatedPolicy: policy, + }); + + rerender(); + + userEvent.type(getByLabelText('Session Token'), 'a'); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { session_token: { value: 'a' } }); + + expect(onChange).toHaveBeenCalledWith({ + isValid: true, + updatedPolicy: policy, + }); + }); + + it(`renders ${CLOUDBEAT_AWS} Shared Credentials fields`, () => { + let policy: NewPackagePolicy = getMockPolicyAWS(); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { + 'aws.credentials.type': { value: 'shared_credentials' }, + }); + + const { getByLabelText, getByRole } = render(); + + expect( + getByRole('option', { name: 'Shared credentials', selected: true }) + ).toBeInTheDocument(); + + expect(getByLabelText('Shared Credential File')).toBeInTheDocument(); + expect(getByLabelText('Credential Profile Name')).toBeInTheDocument(); + }); + + it(`updates ${CLOUDBEAT_AWS} Shared Credentials fields`, () => { + let policy = getMockPolicyAWS(); + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { + 'aws.credentials.type': { value: 'shared_credentials' }, + 'aws.setup.format': { value: 'manual' }, + }); + const { getByLabelText, rerender } = render(); + + userEvent.type(getByLabelText('Shared Credential File'), 'a'); + + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { + shared_credential_file: { value: 'a' }, + }); + + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: policy, }); @@ -662,16 +870,16 @@ describe('', () => { rerender(); userEvent.type(getByLabelText('Credential Profile Name'), 'b'); - policy = getPosturePolicy(policy, inputKey, { + policy = getPosturePolicy(policy, CLOUDBEAT_AWS, { credential_profile_name: { value: 'b' }, }); - expect(onChange).toHaveBeenNthCalledWith(3, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: policy, }); }); - } + }); describe('Vuln Mgmt', () => { it('Update Agent Policy CloudFormation template from vars', () => { @@ -693,7 +901,7 @@ describe('', () => { }), }; - expect(onChange).toHaveBeenNthCalledWith(2, { + expect(onChange).toHaveBeenCalledWith({ isValid: true, updatedPolicy: expectedUpdatedPolicy, }); diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx index d4610156afa8d9..a5becf6644b247 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx @@ -94,12 +94,14 @@ export const CspPolicyTemplateForm = memo onChange({ isValid: true, updatedPolicy }), - [onChange] + (updatedPolicy: NewPackagePolicy) => onChange({ isValid, updatedPolicy }), + [onChange, isValid] ); /** * - Updates policy inputs by user selection @@ -107,11 +109,11 @@ export const CspPolicyTemplateForm = memo { - const inputVars = getPostureInputHiddenVars(inputType); + const inputVars = getPostureInputHiddenVars(inputType, packageInfo); const policy = getPosturePolicy(newPolicy, inputType, inputVars); updatePolicy(policy); }, - [newPolicy, updatePolicy] + [newPolicy, updatePolicy, packageInfo] ); // search for non null fields of the validation?.vars object @@ -120,6 +122,7 @@ export const CspPolicyTemplateForm = memo 0); + const [canFetchIntegration, setCanFetchIntegration] = useState(true); // delaying component rendering due to a race condition issue from Fleet // TODO: remove this workaround when the following issue is resolved: @@ -133,7 +136,9 @@ export const CspPolicyTemplateForm = memo setIsLoading(false), 200); }, [validationResultsNonNullFields]); - const { data: packagePolicyList } = usePackagePolicyList(packageInfo.name); + const { data: packagePolicyList } = usePackagePolicyList(packageInfo.name, { + enabled: canFetchIntegration, + }); useEffect(() => { if (isEditPage) return; @@ -161,6 +166,7 @@ export const CspPolicyTemplateForm = memo updatePolicy({ ...newPolicy, [field]: value })} /> {/* Defines the vars of the enabled input of the active policy template */} - + ); @@ -265,6 +278,7 @@ const usePolicyTemplateInitialName = ({ newPolicy, packagePolicyList, updatePolicy, + setCanFetchIntegration, }: { isEditPage: boolean; isLoading: boolean; @@ -272,6 +286,7 @@ const usePolicyTemplateInitialName = ({ newPolicy: NewPackagePolicy; packagePolicyList: PackagePolicy[] | undefined; updatePolicy: (policy: NewPackagePolicy) => void; + setCanFetchIntegration: (canFetch: boolean) => void; }) => { useEffect(() => { if (!integration) return; @@ -292,6 +307,7 @@ const usePolicyTemplateInitialName = ({ ...newPolicy, name: currentIntegrationName, }); + setCanFetchIntegration(false); // since this useEffect should only run on initial mount updatePolicy and newPolicy shouldn't re-trigger it // eslint-disable-next-line react-hooks/exhaustive-deps }, [isLoading, integration, isEditPage, packagePolicyList]); diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_selectors.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_selectors.tsx index 814e5251238a23..f234ce0d5e15f5 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_selectors.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_selectors.tsx @@ -7,7 +7,8 @@ import React from 'react'; import { EuiCallOut, EuiSpacer, EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import type { NewPackagePolicy } from '@kbn/fleet-plugin/common'; +import type { NewPackagePolicy, PackageInfo } from '@kbn/fleet-plugin/common'; +import { PackagePolicyReplaceDefineStepExtensionComponentProps } from '@kbn/fleet-plugin/public/types'; import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE, @@ -17,7 +18,8 @@ import { import type { PostureInput, CloudSecurityPolicyTemplate } from '../../../common/types'; import { getPolicyTemplateInputOptions, type NewPackagePolicyPostureInput } from './utils'; import { RadioGroup } from './csp_boxed_radio_group'; -import { AwsCredentialsForm } from './aws_credentials_form'; +import { AwsCredentialsForm } from './aws_credentials_form/aws_credentials_form'; +import { EksCredentialsForm } from './eks_credentials_form'; interface PolicyTemplateSelectorProps { selectedTemplate: CloudSecurityPolicyTemplate; @@ -66,13 +68,17 @@ interface PolicyTemplateVarsFormProps { newPolicy: NewPackagePolicy; input: NewPackagePolicyPostureInput; updatePolicy(updatedPolicy: NewPackagePolicy): void; + packageInfo: PackageInfo; + onChange: PackagePolicyReplaceDefineStepExtensionComponentProps['onChange']; + setIsValid: (isValid: boolean) => void; } export const PolicyTemplateVarsForm = ({ input, ...props }: PolicyTemplateVarsFormProps) => { switch (input.type) { case 'cloudbeat/cis_aws': - case 'cloudbeat/cis_eks': return ; + case 'cloudbeat/cis_eks': + return ; default: return null; } diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts index 3022b4ae2f8d4b..323ab6aa7ef053 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts @@ -15,7 +15,7 @@ describe('getPosturePolicy', () => { ['cloudbeat/cis_k8s', getMockPolicyK8s, null], ] as const) { it(`updates package policy with hidden vars for ${name}`, () => { - const inputVars = getPostureInputHiddenVars(name); + const inputVars = getPostureInputHiddenVars(name, {} as any); const policy = getPosturePolicy(getPolicy(), name, inputVars); const enabledInputs = policy.inputs.filter( diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.ts b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.ts index 32bec0489c9fa7..6e8aecf5daf1b9 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.ts +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.ts @@ -26,9 +26,10 @@ import { KSPM_POLICY_TEMPLATE, VULN_MGMT_POLICY_TEMPLATE, } from '../../../common/constants'; -import { DEFAULT_AWS_VARS_GROUP } from './aws_credentials_form'; +import { getDefaultAwsVarsGroup } from './aws_credentials_form/aws_credentials_form'; import type { PostureInput, CloudSecurityPolicyTemplate } from '../../../common/types'; import { cloudPostureIntegrations } from '../../common/constants'; +import { DEFAULT_EKS_VARS_GROUP } from './eks_credentials_form'; // Posture policies only support the default namespace export const POSTURE_NAMESPACE = 'default'; @@ -101,7 +102,10 @@ const getPostureInput = ( ...(isInputEnabled && stream.vars && inputVars && { - vars: merge({}, stream.vars, inputVars), + vars: { + ...stream.vars, + ...inputVars, + }, }), })), }; @@ -160,14 +164,36 @@ export const getVulnMgmtCloudFormationDefaultValue = (packageInfo: PackageInfo): return cloudFormationTemplate; }; +export const getCspmCloudFormationDefaultValue = (packageInfo: PackageInfo): string => { + if (!packageInfo.policy_templates) return ''; + + const policyTemplate = packageInfo.policy_templates.find((p) => p.name === CSPM_POLICY_TEMPLATE); + if (!policyTemplate) return ''; + + const policyTemplateInputs = hasPolicyTemplateInputs(policyTemplate) && policyTemplate.inputs; + + if (!policyTemplateInputs) return ''; + + const cloudFormationTemplate = policyTemplateInputs.reduce((acc, input): string => { + if (!input.vars) return acc; + const template = input.vars.find((v) => v.name === 'cloud_formation_template')?.default; + return template ? String(template) : acc; + }, ''); + + return cloudFormationTemplate; +}; + /** * Input vars that are hidden from the user */ -export const getPostureInputHiddenVars = (inputType: PostureInput) => { +export const getPostureInputHiddenVars = (inputType: PostureInput, packageInfo: PackageInfo) => { switch (inputType) { case 'cloudbeat/cis_aws': + return { + 'aws.credentials.type': { value: getDefaultAwsVarsGroup(packageInfo), type: 'text' }, + }; case 'cloudbeat/cis_eks': - return { 'aws.credentials.type': { value: DEFAULT_AWS_VARS_GROUP } }; + return { 'aws.credentials.type': { value: DEFAULT_EKS_VARS_GROUP, type: 'text' } }; default: return undefined; } diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx index c15e0ce87570f4..6be1854cdbf0a5 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx @@ -13,6 +13,7 @@ import { niceTimeFormatByDay, Settings, timeFormatter, + Tooltip, } from '@elastic/charts'; import { useEuiTheme, @@ -80,20 +81,20 @@ const ComplianceTrendChart = ({ trend }: { trend: PostureTrend[] }) => { return ( + ( + <> + + {', '} + + + )} + /> ( - <> - - {', '} - - - ), - }} /> { tickFormat={timeFormatter(niceTimeFormatByDay(2))} ticks={4} /> - + ); }; diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/metric_distribution_chart/metric_distribution_chart.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/metric_distribution_chart/metric_distribution_chart.tsx index 2cf73d455e311e..427795c8de547c 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/metric_distribution_chart/metric_distribution_chart.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/metric_distribution_chart/metric_distribution_chart.tsx @@ -18,6 +18,7 @@ import { ScaleType, Settings, TooltipHeaderFormatter, + Tooltip, } from '@elastic/charts'; import { MetricDistributionChartTooltipHeader } from './metric_distribution_chart_tooltip_header'; @@ -82,7 +83,8 @@ export const MetricDistributionChart: FC = ({ className="dataGridChart__histogram" > - + + + { it('formats tooltip dates correctly', () => { const wrapper = shallow(); - const dateFormatter: Function = (wrapper.find(Settings).prop('tooltip') as any).headerFormatter; + const dateFormatter = wrapper.find(Tooltip).prop('headerFormatter')!; - expect(dateFormatter({ value: '1970-12-03' })).toEqual('December 3, 1970'); + expect(dateFormatter({ value: '1970-12-03', formattedValue: '1970-12-03' })).toEqual( + 'December 3, 1970' + ); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/analytics/components/analytics_chart.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/analytics/components/analytics_chart.tsx index fa33389503beb1..029686f54bd1da 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/analytics/components/analytics_chart.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/analytics/components/analytics_chart.tsx @@ -11,7 +11,7 @@ import { useValues } from 'kea'; import moment from 'moment'; -import { Chart, Settings, LineSeries, CurveType, Axis } from '@elastic/charts'; +import { Chart, Settings, LineSeries, CurveType, Axis, Tooltip } from '@elastic/charts'; import { KibanaLogic } from '../../../../shared/kibana'; @@ -36,12 +36,10 @@ export const AnalyticsChart: React.FC = ({ height = 300, lines }) => { return ( + moment(tooltip.value).format(TOOLTIP_DATE_FORMAT)} /> moment(tooltip.value).format(TOOLTIP_DATE_FORMAT), - }} /> {lines.map(({ id, data, isDashed }) => ( = ({ height = 300, lines }) => { id="bottom-axis" position="bottom" tickFormat={(d) => moment(d).format(X_AXIS_DATE_FORMAT)} - showGridLines + gridLine={{ visible: true }} /> - + ); }; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/constants.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/constants.ts index b11b32d1433928..0f1603ea4fe0dd 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/constants.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/constants.ts @@ -31,6 +31,12 @@ export const CONNECTORS_DICT: Record = { externalDocsUrl: '', icon: CONNECTOR_ICONS.custom, }, + dropbox: { + docsUrl: docLinks.connectorsDropbox, + externalAuthDocsUrl: '', + externalDocsUrl: '', + icon: CONNECTOR_ICONS.dropbox, + }, google_cloud_storage: { docsUrl: docLinks.connectorsGoogleCloudStorage, externalAuthDocsUrl: 'https://cloud.google.com/storage/docs/authentication', @@ -86,6 +92,12 @@ export const CONNECTORS_DICT: Record = { externalDocsUrl: '', icon: CONNECTOR_ICONS.amazon_s3, }, + servicenow: { + docsUrl: docLinks.connectorsServiceNow, + externalAuthDocsUrl: '', + externalDocsUrl: '', + icon: CONNECTOR_ICONS.servicenow, + }, sharepoint: { docsUrl: docLinks.connectorsSharepoint, externalAuthDocsUrl: '', diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts b/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts index 591255cf204b60..ef7e233dd29e3f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts @@ -66,6 +66,7 @@ class DocLinks { public connectorsClients: string; public connectorsConfluence: string; public connectorsContentExtraction: string; + public connectorsDropbox: string; public connectorsGoogleCloudStorage: string; public connectorsJira: string; public connectorsMicrosoftSQL: string; @@ -76,6 +77,7 @@ class DocLinks { public connectorsOracle: string; public connectorsPostgreSQL: string; public connectorsS3: string; + public connectorsServiceNow: string; public connectorsSharepoint: string; public connectorsSharepointOnline: string; public connectorsWorkplaceSearch: string; @@ -219,6 +221,7 @@ class DocLinks { this.connectorsConfluence = ''; this.connectorsContentExtraction = ''; this.connectorsClients = ''; + this.connectorsDropbox = ''; this.connectorsGoogleCloudStorage = ''; this.connectorsJira = ''; this.connectorsMicrosoftSQL = ''; @@ -229,6 +232,7 @@ class DocLinks { this.connectorsOracle = ''; this.connectorsPostgreSQL = ''; this.connectorsS3 = ''; + this.connectorsServiceNow = ''; this.connectorsSharepoint = ''; this.connectorsSharepointOnline = ''; this.connectorsWorkplaceSearch = ''; @@ -373,6 +377,7 @@ class DocLinks { this.connectorsConfluence = docLinks.links.enterpriseSearch.connectorsConfluence; this.connectorsContentExtraction = docLinks.links.enterpriseSearch.connectorsContentExtraction; this.connectorsClients = docLinks.links.enterpriseSearch.connectorsClients; + this.connectorsDropbox = docLinks.links.enterpriseSearch.connectorsDropbox; this.connectorsGoogleCloudStorage = docLinks.links.enterpriseSearch.connectorsGoogleCloudStorage; this.connectorsJira = docLinks.links.enterpriseSearch.connectorsJira; @@ -384,6 +389,7 @@ class DocLinks { this.connectorsOracle = docLinks.links.enterpriseSearch.connectorsOracle; this.connectorsPostgreSQL = docLinks.links.enterpriseSearch.connectorsPostgreSQL; this.connectorsS3 = docLinks.links.enterpriseSearch.connectorsS3; + this.connectorsServiceNow = docLinks.links.enterpriseSearch.connectorsServiceNow; this.connectorsSharepoint = docLinks.links.enterpriseSearch.connectorsSharepoint; this.connectorsSharepointOnline = docLinks.links.enterpriseSearch.connectorsSharepointOnline; this.connectorsWorkplaceSearch = docLinks.links.enterpriseSearch.connectorsWorkplaceSearch; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/icons/connector_icons.ts b/x-pack/plugins/enterprise_search/public/applications/shared/icons/connector_icons.ts index 71c6647ada170d..cb7871bbe9f021 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/icons/connector_icons.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/icons/connector_icons.ts @@ -8,6 +8,8 @@ import azure_blob_storage from '../../../assets/source_icons/azure_blob_storage.svg'; import confluence_cloud from '../../../assets/source_icons/confluence_cloud.svg'; import custom from '../../../assets/source_icons/custom.svg'; +import dropbox from '../../../assets/source_icons/dropbox.svg'; +import github from '../../../assets/source_icons/github.svg'; import google_cloud_storage from '../../../assets/source_icons/google_cloud_storage.svg'; import jira_cloud from '../../../assets/source_icons/jira_cloud.svg'; import mongodb from '../../../assets/source_icons/mongodb.svg'; @@ -17,6 +19,7 @@ import network_drive from '../../../assets/source_icons/network_drive.svg'; import oracle from '../../../assets/source_icons/oracle.svg'; import postgresql from '../../../assets/source_icons/postgresql.svg'; import amazon_s3 from '../../../assets/source_icons/s3.svg'; +import servicenow from '../../../assets/source_icons/servicenow.svg'; import sharepoint from '../../../assets/source_icons/sharepoint.svg'; import sharepoint_online from '../../../assets/source_icons/sharepoint_online.svg'; @@ -25,6 +28,8 @@ export const CONNECTOR_ICONS = { azure_blob_storage, confluence_cloud, custom, + dropbox, + github, google_cloud_storage, jira_cloud, microsoft_sql, @@ -33,6 +38,7 @@ export const CONNECTOR_ICONS = { network_drive, oracle, postgresql, + servicenow, sharepoint, sharepoint_online, }; diff --git a/x-pack/plugins/enterprise_search/server/index.ts b/x-pack/plugins/enterprise_search/server/index.ts index 92f15667d84474..704595b708c5ea 100644 --- a/x-pack/plugins/enterprise_search/server/index.ts +++ b/x-pack/plugins/enterprise_search/server/index.ts @@ -27,6 +27,7 @@ export const configSchema = schema.object({ hasNativeConnectors: schema.boolean({ defaultValue: true }), hasWebCrawler: schema.boolean({ defaultValue: true }), host: schema.maybe(schema.string()), + isCloud: schema.boolean({ defaultValue: false }), ssl: schema.object({ certificateAuthorities: schema.maybe( schema.oneOf([schema.arrayOf(schema.string(), { minSize: 1 }), schema.string()]) diff --git a/x-pack/plugins/enterprise_search/server/integrations.ts b/x-pack/plugins/enterprise_search/server/integrations.ts index c024d7c1107008..72c655c7bb150f 100644 --- a/x-pack/plugins/enterprise_search/server/integrations.ts +++ b/x-pack/plugins/enterprise_search/server/integrations.ts @@ -32,91 +32,7 @@ const workplaceSearchIntegrations: WorkplaceSearchIntegration[] = [ defaultMessage: 'Search over your files and folders stored on Box with Workplace Search.', } ), - categories: ['enterprise_search', 'workplace_search', 'content_source'], - }, - { - id: 'confluence_cloud', - title: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.confluenceCloudName', - { - defaultMessage: 'Confluence Cloud', - } - ), - description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.confluenceCloudDescription', - { - defaultMessage: - 'Search over your organizational content on Confluence Cloud with Workplace Search.', - } - ), - categories: [ - 'enterprise_search', - 'custom', - 'workplace_search', - 'content_source', - 'connector_package', - ], - }, - { - id: 'confluence_server', - title: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.confluenceServerName', - { - defaultMessage: 'Confluence Server', - } - ), - description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.confluenceServerDescription', - { - defaultMessage: - 'Search over your organizational content on Confluence Server with Workplace Search.', - } - ), - categories: ['enterprise_search', 'workplace_search', 'content_source'], - }, - { - id: 'dropbox', - title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.dropboxName', { - defaultMessage: 'Dropbox', - }), - description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.dropboxDescription', - { - defaultMessage: - 'Search over your files and folders stored on Dropbox with Workplace Search.', - } - ), - categories: ['enterprise_search', 'workplace_search', 'content_source'], - }, - { - id: 'github', - title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.githubName', { - defaultMessage: 'GitHub', - }), - description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.githubDescription', - { - defaultMessage: 'Search over your projects and repos on GitHub with Workplace Search.', - } - ), - categories: ['enterprise_search', 'workplace_search', 'content_source'], - }, - { - id: 'github_enterprise_server', - title: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.githubEnterpriseServerName', - { - defaultMessage: 'GitHub Enterprise Server', - } - ), - description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.githubEnterpriseServerDescription', - { - defaultMessage: - 'Search over your projects and repos on GitHub Enterprise Server with Workplace Search.', - } - ), - categories: ['enterprise_search', 'workplace_search', 'content_source'], + categories: ['enterprise_search', 'workplace_search', 'workplace_search_content_source'], }, { id: 'gmail', @@ -129,7 +45,12 @@ const workplaceSearchIntegrations: WorkplaceSearchIntegration[] = [ defaultMessage: 'Search over your emails managed by Gmail with Workplace Search.', } ), - categories: ['enterprise_search', 'google_cloud', 'workplace_search', 'content_source'], + categories: [ + 'enterprise_search', + 'google_cloud', + 'workplace_search', + 'workplace_search_content_source', + ], }, { id: 'google_drive', @@ -142,48 +63,12 @@ const workplaceSearchIntegrations: WorkplaceSearchIntegration[] = [ defaultMessage: 'Search over your documents on Google Drive with Workplace Search.', } ), - categories: ['enterprise_search', 'google_cloud', 'workplace_search', 'content_source'], - }, - { - id: 'jira_cloud', - title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.jiraCloudName', { - defaultMessage: 'Jira Cloud', - }), - description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.jiraCloudDescription', - { - defaultMessage: 'Search over your project workflow on Jira Cloud with Workplace Search.', - } - ), - categories: ['enterprise_search', 'workplace_search', 'content_source'], - }, - { - id: 'jira_server', - title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.jiraServerName', { - defaultMessage: 'Jira Server', - }), - description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.jiraServerDescription', - { - defaultMessage: 'Search over your project workflow on Jira Server with Workplace Search.', - } - ), - categories: ['enterprise_search', 'workplace_search', 'content_source'], - }, - { - id: 'network_drive', - title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.networkDriveName', { - defaultMessage: 'Network Drive', - }), - description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.networkDriveDescription', - { - defaultMessage: - 'Search over your files and folders stored on network drives with Workplace Search.', - } - ), - categories: ['enterprise_search', 'content_source', 'custom', 'workplace_search'], - uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/network_drive/custom', + categories: [ + 'enterprise_search', + 'google_cloud', + 'workplace_search', + 'workplace_search_content_source', + ], }, { id: 'onedrive', @@ -196,7 +81,12 @@ const workplaceSearchIntegrations: WorkplaceSearchIntegration[] = [ defaultMessage: 'Search over your files stored on OneDrive with Workplace Search.', } ), - categories: ['enterprise_search', 'azure', 'workplace_search', 'content_source'], + categories: [ + 'enterprise_search', + 'azure', + 'workplace_search', + 'workplace_search_content_source', + ], uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/one_drive', }, { @@ -210,7 +100,7 @@ const workplaceSearchIntegrations: WorkplaceSearchIntegration[] = [ defaultMessage: 'Search over your content on Salesforce with Workplace Search.', } ), - categories: ['enterprise_search', 'workplace_search', 'content_source'], + categories: ['enterprise_search', 'workplace_search', 'workplace_search_content_source'], }, { id: 'salesforce_sandbox', @@ -226,92 +116,60 @@ const workplaceSearchIntegrations: WorkplaceSearchIntegration[] = [ defaultMessage: 'Search over your content on Salesforce Sandbox with Workplace Search.', } ), - categories: ['enterprise_search', 'workplace_search', 'content_source'], + categories: ['enterprise_search', 'workplace_search', 'workplace_search_content_source'], }, { - id: 'servicenow', - title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.servicenowName', { - defaultMessage: 'ServiceNow', + id: 'slack', + title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.slackName', { + defaultMessage: 'Slack', }), description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.servicenowDescription', + 'xpack.enterpriseSearch.workplaceSearch.integrations.slackDescription', { - defaultMessage: 'Search over your content on ServiceNow with Workplace Search.', + defaultMessage: 'Search over your messages on Slack with Workplace Search.', } ), - categories: ['enterprise_search', 'workplace_search', 'content_source'], + categories: ['enterprise_search', 'workplace_search', 'workplace_search_content_source'], }, { - id: 'sharepoint_online', - title: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.sharepointOnlineName', - { - defaultMessage: 'SharePoint Online', - } - ), + id: 'zendesk', + title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.zendeskName', { + defaultMessage: 'Zendesk', + }), description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.sharepointOnlineDescription', + 'xpack.enterpriseSearch.workplaceSearch.integrations.zendeskDescription', { - defaultMessage: 'Search over your files stored on SharePoint Online with Workplace Search.', + defaultMessage: 'Search over your tickets on Zendesk with Workplace Search.', } ), - categories: [ - 'enterprise_search', - 'azure', - 'custom', - 'workplace_search', - 'content_source', - 'connector_package', - ], - uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/share_point', + categories: ['enterprise_search', 'workplace_search', 'workplace_search_content_source'], }, { - id: 'sharepoint_server', - title: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.sharepointServerName', - { - defaultMessage: 'SharePoint Server', - } - ), + id: 'github', + title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.githubName', { + defaultMessage: 'GitHub', + }), description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.sharepointServerDescription', + 'xpack.enterpriseSearch.workplaceSearch.integrations.githubDescription', { - defaultMessage: - 'Search over your files stored on Microsoft SharePoint Server with Workplace Search.', + defaultMessage: 'Search over your projects and repos on GitHub with Workplace Search.', } ), - categories: [ - 'enterprise_search', - 'azure', - 'custom', - 'workplace_search', - 'content_source', - 'connector_package', - ], - uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/share_point_server/custom', + categories: ['enterprise_search', 'workplace_search', 'content_source'], }, { - id: 'slack', - title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.slackName', { - defaultMessage: 'Slack', - }), - description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.slackDescription', + id: 'github_enterprise_server', + title: i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.integrations.githubEnterpriseServerName', { - defaultMessage: 'Search over your messages on Slack with Workplace Search.', + defaultMessage: 'GitHub Enterprise Server', } ), - categories: ['enterprise_search', 'workplace_search', 'content_source'], - }, - { - id: 'zendesk', - title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.zendeskName', { - defaultMessage: 'Zendesk', - }), description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.zendeskDescription', + 'xpack.enterpriseSearch.workplaceSearch.integrations.githubEnterpriseServerDescription', { - defaultMessage: 'Search over your tickets on Zendesk with Workplace Search.', + defaultMessage: + 'Search over your projects and repos on GitHub Enterprise Server with Workplace Search.', } ), categories: ['enterprise_search', 'workplace_search', 'content_source'], @@ -321,8 +179,10 @@ const workplaceSearchIntegrations: WorkplaceSearchIntegration[] = [ export const registerEnterpriseSearchIntegrations = ( config: ConfigType, http: HttpServiceSetup, - customIntegrations: CustomIntegrationsPluginSetup + customIntegrations: CustomIntegrationsPluginSetup, + isCloud: boolean ) => { + const nativeSearchTag = config.hasNativeConnectors && isCloud ? ['native_search'] : []; if (config.canDeployEntSearch) { workplaceSearchIntegrations.forEach((integration) => { customIntegrations.registerCustomIntegration({ @@ -404,36 +264,87 @@ export const registerEnterpriseSearchIntegrations = ( isBeta: false, }); - if (config.hasNativeConnectors) { + if (config.hasConnectors) { customIntegrations.registerCustomIntegration({ - id: 'native_connector', - title: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.nativeConnectorName', - { - defaultMessage: 'Use a connector', - } - ), + id: 'dropbox', + title: i18n.translate('xpack.enterpriseSearch.content.integrations.dropbox', { + defaultMessage: 'Dropbox', + }), description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.nativeConnectorDescription', + 'xpack.enterpriseSearch.content.integrations.dropboxDescription', { defaultMessage: - 'Search over your data sources with a native Enterprise Search connector.', + 'Search over your files and folders stored on Dropbox with Enterprise Search.', } ), - categories: ['enterprise_search', 'custom', 'elastic_stack', 'connector', 'native_search'], + categories: [ + 'enterprise_search', + 'elastic_stack', + 'datastore', + 'connector', + 'connector_client', + ], uiInternalPath: - '/app/enterprise_search/content/search_indices/new_index/connector/select_connector', + '/app/enterprise_search/content/search_indices/new_index/connector?service_type=dropbox', icons: [ { - type: 'eui', - src: 'logoEnterpriseSearch', + type: 'svg', + src: http.basePath.prepend('/plugins/enterpriseSearch/assets/source_icons/dropbox.svg'), }, ], shipper: 'enterprise_search', isBeta: false, }); - } - if (config.hasConnectors) { + + // TODO: Review around BC 2/3 whether github is ready + + // customIntegrations.registerCustomIntegration({ + // id: 'github', + // title: i18n.translate('xpack.enterpriseSearch.content.integrations.github', { + // defaultMessage: 'GitHub', + // }), + // description: i18n.translate('xpack.enterpriseSearch.content.integrations.githubDescription', { + // defaultMessage: 'Search over your projects and repos on GitHub with Enterprise Search.', + // }), + // categories: ['enterprise_search', 'elastic_stack', 'connector', 'connector_client'], + // uiInternalPath: + // '/app/enterprise_search/content/search_indices/new_index/connector?service_type=github', + // icons: [ + // { + // type: 'svg', + // src: http.basePath.prepend('/plugins/enterpriseSearch/assets/source_icons/github.svg'), + // }, + // ], + // shipper: 'enterprise_search', + // isBeta: false, + // }); + + // customIntegrations.registerCustomIntegration({ + // id: 'github_server', + // title: i18n.translate('xpack.enterpriseSearch.content.integrations.githubServer', { + // defaultMessage: 'GitHub Enterprise Server', + // }), + // description: i18n.translate( + // 'xpack.enterpriseSearch.content.integrations.githubServerDescription', + // { + // defaultMessage: 'Search over your projects and repos on GitHub with Enterprise Search.', + // } + // ), + // categories: ['enterprise_search', 'elastic_stack', 'connector', 'connector_client'], + // uiInternalPath: + // '/app/enterprise_search/content/search_indices/new_index/connector?service_type=github', + // icons: [ + // { + // type: 'svg', + // src: http.basePath.prepend( + // '/plugins/enterpriseSearch/assets/source_icons/github_enterprise_server.svg' + // ), + // }, + // ], + // shipper: 'enterprise_search', + // isBeta: false, + // }); + customIntegrations.registerCustomIntegration({ id: 'mongodb', title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.mongoDBName', { @@ -449,7 +360,7 @@ export const registerEnterpriseSearchIntegrations = ( 'enterprise_search', 'datastore', 'elastic_stack', - 'native_search', + ...nativeSearchTag, 'connector', 'connector_client', ], @@ -480,7 +391,7 @@ export const registerEnterpriseSearchIntegrations = ( 'enterprise_search', 'datastore', 'elastic_stack', - 'native_search', + ...nativeSearchTag, 'connector', 'connector_client', ], @@ -498,7 +409,7 @@ export const registerEnterpriseSearchIntegrations = ( customIntegrations.registerCustomIntegration({ id: 'build_a_connector', title: i18n.translate('xpack.enterpriseSearch.integrations.buildAConnectorName', { - defaultMessage: 'Build a connector', + defaultMessage: 'Customized connector', }), description: i18n.translate( 'xpack.enterpriseSearch.integrations.buildAConnectorDescription', @@ -545,6 +456,96 @@ export const registerEnterpriseSearchIntegrations = ( isBeta: false, }); + customIntegrations.registerCustomIntegration({ + id: 'servicenow', + title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.serviceNowName', { + defaultMessage: 'ServiceNow', + }), + description: i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.integrations.serviceNowDescription', + { + defaultMessage: 'Search over your content on ServiceNow with Enterprise Search.', + } + ), + categories: ['enterprise_search', 'elastic_stack', 'connector', 'connector_client'], + uiInternalPath: + '/app/enterprise_search/content/search_indices/new_index/connector?service_type=service_now', + icons: [ + { + type: 'svg', + src: http.basePath.prepend( + '/plugins/enterpriseSearch/assets/source_icons/servicenow.svg' + ), + }, + ], + shipper: 'enterprise_search', + isBeta: false, + }); + + customIntegrations.registerCustomIntegration({ + id: 'sharepoint_online', + title: i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.integrations.sharepointOnlineName', + { + defaultMessage: 'SharePoint Online', + } + ), + description: i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.integrations.sharepointOnlineDescription', + { + defaultMessage: 'Search over your content on SharePoint Online with Enterprise Search.', + } + ), + categories: [ + 'enterprise_search', + 'elastic_stack', + 'connector', + 'connector_client', + ...nativeSearchTag, + ], + uiInternalPath: + '/app/enterprise_search/content/search_indices/new_index/connector?service_type=sharepoint_online', + icons: [ + { + type: 'svg', + src: http.basePath.prepend( + '/plugins/enterpriseSearch/assets/source_icons/sharepoint_online.svg' + ), + }, + ], + shipper: 'enterprise_search', + isBeta: false, + }); + + customIntegrations.registerCustomIntegration({ + id: 'sharepoint_server', + title: i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.integrations.sharepointServerName', + { + defaultMessage: 'SharePoint Server', + } + ), + description: i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.integrations.sharepointServerDescription', + { + defaultMessage: 'Search over your content on SharePoint Server with Enterprise Search.', + } + ), + categories: ['enterprise_search', 'elastic_stack', 'custom', 'connector', 'connector_client'], + uiInternalPath: + '/app/enterprise_search/content/search_indices/new_index/connector?service_type=sharepoint_server', + icons: [ + { + type: 'svg', + src: http.basePath.prepend( + '/plugins/enterpriseSearch/assets/source_icons/sharepoint_server.svg' + ), + }, + ], + shipper: 'enterprise_search', + isBeta: false, + }); + customIntegrations.registerCustomIntegration({ id: 'oracle', title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.oracleName', { @@ -611,11 +612,9 @@ export const registerEnterpriseSearchIntegrations = ( categories: [ 'enterprise_search', 'elastic_stack', - 'custom', - 'workplace_search', 'connector', 'connector_client', - 'connector_package', + ...nativeSearchTag, ], uiInternalPath: '/app/enterprise_search/content/search_indices/new_index/connector?service_type=network_drive', @@ -708,18 +707,24 @@ export const registerEnterpriseSearchIntegrations = ( isBeta: false, }); customIntegrations.registerCustomIntegration({ - id: 'confluence_cloud_server', + id: 'confluence_cloud', title: i18n.translate('xpack.enterpriseSearch.integrations.connectors.confluenceTitle', { - defaultMessage: 'Confluence Cloud & Server', + defaultMessage: 'Confluence Cloud', }), description: i18n.translate( 'xpack.enterpriseSearch.integrations.connectors.confluenceDescription', { - defaultMessage: - 'Search over your content on Confluence Cloud & Server with Enterprise Search.', + defaultMessage: 'Search over your content on Confluence Cloud with Enterprise Search.', } ), - categories: ['enterprise_search', 'elastic_stack', 'custom'], + categories: [ + 'enterprise_search', + 'elastic_stack', + 'custom', + 'connector', + 'connector_client', + ...nativeSearchTag, + ], uiInternalPath: '/app/enterprise_search/content/search_indices/new_index/connector?service_type=confluence', icons: [ @@ -734,17 +739,52 @@ export const registerEnterpriseSearchIntegrations = ( isBeta: false, }); customIntegrations.registerCustomIntegration({ - id: 'jira_cloud_server', - title: i18n.translate('xpack.enterpriseSearch.integrations.connectors.jiraTitle', { - defaultMessage: 'Jira Cloud & Server', + id: 'confluence_server', + title: i18n.translate( + 'xpack.enterpriseSearch.integrations.connectors.confluenceServerTitle', + { + defaultMessage: 'Confluence Server', + } + ), + description: i18n.translate( + 'xpack.enterpriseSearch.integrations.connectors.confluenceServerDescription', + { + defaultMessage: 'Search over your content on Confluence Server with Enterprise Search.', + } + ), + categories: ['enterprise_search', 'elastic_stack', 'custom', 'connector', 'connector_client'], + uiInternalPath: + '/app/enterprise_search/content/search_indices/new_index/connector?service_type=confluence', + icons: [ + { + type: 'svg', + src: http.basePath.prepend( + '/plugins/enterpriseSearch/assets/source_icons/confluence_cloud.svg' + ), + }, + ], + shipper: 'enterprise_search', + isBeta: false, + }); + customIntegrations.registerCustomIntegration({ + id: 'jira_cloud', + title: i18n.translate('xpack.enterpriseSearch.integrations.connectors.jiraCloudTitle', { + defaultMessage: 'Jira Cloud', }), description: i18n.translate( 'xpack.enterpriseSearch.integrations.connectors.jiraDescription', { - defaultMessage: 'Search over your content on Jira Cloud & Server with Enterprise Search.', + defaultMessage: 'Search over your content on Jira Cloud with Enterprise Search.', } ), - categories: ['enterprise_search', 'elastic_stack', 'custom'], + categories: [ + 'enterprise_search', + 'elastic_stack', + 'custom', + 'connector', + 'connector_client', + 'jira', + ], uiInternalPath: '/app/enterprise_search/content/search_indices/new_index/connector?service_type=jira', icons: [ @@ -758,26 +798,33 @@ export const registerEnterpriseSearchIntegrations = ( shipper: 'enterprise_search', isBeta: false, }); + customIntegrations.registerCustomIntegration({ - id: 'sharepoint_online_connector', - title: i18n.translate('xpack.enterpriseSearch.integrations.connectors.sharepointTitle', { - defaultMessage: 'Sharepoint Online & Server', + id: 'jira_server', + title: i18n.translate('xpack.enterpriseSearch.integrations.connectors.jiraServerTitle', { + defaultMessage: 'Jira Server', }), description: i18n.translate( - 'xpack.enterpriseSearch.integrations.connectors.sharepointDescription', + 'xpack.enterpriseSearch.integrations.connectors.jiraServerDescription', { - defaultMessage: - 'Search over your content on Sharepoint Online & Server with Enterprise Search.', + defaultMessage: 'Search over your content on Jira Server with Enterprise Search.', } ), - categories: ['enterprise_search', 'elastic_stack', 'custom'], + categories: [ + 'enterprise_search', + 'elastic_stack', + 'custom', + 'connector', + 'connector_client', + 'jira', + ], uiInternalPath: - '/app/enterprise_search/content/search_indices/new_index/connector?service_type=sharepoint', + '/app/enterprise_search/content/search_indices/new_index/connector?service_type=jira', icons: [ { type: 'svg', src: http.basePath.prepend( - '/plugins/enterpriseSearch/assets/source_icons/sharepoint_online.svg' + '/plugins/enterpriseSearch/assets/source_icons/jira_server.svg' ), }, ], diff --git a/x-pack/plugins/enterprise_search/server/plugin.ts b/x-pack/plugins/enterprise_search/server/plugin.ts index 9e0f6c3ded53be..b072fbdf515030 100644 --- a/x-pack/plugins/enterprise_search/server/plugin.ts +++ b/x-pack/plugins/enterprise_search/server/plugin.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { CloudSetup } from '@kbn/cloud-plugin/server'; import { Plugin, PluginInitializerContext, @@ -82,6 +83,7 @@ import { getSearchResultProvider } from './utils/search_result_provider'; import { ConfigType } from '.'; interface PluginsSetup { + cloud: CloudSetup; customIntegrations?: CustomIntegrationsPluginSetup; features: FeaturesPluginSetup; globalSearch: GlobalSearchPluginSetup; @@ -127,6 +129,7 @@ export class EnterpriseSearchPlugin implements Plugin { customIntegrations, ml, guidedOnboarding, + cloud, }: PluginsSetup ) { const config = this.config; @@ -139,9 +142,10 @@ export class EnterpriseSearchPlugin implements Plugin { ...(config.canDeployEntSearch ? [APP_SEARCH_PLUGIN.ID, WORKPLACE_SEARCH_PLUGIN.ID] : []), SEARCH_EXPERIENCES_PLUGIN.ID, ]; + const isCloud = !!cloud.cloudId; if (customIntegrations) { - registerEnterpriseSearchIntegrations(config, http, customIntegrations); + registerEnterpriseSearchIntegrations(config, http, customIntegrations, isCloud); } /* @@ -219,7 +223,7 @@ export class EnterpriseSearchPlugin implements Plugin { registerEnterpriseSearchRoutes(dependencies); if (config.canDeployEntSearch) registerWorkplaceSearchRoutes(dependencies); // Enterprise Search Routes - if (config.hasNativeConnectors) registerConnectorRoutes(dependencies); + if (config.hasConnectors) registerConnectorRoutes(dependencies); if (config.hasWebCrawler) registerCrawlerRoutes(dependencies); registerStatsRoutes(dependencies); @@ -292,7 +296,7 @@ export class EnterpriseSearchPlugin implements Plugin { if (config.hasWebCrawler) { guidedOnboarding.registerGuideConfig(websiteSearchGuideId, websiteSearchGuideConfig); } - if (config.hasNativeConnectors) { + if (config.hasConnectors) { guidedOnboarding.registerGuideConfig(databaseSearchGuideId, databaseSearchGuideConfig); } diff --git a/x-pack/plugins/fleet/common/types/models/package_spec.ts b/x-pack/plugins/fleet/common/types/models/package_spec.ts index 60f9b29bd218b2..6f83f3333790f5 100644 --- a/x-pack/plugins/fleet/common/types/models/package_spec.ts +++ b/x-pack/plugins/fleet/common/types/models/package_spec.ts @@ -50,9 +50,7 @@ export type PackageSpecCategory = | 'config_management' | 'connector' | 'connector_client' - | 'connector_package' | 'containers' - | 'content_source' | 'crawler' | 'credential_management' | 'crm' @@ -101,7 +99,8 @@ export type PackageSpecCategory = | 'web' | 'web_application_firewall' | 'websphere' - | 'workplace_search'; + | 'workplace_search' + | 'workplace_search_content_source'; export interface PackageSpecConditions { kibana: { diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/components/post_install_cloud_formation_modal.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/components/post_install_cloud_formation_modal.tsx new file mode 100644 index 00000000000000..33a706f8ca73b2 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/components/post_install_cloud_formation_modal.tsx @@ -0,0 +1,97 @@ +/* + * 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 { + EuiButton, + EuiButtonEmpty, + EuiCallOut, + EuiModal, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, + EuiSpacer, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useQuery } from '@tanstack/react-query'; + +import type { AgentPolicy, PackagePolicy } from '../../../../../types'; +import { sendGetEnrollmentAPIKeys, useCreateCloudFormationUrl } from '../../../../../hooks'; +import { getCloudFormationTemplateUrlFromPackagePolicy } from '../../../../../services'; +import { CloudFormationGuide } from '../../../../../components'; + +export const PostInstallCloudFormationModal: React.FunctionComponent<{ + onConfirm: () => void; + onCancel: () => void; + agentPolicy: AgentPolicy; + packagePolicy: PackagePolicy; +}> = ({ onConfirm, onCancel, agentPolicy, packagePolicy }) => { + const { data: apyKeysData } = useQuery(['cloudFormationApiKeys'], () => + sendGetEnrollmentAPIKeys({ + page: 1, + perPage: 1, + kuery: `policy_id:${agentPolicy.id}`, + }) + ); + + const cloudFormationTemplateUrl = + getCloudFormationTemplateUrlFromPackagePolicy(packagePolicy) || ''; + + const { cloudFormationUrl, error, isError, isLoading } = useCreateCloudFormationUrl({ + cloudFormationTemplateUrl, + enrollmentAPIKey: apyKeysData?.data?.items[0]?.api_key, + }); + + return ( + + + + + + + + + + {error && isError && ( + <> + + + + )} + + + + + + + { + window.open(cloudFormationUrl); + onConfirm(); + }} + fill + color="primary" + isLoading={isLoading} + isDisabled={isError} + > + + + + + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/form.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/form.tsx index 83b476b7749137..52d02d93c8097f 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/form.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/form.tsx @@ -39,6 +39,7 @@ import type { PackagePolicyFormState } from '../../types'; import { SelectedPolicyTab } from '../../components'; import { useOnSaveNavigate } from '../../hooks'; import { prepareInputPackagePolicyDataset } from '../../services/prepare_input_pkg_policy_dataset'; +import { getCloudFormationTemplateUrlFromPackagePolicy } from '../../../../../services'; async function createAgentPolicy({ packagePolicy, @@ -298,11 +299,24 @@ export function useOnSubmit({ policy_id: createdPolicy?.id ?? packagePolicy.policy_id, force, }); - setFormState(agentCount ? 'SUBMITTED' : 'SUBMITTED_NO_AGENTS'); + + const hasCloudFormation = data?.item + ? getCloudFormationTemplateUrlFromPackagePolicy(data.item) + : false; + + if (hasCloudFormation) { + setFormState(agentCount ? 'SUBMITTED' : 'SUBMITTED_CLOUD_FORMATION'); + } else { + setFormState(agentCount ? 'SUBMITTED' : 'SUBMITTED_NO_AGENTS'); + } if (!error) { setSavedPackagePolicy(data!.item); const hasAgentsAssigned = agentCount && agentPolicy; + if (!hasAgentsAssigned && hasCloudFormation) { + setFormState('SUBMITTED_CLOUD_FORMATION'); + return; + } if (!hasAgentsAssigned) { setFormState('SUBMITTED_NO_AGENTS'); return; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx index fd62addd083911..c216135a8ffd31 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx @@ -58,6 +58,7 @@ import { import { CreatePackagePolicySinglePageLayout, PostInstallAddAgentModal } from './components'; import { useDevToolsRequest, useOnSubmit } from './hooks'; +import { PostInstallCloudFormationModal } from './components/post_install_cloud_formation_modal'; const StepsWithLessPadding = styled(EuiSteps)` .euiStep__content { @@ -412,6 +413,14 @@ export const CreatePackagePolicySinglePage: CreatePackagePolicyParams = ({ onCancel={() => navigateAddAgentHelp(savedPackagePolicy)} /> )} + {formState === 'SUBMITTED_CLOUD_FORMATION' && agentPolicy && savedPackagePolicy && ( + navigateAddAgent(savedPackagePolicy)} + onCancel={() => navigateAddAgentHelp(savedPackagePolicy)} + /> + )} {packageInfo && ( { - const cloudFormationUrl = templateURL - .replace('FLEET_ENROLLMENT_TOKEN', enrollmentToken) - .replace('FLEET_URL', fleetUrl) - .replace('KIBANA_VERSION', kibanaVersion); - - return new URL(cloudFormationUrl).toString(); -}; - export const CloudFormationInstructions: React.FunctionComponent = ({ enrollmentAPIKey, cloudFormationTemplateUrl, }) => { - const { data, isLoading } = useGetSettings(); - - const kibanaVersion = useKibanaVersion(); - - // Default fleet server host - const fleetServerHost = data?.item.fleet_server_hosts?.[0]; - - if (!isLoading && !fleetServerHost) { - return ( - <> - - - - ); - } + const { isLoading, cloudFormationUrl, error, isError } = useCreateCloudFormationUrl({ + enrollmentAPIKey, + cloudFormationTemplateUrl, + }); - if (!enrollmentAPIKey) { + if (error && isError) { return ( <> - + ); } - const cloudFormationUrl = createCloudFormationUrl( - cloudFormationTemplateUrl, - enrollmentAPIKey, - fleetServerHost || '', - kibanaVersion - ); - return ( = ({ } )} > - - - + ( + + {children} + +); + +export const CloudFormationGuide = () => { + return ( + +

+ + + + ), + }} + /> +

+ +
    +
  1. + +
  2. +
  3. + +
  4. +
  5. + +
  6. +
  7. + + + + ), + }} + /> +
  8. +
  9. + +
  10. +
+
+
+ ); +}; diff --git a/x-pack/plugins/fleet/public/components/index.ts b/x-pack/plugins/fleet/public/components/index.ts index 06805679892f28..8335f9fcfc61f9 100644 --- a/x-pack/plugins/fleet/public/components/index.ts +++ b/x-pack/plugins/fleet/public/components/index.ts @@ -29,3 +29,4 @@ export { DevtoolsRequestFlyoutButton } from './devtools_request_flyout'; export { HeaderReleaseBadge, InlineReleaseBadge } from './release_badge'; export { WithGuidedOnboardingTour } from './with_guided_onboarding_tour'; export { UninstallCommandFlyout } from './uninstall_command_flyout'; +export { CloudFormationGuide } from './cloud_formation_guide'; diff --git a/x-pack/plugins/fleet/public/hooks/index.ts b/x-pack/plugins/fleet/public/hooks/index.ts index a9fb6ef7758c7b..0692ce961379ea 100644 --- a/x-pack/plugins/fleet/public/hooks/index.ts +++ b/x-pack/plugins/fleet/public/hooks/index.ts @@ -32,3 +32,4 @@ export * from './use_is_guided_onboarding_active'; export * from './use_fleet_server_hosts_for_policy'; export * from './use_fleet_server_standalone'; export * from './use_locator'; +export * from './use_create_cloud_formation_url'; diff --git a/x-pack/plugins/fleet/public/hooks/use_create_cloud_formation_url.ts b/x-pack/plugins/fleet/public/hooks/use_create_cloud_formation_url.ts new file mode 100644 index 00000000000000..cc76b68b6edb4e --- /dev/null +++ b/x-pack/plugins/fleet/public/hooks/use_create_cloud_formation_url.ts @@ -0,0 +1,74 @@ +/* + * 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 { i18n } from '@kbn/i18n'; + +import { useKibanaVersion } from './use_kibana_version'; +import { useGetSettings } from './use_request'; + +export const useCreateCloudFormationUrl = ({ + enrollmentAPIKey, + cloudFormationTemplateUrl, +}: { + enrollmentAPIKey: string | undefined; + cloudFormationTemplateUrl: string; +}) => { + const { data, isLoading } = useGetSettings(); + + const kibanaVersion = useKibanaVersion(); + + let isError = false; + let error: string | undefined; + + // Default fleet server host + const fleetServerHost = data?.item.fleet_server_hosts?.[0]; + + if (!fleetServerHost && !isLoading) { + isError = true; + error = i18n.translate('xpack.fleet.agentEnrollment.cloudFormation.noFleetServerHost', { + defaultMessage: 'No Fleet Server host found', + }); + } + + if (!enrollmentAPIKey && !isLoading) { + isError = true; + error = i18n.translate('xpack.fleet.agentEnrollment.cloudFormation.noApiKey', { + defaultMessage: 'No enrollment token found', + }); + } + + const cloudFormationUrl = + enrollmentAPIKey && fleetServerHost && cloudFormationTemplateUrl + ? createCloudFormationUrl( + cloudFormationTemplateUrl, + enrollmentAPIKey, + fleetServerHost, + kibanaVersion + ) + : undefined; + + return { + isLoading, + cloudFormationUrl, + isError, + error, + }; +}; + +const createCloudFormationUrl = ( + templateURL: string, + enrollmentToken: string, + fleetUrl: string, + kibanaVersion: string +) => { + const cloudFormationUrl = templateURL + .replace('FLEET_ENROLLMENT_TOKEN', enrollmentToken) + .replace('FLEET_URL', fleetUrl) + .replace('KIBANA_VERSION', kibanaVersion); + + return new URL(cloudFormationUrl).toString(); +}; diff --git a/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_agent_policy.test.ts b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_agent_policy.test.ts new file mode 100644 index 00000000000000..6b4214044f2a0c --- /dev/null +++ b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_agent_policy.test.ts @@ -0,0 +1,68 @@ +/* + * 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 { getCloudFormationTemplateUrlFromAgentPolicy } from './get_cloud_formation_template_url_from_agent_policy'; + +describe('getCloudFormationTemplateUrlFromAgentPolicy', () => { + it('should return undefined when selectedPolicy is undefined', () => { + const result = getCloudFormationTemplateUrlFromAgentPolicy(); + expect(result).toBeUndefined(); + }); + + it('should return undefined when selectedPolicy has no package_policies', () => { + const selectedPolicy = {}; + // @ts-expect-error + const result = getCloudFormationTemplateUrlFromAgentPolicy(selectedPolicy); + expect(result).toBeUndefined(); + }); + + it('should return undefined when no input has enabled and config.cloud_formation_template_url', () => { + const selectedPolicy = { + package_policies: [ + { + inputs: [ + { enabled: false, config: {} }, + { enabled: true, config: {} }, + { enabled: true, config: { other_property: 'value' } }, + ], + }, + { + inputs: [ + { enabled: false, config: {} }, + { enabled: false, config: {} }, + ], + }, + ], + }; + // @ts-expect-error + const result = getCloudFormationTemplateUrlFromAgentPolicy(selectedPolicy); + expect(result).toBeUndefined(); + }); + + it('should return the first config.cloud_formation_template_url when available', () => { + const selectedPolicy = { + package_policies: [ + { + inputs: [ + { enabled: false, config: { cloud_formation_template_url: { value: 'url1' } } }, + { enabled: false, config: { cloud_formation_template_url: { value: 'url2' } } }, + { enabled: false, config: { other_property: 'value' } }, + ], + }, + { + inputs: [ + { enabled: false, config: {} }, + { enabled: true, config: { cloud_formation_template_url: { value: 'url3' } } }, + { enabled: true, config: { cloud_formation_template_url: { value: 'url4' } } }, + ], + }, + ], + }; + // @ts-expect-error + const result = getCloudFormationTemplateUrlFromAgentPolicy(selectedPolicy); + expect(result).toBe('url3'); + }); +}); diff --git a/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_agent_policy.ts b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_agent_policy.ts new file mode 100644 index 00000000000000..81aaf5b3fd9708 --- /dev/null +++ b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_agent_policy.ts @@ -0,0 +1,38 @@ +/* + * 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 { AgentPolicy } from '../types'; + +/** + * Get the cloud formation template url from a agent policy + * It looks for a config with a cloud_formation_template_url object present in + * the enabled package_policies inputs of the agent policy + */ +export const getCloudFormationTemplateUrlFromAgentPolicy = (selectedPolicy?: AgentPolicy) => { + const cloudFormationTemplateUrl = selectedPolicy?.package_policies?.reduce( + (acc, packagePolicy) => { + const findCloudFormationTemplateUrlConfig = packagePolicy.inputs?.reduce( + (accInput, input) => { + if (accInput !== '') { + return accInput; + } + if (input?.enabled && input?.config?.cloud_formation_template_url) { + return input.config.cloud_formation_template_url.value; + } + return accInput; + }, + '' + ); + if (findCloudFormationTemplateUrlConfig) { + return findCloudFormationTemplateUrlConfig; + } + return acc; + }, + '' + ); + return cloudFormationTemplateUrl !== '' ? cloudFormationTemplateUrl : undefined; +}; diff --git a/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.test.ts b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.test.ts new file mode 100644 index 00000000000000..523641b10eb1b5 --- /dev/null +++ b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.test.ts @@ -0,0 +1,61 @@ +/* + * 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 { getCloudFormationTemplateUrlFromPackagePolicy } from './get_cloud_formation_template_url_from_package_policy'; + +describe('getCloudFormationTemplateUrlFromPackagePolicy', () => { + test('returns undefined when packagePolicy is undefined', () => { + const result = getCloudFormationTemplateUrlFromPackagePolicy(undefined); + expect(result).toBeUndefined(); + }); + + test('returns undefined when packagePolicy is defined but inputs are empty', () => { + const packagePolicy = { inputs: [] }; + // @ts-expect-error + const result = getCloudFormationTemplateUrlFromPackagePolicy(packagePolicy); + expect(result).toBeUndefined(); + }); + + test('returns undefined when no enabled input has a cloudFormationTemplateUrl', () => { + const packagePolicy = { + inputs: [ + { enabled: false, config: { cloud_formation_template_url: { value: 'template1' } } }, + { enabled: false, config: { cloud_formation_template_url: { value: 'template2' } } }, + ], + }; + // @ts-expect-error + const result = getCloudFormationTemplateUrlFromPackagePolicy(packagePolicy); + expect(result).toBeUndefined(); + }); + + test('returns the cloudFormationTemplateUrl of the first enabled input', () => { + const packagePolicy = { + inputs: [ + { enabled: false, config: { cloud_formation_template_url: { value: 'template1' } } }, + { enabled: true, config: { cloud_formation_template_url: { value: 'template2' } } }, + { enabled: true, config: { cloud_formation_template_url: { value: 'template3' } } }, + ], + }; + // @ts-expect-error + const result = getCloudFormationTemplateUrlFromPackagePolicy(packagePolicy); + expect(result).toBe('template2'); + }); + + test('returns the cloudFormationTemplateUrl of the first enabled input and ignores subsequent inputs', () => { + const packagePolicy = { + inputs: [ + { enabled: true, config: { cloud_formation_template_url: { value: 'template1' } } }, + { enabled: true, config: { cloud_formation_template_url: { value: 'template2' } } }, + { enabled: true, config: { cloud_formation_template_url: { value: 'template3' } } }, + ], + }; + // @ts-expect-error + const result = getCloudFormationTemplateUrlFromPackagePolicy(packagePolicy); + expect(result).toBe('template1'); + }); + + // Add more test cases as needed +}); diff --git a/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.ts b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.ts index 0cff589996984f..598e71709fdc7d 100644 --- a/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.ts +++ b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.ts @@ -5,31 +5,23 @@ * 2.0. */ -import type { AgentPolicy } from '../types'; +import type { PackagePolicy } from '../types'; /** * Get the cloud formation template url from a package policy * It looks for a config with a cloud_formation_template_url object present in * the enabled inputs of the package policy */ -export const getCloudFormationTemplateUrlFromPackagePolicy = (selectedPolicy?: AgentPolicy) => { - const cloudFormationTemplateUrl = selectedPolicy?.package_policies?.reduce( - (acc, packagePolicy) => { - const findCloudFormationTemplateUrlConfig = packagePolicy.inputs?.reduce( - (accInput, input) => { - if (input?.enabled && input?.config?.cloud_formation_template_url) { - return input.config.cloud_formation_template_url.value; - } - return accInput; - }, - '' - ); - if (findCloudFormationTemplateUrlConfig) { - return findCloudFormationTemplateUrlConfig; - } - return acc; - }, - '' - ); +export const getCloudFormationTemplateUrlFromPackagePolicy = (packagePolicy?: PackagePolicy) => { + const cloudFormationTemplateUrl = packagePolicy?.inputs?.reduce((accInput, input) => { + if (accInput !== '') { + return accInput; + } + if (input?.enabled && input?.config?.cloud_formation_template_url) { + return input.config.cloud_formation_template_url.value; + } + return accInput; + }, ''); + return cloudFormationTemplateUrl !== '' ? cloudFormationTemplateUrl : undefined; }; diff --git a/x-pack/plugins/fleet/public/services/index.ts b/x-pack/plugins/fleet/public/services/index.ts index 8a71f7d96e1faf..d8e7a3697a66e7 100644 --- a/x-pack/plugins/fleet/public/services/index.ts +++ b/x-pack/plugins/fleet/public/services/index.ts @@ -50,3 +50,4 @@ export { createExtensionRegistrationCallback } from './ui_extensions'; export { incrementPolicyName } from './increment_policy_name'; export { generateNewAgentPolicyWithDefaults } from './generate_new_agent_policy'; export { getCloudFormationTemplateUrlFromPackagePolicy } from './get_cloud_formation_template_url_from_package_policy'; +export { getCloudFormationTemplateUrlFromAgentPolicy } from './get_cloud_formation_template_url_from_agent_policy'; diff --git a/x-pack/plugins/fleet/server/services/epm/archive/parse.test.ts b/x-pack/plugins/fleet/server/services/epm/archive/parse.test.ts index b7c2628eab19ef..504ec6f658a576 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/parse.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/parse.test.ts @@ -379,13 +379,17 @@ describe('parseAndVerifyArchive', () => { expect(() => parseAndVerifyArchive(['input_only-0.1.0/manifest.yml', 'dummy/manifest.yml'], {}) ).toThrowError( - new PackageInvalidArchiveError('Package contains more than one top-level directory.') + new PackageInvalidArchiveError( + 'Package contains more than one top-level directory; top-level directory found: input_only-0.1.0; filePath: dummy/manifest.yml' + ) ); }); it('should throw on missing manifest file', () => { expect(() => parseAndVerifyArchive(['input_only-0.1.0/test/manifest.yml'], {})).toThrowError( - new PackageInvalidArchiveError('Package must contain a top-level manifest.yml file.') + new PackageInvalidArchiveError( + 'Package at top-level directory input_only-0.1.0 must contain a top-level manifest.yml file.' + ) ); }); @@ -396,7 +400,9 @@ describe('parseAndVerifyArchive', () => { parseAndVerifyArchive(['input_only-0.1.0/manifest.yml'], { 'input_only-0.1.0/manifest.yml': buf, }) - ).toThrowError('Could not parse top-level package manifest: YAMLException'); + ).toThrowError( + 'Could not parse top-level package manifest at top-level directory input_only-0.1.0: YAMLException' + ); }); it('should throw on missing required fields', () => { @@ -416,7 +422,9 @@ version: 0.1.0 parseAndVerifyArchive(['input_only-0.1.0/manifest.yml'], { 'input_only-0.1.0/manifest.yml': buf, }) - ).toThrowError('Invalid top-level package manifest: one or more fields missing of '); + ).toThrowError( + 'Invalid top-level package manifest at top-level directory input_only-0.1.0 (package name: input_only): one or more fields missing of ' + ); }); it('should throw on name or version mismatch', () => { diff --git a/x-pack/plugins/fleet/server/services/epm/archive/parse.ts b/x-pack/plugins/fleet/server/services/epm/archive/parse.ts index a55276dc621e3e..705f1f93ac78bb 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/parse.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/parse.ts @@ -182,7 +182,9 @@ export function parseAndVerifyArchive( const toplevelDir = topLevelDirOverride || paths[0].split('/')[0]; paths.forEach((filePath) => { if (!filePath.startsWith(toplevelDir)) { - throw new PackageInvalidArchiveError('Package contains more than one top-level directory.'); + throw new PackageInvalidArchiveError( + `Package contains more than one top-level directory; top-level directory found: ${toplevelDir}; filePath: ${filePath}` + ); } }); @@ -190,7 +192,9 @@ export function parseAndVerifyArchive( const manifestFile = path.posix.join(toplevelDir, MANIFEST_NAME); const manifestBuffer = manifests[manifestFile]; if (!paths.includes(manifestFile) || !manifestBuffer) { - throw new PackageInvalidArchiveError(`Package must contain a top-level ${MANIFEST_NAME} file.`); + throw new PackageInvalidArchiveError( + `Package at top-level directory ${toplevelDir} must contain a top-level ${MANIFEST_NAME} file.` + ); } // ... which must be valid YAML @@ -198,7 +202,9 @@ export function parseAndVerifyArchive( try { manifest = yaml.safeLoad(manifestBuffer.toString()); } catch (error) { - throw new PackageInvalidArchiveError(`Could not parse top-level package manifest: ${error}.`); + throw new PackageInvalidArchiveError( + `Could not parse top-level package manifest at top-level directory ${toplevelDir}: ${error}.` + ); } // must have mandatory fields @@ -208,7 +214,7 @@ export function parseAndVerifyArchive( if (!requiredKeysMatch) { const list = requiredArchivePackageProps.join(', '); throw new PackageInvalidArchiveError( - `Invalid top-level package manifest: one or more fields missing of ${list}` + `Invalid top-level package manifest at top-level directory ${toplevelDir} (package name: ${manifest.name}): one or more fields missing of ${list}.` ); } diff --git a/x-pack/plugins/global_search_bar/public/components/index.ts b/x-pack/plugins/global_search_bar/public/components/index.ts index a05b1890834f09..75daff2ef3fd99 100644 --- a/x-pack/plugins/global_search_bar/public/components/index.ts +++ b/x-pack/plugins/global_search_bar/public/components/index.ts @@ -7,25 +7,6 @@ import { GlobalSearchResult } from '@kbn/global-search-plugin/public'; -/* @internal */ -export enum COUNT_METRIC { - UNHANDLED_ERROR = 'unhandled_error', - SEARCH_REQUEST = 'search_request', - SHORTCUT_USED = 'shortcut_used', - SEARCH_FOCUS = 'search_focus', -} - -/* @internal */ -export enum CLICK_METRIC { - USER_NAVIGATED_TO_APPLICATION = 'user_navigated_to_application', - USER_NAVIGATED_TO_SAVED_OBJECT = 'user_navigated_to_saved_object', -} - -/* @internal */ -export const getClickMetric = (metric: CLICK_METRIC, context: string) => { - return [metric, `${metric}_${context}`]; -}; - /* @internal */ export const isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0; diff --git a/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx b/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx index aa5d42ad2a0d72..fec5c4c008c090 100644 --- a/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx +++ b/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx @@ -6,15 +6,16 @@ */ import type { ChromeStyle } from '@kbn/core-chrome-browser'; -import { applicationServiceMock } from '@kbn/core/public/mocks'; +import { applicationServiceMock, coreMock } from '@kbn/core/public/mocks'; import { GlobalSearchBatchedResults, GlobalSearchResult } from '@kbn/global-search-plugin/public'; import { globalSearchPluginMock } from '@kbn/global-search-plugin/public/mocks'; import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; +import { usageCollectionPluginMock } from '@kbn/usage-collection-plugin/public/mocks'; import { act, fireEvent, render, screen } from '@testing-library/react'; import React from 'react'; import { BehaviorSubject, of } from 'rxjs'; import { filter, map } from 'rxjs/operators'; -import type { TrackUiMetricFn } from '../types'; +import { EventReporter } from '../telemetry'; import { SearchBar } from './search_bar'; jest.mock( @@ -47,17 +48,18 @@ const createBatch = (...results: Result[]): GlobalSearchBatchedResults => ({ jest.useFakeTimers({ legacyFakeTimers: true }); describe('SearchBar', () => { - let searchService: ReturnType; - let applications: ReturnType; - let trackUiMetric: TrackUiMetricFn; + const usageCollection = usageCollectionPluginMock.createSetupContract(); + const core = coreMock.createStart(); const basePathUrl = '/plugins/globalSearchBar/assets/'; const darkMode = false; + const eventReporter = new EventReporter({ analytics: core.analytics, usageCollection }); + let searchService: ReturnType; + let applications: ReturnType; beforeEach(() => { applications = applicationServiceMock.createStartContract(); searchService = globalSearchPluginMock.createStartContract(); - trackUiMetric = jest.fn(); }); const update = () => { @@ -109,7 +111,7 @@ describe('SearchBar', () => { basePathUrl={basePathUrl} darkMode={darkMode} chromeStyle$={chromeStyle$} - trackUiMetric={trackUiMetric} + reportEvent={eventReporter} /> ); @@ -127,10 +129,6 @@ describe('SearchBar', () => { await assertSearchResults(['Discover • Kibana', 'My Dashboard • Test']); expect(searchService.find).toHaveBeenCalledTimes(2); expect(searchService.find).toHaveBeenLastCalledWith({ term: 'd' }, {}); - - expect(trackUiMetric).nthCalledWith(1, 'count', 'search_focus'); - expect(trackUiMetric).nthCalledWith(2, 'count', 'search_request'); - expect(trackUiMetric).toHaveBeenCalledTimes(2); }); it('supports keyboard shortcuts', async () => { @@ -142,7 +140,7 @@ describe('SearchBar', () => { basePathUrl={basePathUrl} darkMode={darkMode} chromeStyle$={chromeStyle$} - trackUiMetric={trackUiMetric} + reportEvent={eventReporter} /> ); @@ -153,10 +151,6 @@ describe('SearchBar', () => { const inputElement = await screen.findByTestId('nav-search-input'); expect(document.activeElement).toEqual(inputElement); - - expect(trackUiMetric).nthCalledWith(1, 'count', 'shortcut_used'); - expect(trackUiMetric).nthCalledWith(2, 'count', 'search_focus'); - expect(trackUiMetric).toHaveBeenCalledTimes(2); }); it('only display results from the last search', async () => { @@ -179,7 +173,7 @@ describe('SearchBar', () => { basePathUrl={basePathUrl} darkMode={darkMode} chromeStyle$={chromeStyle$} - trackUiMetric={trackUiMetric} + reportEvent={eventReporter} /> ); @@ -197,45 +191,6 @@ describe('SearchBar', () => { await assertSearchResults(['Visualize • Kibana', 'Map • Kibana']); }); - - it('tracks the application navigated to', async () => { - searchService.find.mockReturnValueOnce( - of(createBatch('Discover', { id: 'My Dashboard', type: 'test' })) - ); - - render( - - - - ); - - expect(searchService.find).toHaveBeenCalledTimes(0); - - await focusAndUpdate(); - - expect(searchService.find).toHaveBeenCalledTimes(1); - expect(searchService.find).toHaveBeenCalledWith({}, {}); - await assertSearchResults(['Discover • Kibana']); - - const navSearchOptionToClick = await screen.findByTestId('nav-search-option'); - act(() => { - fireEvent.click(navSearchOptionToClick); - }); - - expect(trackUiMetric).nthCalledWith(1, 'count', 'search_focus'); - expect(trackUiMetric).nthCalledWith(2, 'click', [ - 'user_navigated_to_application', - 'user_navigated_to_application_discover', - ]); - expect(trackUiMetric).toHaveBeenCalledTimes(2); - }); }); describe('chromeStyle: project', () => { @@ -250,7 +205,7 @@ describe('SearchBar', () => { basePathUrl={basePathUrl} darkMode={darkMode} chromeStyle$={chromeStyle$} - trackUiMetric={trackUiMetric} + reportEvent={eventReporter} /> ); @@ -259,16 +214,10 @@ describe('SearchBar', () => { fireEvent.keyDown(window, { key: '/', ctrlKey: true, metaKey: true }); }); - const inputElement = await screen.findByTestId('nav-search-input'); - - expect(document.activeElement).toEqual(inputElement); + expect(await screen.findByTestId('nav-search-input')).toEqual(document.activeElement); fireEvent.click(await screen.findByTestId('nav-search-conceal')); expect(screen.queryAllByTestId('nav-search-input')).toHaveLength(0); - - expect(trackUiMetric).nthCalledWith(1, 'count', 'shortcut_used'); - expect(trackUiMetric).nthCalledWith(2, 'count', 'search_focus'); - expect(trackUiMetric).toHaveBeenCalledTimes(2); }); it('supports show/hide', async () => { @@ -280,7 +229,7 @@ describe('SearchBar', () => { basePathUrl={basePathUrl} darkMode={darkMode} chromeStyle$={chromeStyle$} - trackUiMetric={trackUiMetric} + reportEvent={eventReporter} /> ); @@ -290,8 +239,6 @@ describe('SearchBar', () => { fireEvent.click(await screen.findByTestId('nav-search-conceal')); expect(screen.queryAllByTestId('nav-search-input')).toHaveLength(0); - - expect(trackUiMetric).nthCalledWith(1, 'count', 'search_focus'); }); }); }); diff --git a/x-pack/plugins/global_search_bar/public/components/search_bar.tsx b/x-pack/plugins/global_search_bar/public/components/search_bar.tsx index 72659515425c5c..a1c854b393d63b 100644 --- a/x-pack/plugins/global_search_bar/public/components/search_bar.tsx +++ b/x-pack/plugins/global_search_bar/public/components/search_bar.tsx @@ -18,7 +18,6 @@ import { euiSelectableTemplateSitewideRenderOptions, useEuiTheme, } from '@elastic/eui'; -import { METRIC_TYPE } from '@kbn/analytics'; import type { GlobalSearchFindParams, GlobalSearchResult } from '@kbn/global-search-plugin/public'; import React, { FC, useCallback, useEffect, useRef, useState } from 'react'; import useDebounce from 'react-use/lib/useDebounce'; @@ -26,7 +25,7 @@ import useEvent from 'react-use/lib/useEvent'; import useMountedState from 'react-use/lib/useMountedState'; import useObservable from 'react-use/lib/useObservable'; import { Subscription } from 'rxjs'; -import { blurEvent, CLICK_METRIC, COUNT_METRIC, getClickMetric, isMac, sort } from '.'; +import { blurEvent, isMac, sort } from '.'; import { resultToOption, suggestionToOption } from '../lib'; import { parseSearchParams } from '../search_syntax'; import { i18nStrings } from '../strings'; @@ -48,14 +47,9 @@ const EmptyMessage = () => ( ); -export const SearchBar: FC = ({ - globalSearch, - taggingApi, - navigateToUrl, - trackUiMetric, - chromeStyle$, - ...props -}) => { +export const SearchBar: FC = (opts) => { + const { globalSearch, taggingApi, navigateToUrl, reportEvent, chromeStyle$, ...props } = opts; + const isMounted = useMountedState(); const { euiTheme } = useEuiTheme(); const chromeStyle = useObservable(chromeStyle$); @@ -134,7 +128,7 @@ export const SearchBar: FC = ({ let aggregatedResults: GlobalSearchResult[] = []; if (searchValue.length !== 0) { - trackUiMetric(METRIC_TYPE.COUNT, COUNT_METRIC.SEARCH_REQUEST); + reportEvent.searchRequest(); } const rawParams = parseSearchParams(searchValue); @@ -170,10 +164,10 @@ export const SearchBar: FC = ({ setOptions(aggregatedResults, suggestions, searchParams.tags); }, - error: () => { + error: (err) => { // Not doing anything on error right now because it'll either just show the previous // results or empty results which is basically what we want anyways - trackUiMetric(METRIC_TYPE.COUNT, COUNT_METRIC.UNHANDLED_ERROR); + reportEvent.error({ message: err, searchValue }); }, complete: () => {}, }); @@ -187,7 +181,7 @@ export const SearchBar: FC = ({ (event: KeyboardEvent) => { if (event.key === '/' && (isMac ? event.metaKey : event.ctrlKey)) { event.preventDefault(); - trackUiMetric(METRIC_TYPE.COUNT, COUNT_METRIC.SHORTCUT_USED); + reportEvent.shortcutUsed(); if (chromeStyle === 'project' && !isVisible) { visibilityButtonRef.current?.click(); } else if (searchRef) { @@ -197,16 +191,26 @@ export const SearchBar: FC = ({ } } }, - [chromeStyle, isVisible, buttonRef, searchRef, trackUiMetric] + [chromeStyle, isVisible, buttonRef, searchRef, reportEvent] ); const onChange = useCallback( (selection: EuiSelectableTemplateSitewideOption[]) => { - const selected = selection.find(({ checked }) => checked === 'on'); + let selectedRank: number | null = null; + const selected = selection.find(({ checked }, rank) => { + const isChecked = checked === 'on'; + if (isChecked) { + selectedRank = rank + 1; + } + return isChecked; + }); + if (!selected) { return; } + const selectedLabel = selected.label ?? null; + // @ts-ignore - ts error is "union type is too complex to express" const { url, type, suggestion } = selected; @@ -222,19 +226,24 @@ export const SearchBar: FC = ({ if (type === 'application') { const key = selected.key ?? 'unknown'; const application = `${key.toLowerCase().replaceAll(' ', '_')}`; - trackUiMetric( - METRIC_TYPE.CLICK, - getClickMetric(CLICK_METRIC.USER_NAVIGATED_TO_APPLICATION, application) - ); + reportEvent.navigateToApplication({ + application, + searchValue, + selectedLabel, + selectedRank, + }); } else { - trackUiMetric( - METRIC_TYPE.CLICK, - getClickMetric(CLICK_METRIC.USER_NAVIGATED_TO_SAVED_OBJECT, type) - ); + reportEvent.navigateToSavedObject({ + type, + searchValue, + selectedLabel, + selectedRank, + }); } - } catch (e) { + } catch (err) { + reportEvent.error({ message: err, searchValue }); // eslint-disable-next-line no-console - console.log('Error trying to track searchbar metrics', e); + console.log('Error trying to track searchbar metrics', err); } navigateToUrl(url); @@ -245,7 +254,7 @@ export const SearchBar: FC = ({ searchRef.dispatchEvent(blurEvent); } }, - [trackUiMetric, navigateToUrl, searchRef] + [reportEvent, navigateToUrl, searchRef, searchValue] ); const clearField = () => setSearchValue(''); @@ -257,9 +266,6 @@ export const SearchBar: FC = ({ useEvent('keydown', onKeyDown); if (chromeStyle === 'project' && !isVisible) { - const onShowSearch = () => { - setIsVisible(true); - }; return ( = ({ color="text" data-test-subj="nav-search-reveal" iconType="search" - onClick={onShowSearch} + onClick={() => { + setIsVisible(true); + }} /> ); } @@ -281,6 +289,7 @@ export const SearchBar: FC = ({ data-test-subj="nav-search-conceal" iconType="cross" onClick={() => { + reportEvent.searchBlur(); setIsVisible(false); }} /> @@ -318,11 +327,12 @@ export const SearchBar: FC = ({ 'aria-label': i18nStrings.placeholderText, placeholder: i18nStrings.placeholderText, onFocus: () => { - trackUiMetric(METRIC_TYPE.COUNT, COUNT_METRIC.SEARCH_FOCUS); + reportEvent.searchFocus(); setInitialLoad(true); setShowAppend(false); }, onBlur: () => { + reportEvent.searchBlur(); setShowAppend(!searchValue.length); }, fullWidth: true, diff --git a/x-pack/plugins/global_search_bar/public/components/types.ts b/x-pack/plugins/global_search_bar/public/components/types.ts index 968b904e3fa385..c56cde3bf443fe 100644 --- a/x-pack/plugins/global_search_bar/public/components/types.ts +++ b/x-pack/plugins/global_search_bar/public/components/types.ts @@ -5,18 +5,18 @@ * 2.0. */ -import { ChromeStyle } from '@kbn/core-chrome-browser'; +import type { ChromeStyle } from '@kbn/core-chrome-browser'; import type { ApplicationStart } from '@kbn/core/public'; import type { GlobalSearchPluginStart } from '@kbn/global-search-plugin/public'; import type { SavedObjectTaggingPluginStart } from '@kbn/saved-objects-tagging-plugin/public'; -import { Observable } from 'rxjs'; -import { TrackUiMetricFn } from '../types'; +import type { Observable } from 'rxjs'; +import { EventReporter } from '../telemetry'; /* @internal */ export interface SearchBarProps { globalSearch: GlobalSearchPluginStart; navigateToUrl: ApplicationStart['navigateToUrl']; - trackUiMetric: TrackUiMetricFn; + reportEvent: EventReporter; taggingApi?: SavedObjectTaggingPluginStart; basePathUrl: string; darkMode: boolean; diff --git a/x-pack/plugins/global_search_bar/public/plugin.tsx b/x-pack/plugins/global_search_bar/public/plugin.tsx index 7be3d9227a99b8..cf421202a48648 100644 --- a/x-pack/plugins/global_search_bar/public/plugin.tsx +++ b/x-pack/plugins/global_search_bar/public/plugin.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { ChromeNavControl, CoreStart, Plugin } from '@kbn/core/public'; +import { ChromeNavControl, CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; import { GlobalSearchPluginStart } from '@kbn/global-search-plugin/public'; import { I18nProvider } from '@kbn/i18n-react'; import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; @@ -14,7 +14,7 @@ import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; import React from 'react'; import ReactDOM from 'react-dom'; import { SearchBar } from './components/search_bar'; -import { TrackUiMetricFn } from './types'; +import { EventReporter, eventTypes } from './telemetry'; export interface GlobalSearchBarPluginStartDeps { globalSearch: GlobalSearchPluginStart; @@ -23,7 +23,11 @@ export interface GlobalSearchBarPluginStartDeps { } export class GlobalSearchBarPlugin implements Plugin<{}, {}> { - public setup() { + public setup({ analytics }: CoreSetup) { + eventTypes.forEach((eventType) => { + analytics.registerEventType(eventType); + }); + return {}; } @@ -35,16 +39,7 @@ export class GlobalSearchBarPlugin implements Plugin<{}, {}> { private getNavControl(deps: { core: CoreStart } & GlobalSearchBarPluginStartDeps) { const { core, globalSearch, savedObjectsTagging, usageCollection } = deps; const { application, http, theme, uiSettings } = core; - - let trackUiMetric: TrackUiMetricFn = () => {}; - if (usageCollection) { - trackUiMetric = (...args) => { - // track UI Counter metrics - usageCollection.reportUiCounter('global_search_bar', ...args); - - // TODO track EBT metrics using core.analytics - }; - } + const reportEvent = new EventReporter({ analytics: core.analytics, usageCollection }); const navControl: ChromeNavControl = { order: 1000, @@ -59,7 +54,7 @@ export class GlobalSearchBarPlugin implements Plugin<{}, {}> { basePathUrl={http.basePath.prepend('/plugins/globalSearchBar/assets/')} darkMode={uiSettings.get('theme:darkMode')} chromeStyle$={core.chrome.getChromeStyle$()} - trackUiMetric={trackUiMetric} + reportEvent={reportEvent} /> , diff --git a/x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts b/x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts new file mode 100644 index 00000000000000..75c688ece9ab7c --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts @@ -0,0 +1,140 @@ +/* + * 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 { METRIC_TYPE } from '@kbn/analytics'; +import { AnalyticsServiceStart } from '@kbn/core/public'; +import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; +import { + ClickMetric, + CountMetric, + EventMetric, + FieldType, + TrackedApplicationClick, + TrackedError, + TrackedSavedObjectClick, + TrackUiMetricFn, +} from '../types'; + +export class EventReporter { + private reportEvent: AnalyticsServiceStart['reportEvent']; + private trackUiMetric: TrackUiMetricFn; + private focusStart = Infinity; + + constructor({ + analytics, + usageCollection, + }: { + analytics: AnalyticsServiceStart; + usageCollection: UsageCollectionSetup | undefined; + }) { + this.reportEvent = analytics.reportEvent; + + if (usageCollection) { + this.trackUiMetric = (metricType, eventName, context) => { + let counter: [string, string | [string, string]]; + switch (eventName) { + case ClickMetric.USER_NAVIGATED_TO_APPLICATION: + case ClickMetric.USER_NAVIGATED_TO_SAVED_OBJECT: + counter = [metricType, [eventName, `${eventName}_${context}`]]; + break; + default: + // track simple UI Counter metrics + counter = [metricType, eventName]; + } + usageCollection.reportUiCounter('global_search_bar', ...counter); + }; + } else { + this.trackUiMetric = () => {}; + } + } + + /** + * Called when the text input component has the cursor focused + */ + public searchFocus() { + this.trackUiMetric(METRIC_TYPE.COUNT, CountMetric.SEARCH_FOCUS); + + this.focusStart = Date.now(); + } + + /** + * Called when the text input component has lost focus + */ + public searchBlur() { + const focusTime = Date.now() - this.focusStart; + if (focusTime > 0) { + this.reportEvent(EventMetric.SEARCH_BLUR, { + [FieldType.FOCUS_TIME]: focusTime, + }); + } + + // reset internal states + this.focusStart = Infinity; + } + + /** + * Called on each keystroke as the user changes the search terms + */ + public searchRequest() { + this.trackUiMetric(METRIC_TYPE.COUNT, CountMetric.SEARCH_REQUEST); + } + + /** + * Called when the users uses the shortcut to make the search bar visible and focus the cursor + */ + public shortcutUsed() { + this.trackUiMetric(METRIC_TYPE.COUNT, CountMetric.SHORTCUT_USED); + } + + /** + * Called when the users selects an application in their search results + */ + public navigateToApplication(context: TrackedApplicationClick) { + const application = context?.application ?? 'unknown'; + + this.trackUiMetric(METRIC_TYPE.CLICK, ClickMetric.USER_NAVIGATED_TO_APPLICATION, application); + + const terms = context?.searchValue ?? ''; + this.reportEvent(EventMetric.CLICK_APPLICATION, { + [FieldType.TERMS]: terms, + [FieldType.APPLICATION]: application, + [FieldType.SELECTED_RANK]: context.selectedRank, + [FieldType.SELECTED_LABEL]: context.selectedLabel, + }); + } + + /** + * Called when the users selects Saved Object in their search results + */ + public navigateToSavedObject(context: TrackedSavedObjectClick) { + const type = context?.type ?? 'unknown'; + + this.trackUiMetric(METRIC_TYPE.CLICK, ClickMetric.USER_NAVIGATED_TO_SAVED_OBJECT, type); + + const terms = context?.searchValue ?? ''; + this.reportEvent(EventMetric.CLICK_SAVED_OBJECT, { + [FieldType.TERMS]: terms, + [FieldType.SAVED_OBJECT_TYPE]: type, + [FieldType.SELECTED_RANK]: context.selectedRank, + [FieldType.SELECTED_LABEL]: context.selectedLabel, + }); + } + + /** + * Called from error handlers + */ + public error(context: TrackedError | undefined) { + this.trackUiMetric(METRIC_TYPE.COUNT, CountMetric.UNHANDLED_ERROR); + + const message = context?.message.toString() ?? 'unknown'; + const terms = context?.searchValue ?? ''; + this.reportEvent(EventMetric.ERROR, { + [FieldType.TERMS]: terms, + [FieldType.ERROR_MESSAGE]: message, + }); + } +} diff --git a/x-pack/plugins/global_search_bar/public/telemetry/event_types.ts b/x-pack/plugins/global_search_bar/public/telemetry/event_types.ts new file mode 100644 index 00000000000000..bae58ca05b9504 --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/telemetry/event_types.ts @@ -0,0 +1,99 @@ +/* + * 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 { RootSchema } from '@kbn/analytics-client'; +import { EventTypeOpts } from '@kbn/core/public'; +import { EventMetric, FieldType } from '../types'; + +const fields: Record>> = { + [FieldType.APPLICATION]: { + [FieldType.APPLICATION]: { + type: 'keyword', + _meta: { + description: 'The name of the application selected in the global search bar results.', + }, + }, + }, + [FieldType.SAVED_OBJECT_TYPE]: { + [FieldType.SAVED_OBJECT_TYPE]: { + type: 'keyword', + _meta: { + description: 'The type of the saved object selected in the global search bar results.', + }, + }, + }, + [FieldType.FOCUS_TIME]: { + [FieldType.FOCUS_TIME]: { + type: 'long', + _meta: { + description: 'The length in milliseconds the global search bar had the cursor focused.', + }, + }, + }, + [FieldType.SELECTED_RANK]: { + [FieldType.SELECTED_RANK]: { + type: 'short', + _meta: { + description: 'The ranking of placement of the selected option in the results list.', + }, + }, + }, + [FieldType.SELECTED_LABEL]: { + [FieldType.SELECTED_LABEL]: { + type: 'keyword', + _meta: { + description: 'The text of the selected option in the results list.', + }, + }, + }, + [FieldType.ERROR_MESSAGE]: { + [FieldType.ERROR_MESSAGE]: { + type: 'keyword', + _meta: { description: 'A message from an error that was caught.' }, + }, + }, + [FieldType.TERMS]: { + [FieldType.TERMS]: { + type: 'keyword', + _meta: { description: 'The search terms entered by the user.' }, + }, + }, +}; + +export const eventTypes: Array>> = [ + { + eventType: EventMetric.CLICK_APPLICATION, + schema: { + ...fields[FieldType.APPLICATION], + ...fields[FieldType.TERMS], + ...fields[FieldType.SELECTED_RANK], + ...fields[FieldType.SELECTED_LABEL], + }, + }, + { + eventType: EventMetric.CLICK_SAVED_OBJECT, + schema: { + ...fields[FieldType.SAVED_OBJECT_TYPE], + ...fields[FieldType.TERMS], + ...fields[FieldType.SELECTED_RANK], + ...fields[FieldType.SELECTED_LABEL], + }, + }, + { + eventType: EventMetric.SEARCH_BLUR, + schema: { + ...fields[FieldType.FOCUS_TIME], + }, + }, + { + eventType: EventMetric.ERROR, + schema: { + ...fields[FieldType.ERROR_MESSAGE], + ...fields[FieldType.TERMS], + }, + }, +]; diff --git a/x-pack/plugins/global_search_bar/public/telemetry/index.ts b/x-pack/plugins/global_search_bar/public/telemetry/index.ts new file mode 100644 index 00000000000000..76110528bb7c9e --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/telemetry/index.ts @@ -0,0 +1,9 @@ +/* + * 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 { EventReporter } from './event_reporter'; +export { eventTypes } from './event_types'; diff --git a/x-pack/plugins/global_search_bar/public/telemetry/telmetry.test.tsx b/x-pack/plugins/global_search_bar/public/telemetry/telmetry.test.tsx new file mode 100644 index 00000000000000..6eec366dc5ab20 --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/telemetry/telmetry.test.tsx @@ -0,0 +1,330 @@ +/* + * 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 { ChromeStyle } from '@kbn/core-chrome-browser'; +import { applicationServiceMock, coreMock } from '@kbn/core/public/mocks'; +import { GlobalSearchBatchedResults, GlobalSearchResult } from '@kbn/global-search-plugin/public'; +import { globalSearchPluginMock } from '@kbn/global-search-plugin/public/mocks'; +import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; +import { usageCollectionPluginMock } from '@kbn/usage-collection-plugin/public/mocks'; +import { act, fireEvent, render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import React from 'react'; +import { of, throwError } from 'rxjs'; +import { EventReporter } from '.'; +import { SearchBar } from '../components/search_bar'; + +jest.mock( + 'react-virtualized-auto-sizer', + () => + ({ children }: any) => + children({ height: 600, width: 600 }) +); + +type Result = { id: string; type: string } | string; + +const createResult = (result: Result): GlobalSearchResult => { + const id = typeof result === 'string' ? result : result.id; + const type = typeof result === 'string' ? 'application' : result.type; + const meta = type === 'application' ? { categoryLabel: 'Kibana' } : { categoryLabel: null }; + + return { + id, + type, + title: id, + url: `/app/test/${id}`, + score: 42, + meta, + }; +}; + +const createBatch = (...results: Result[]): GlobalSearchBatchedResults => ({ + results: results.map(createResult), +}); + +describe('SearchBar', () => { + const usageCollection = usageCollectionPluginMock.createSetupContract(); + const core = coreMock.createStart(); + const basePathUrl = '/plugins/globalSearchBar/assets/'; + const darkMode = false; + let searchService: ReturnType; + let applications: ReturnType; + let mockReportUiCounter: typeof usageCollection.reportUiCounter; + let mockReportEvent: typeof core.analytics.reportEvent; + let eventReporter: EventReporter; + let chromeStyle$ = of('classic'); + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(() => { + applications = applicationServiceMock.createStartContract(); + searchService = globalSearchPluginMock.createStartContract(); + + mockReportUiCounter = jest.fn(); + usageCollection.reportUiCounter = mockReportUiCounter; + + mockReportEvent = jest.fn(); + core.analytics.reportEvent = mockReportEvent; + + eventReporter = new EventReporter({ analytics: core.analytics, usageCollection }); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + const focusAndUpdate = async () => { + await act(async () => { + (await screen.findByTestId('nav-search-input')).focus(); + jest.runAllTimers(); + }); + }; + + const simulateTypeChar = (text: string) => { + fireEvent.input(screen.getByTestId('nav-search-input'), { target: { value: text } }); + act(() => { + jest.runAllTimers(); + }); + }; + + describe('chromeStyle: classic', () => { + it('calling results', async () => { + searchService.find + .mockReturnValueOnce( + of( + createBatch('Discover', 'Canvas'), + createBatch({ id: 'Visualize', type: 'test' }, 'Graph') + ) + ) + .mockReturnValueOnce(of(createBatch('Discover', { id: 'My Dashboard', type: 'test' }))); + + render( + + + + ); + + await focusAndUpdate(); + + simulateTypeChar('d'); + + expect(mockReportUiCounter).nthCalledWith(1, 'global_search_bar', 'count', 'search_focus'); + expect(mockReportUiCounter).nthCalledWith(2, 'global_search_bar', 'count', 'search_request'); + expect(mockReportUiCounter).toHaveBeenCalledTimes(2); + }); + + it('keyboard shortcut', async () => { + render( + + + + ); + + await act(async () => { + fireEvent.keyDown(window, { key: '/', ctrlKey: true, metaKey: true }); + expect(await screen.findByTestId('nav-search-input')).toEqual(document.activeElement); + }); + + expect(mockReportUiCounter).nthCalledWith(1, 'global_search_bar', 'count', 'shortcut_used'); + expect(mockReportUiCounter).nthCalledWith(2, 'global_search_bar', 'count', 'search_focus'); + expect(mockReportUiCounter).toHaveBeenCalledTimes(2); + }); + + it('tracks the application navigated to', async () => { + searchService.find.mockReturnValueOnce( + of(createBatch('Discover', { id: 'My Dashboard', type: 'test' })) + ); + + render( + + + + ); + + jest.spyOn(Date, 'now').mockReturnValue(1000); + + await focusAndUpdate(); + + jest.spyOn(Date, 'now').mockReturnValue(2000); + + fireEvent.click(await screen.findByTestId('nav-search-option')); + + expect(mockReportEvent).nthCalledWith(1, 'global_search_bar_click_application', { + selected_rank: 1, + selected_label: 'Discover', + application: 'discover', + terms: '', + }); + expect(mockReportEvent).nthCalledWith(2, 'global_search_bar_blur', { + focus_time_ms: 1000, + }); + expect(mockReportEvent).toHaveBeenCalledTimes(2); + }); + + it(`tracks the user's search term`, async () => { + searchService.find.mockReturnValueOnce( + of(createBatch('Discover', { id: 'My Dashboard', type: 'test' })) + ); + + render( + + + + ); + + jest.spyOn(Date, 'now').mockReturnValue(1000); + + await focusAndUpdate(); + userEvent.type(await screen.findByTestId('nav-search-input'), 'Ahoy!'); + + jest.spyOn(Date, 'now').mockReturnValue(2000); + + fireEvent.click(await screen.findByTestId('nav-search-option')); + + expect(mockReportEvent).nthCalledWith(1, 'global_search_bar_click_application', { + selected_rank: 1, + selected_label: 'Discover', + application: 'discover', + terms: 'Ahoy!', + }); + expect(mockReportEvent).nthCalledWith(2, 'global_search_bar_blur', { + focus_time_ms: 1000, + }); + expect(mockReportEvent).toHaveBeenCalledTimes(2); + }); + + it('errors', async () => { + searchService.find.mockReturnValueOnce(throwError(() => new Error('service unavailable :('))); + + render( + + + + ); + + userEvent.type(await screen.findByTestId('nav-search-input'), 'Ahoy!'); + + await focusAndUpdate(); + + expect(mockReportEvent).nthCalledWith(1, 'global_search_bar_error', { + error_message: 'Error: service unavailable :(', + terms: 'Ahoy!', + }); + expect(mockReportEvent).toHaveBeenCalledTimes(1); + }); + + describe('chromeStyle: project', () => { + beforeEach(() => { + chromeStyle$ = of('project'); + }); + + it('keyboard shortcut expsoses the component and focuses the text input', async () => { + render( + + + + ); + + act(() => { + fireEvent.keyDown(window, { key: '/', ctrlKey: true, metaKey: true }); + }); + + const inputElement = await screen.findByTestId('nav-search-input'); + + expect(document.activeElement).toEqual(inputElement); + + fireEvent.click(await screen.findByTestId('nav-search-conceal')); + expect(screen.queryAllByTestId('nav-search-input')).toHaveLength(0); + + expect(mockReportUiCounter).nthCalledWith(1, 'global_search_bar', 'count', 'shortcut_used'); + expect(mockReportUiCounter).nthCalledWith(2, 'global_search_bar', 'count', 'search_focus'); + expect(mockReportUiCounter).toHaveBeenCalledTimes(2); + }); + + it('show/hide', async () => { + render( + + + + ); + + jest.spyOn(Date, 'now').mockReturnValue(1000); + + fireEvent.click(await screen.findByTestId('nav-search-reveal')); + expect(await screen.findByTestId('nav-search-input')).toBeVisible(); + + jest.spyOn(Date, 'now').mockReturnValue(2000); + + fireEvent.click(await screen.findByTestId('nav-search-conceal')); + expect(screen.queryAllByTestId('nav-search-input')).toHaveLength(0); + + expect(mockReportUiCounter).nthCalledWith(1, 'global_search_bar', 'count', 'search_focus'); + expect(mockReportUiCounter).toHaveBeenCalledTimes(1); + + expect(mockReportEvent).nthCalledWith(1, 'global_search_bar_blur', { + focus_time_ms: 1000, + }); + expect(mockReportEvent).toHaveBeenCalledTimes(1); + }); + }); + }); +}); diff --git a/x-pack/plugins/global_search_bar/public/types.ts b/x-pack/plugins/global_search_bar/public/types.ts index 56671e82afeb76..2a5a0a52c81aa0 100644 --- a/x-pack/plugins/global_search_bar/public/types.ts +++ b/x-pack/plugins/global_search_bar/public/types.ts @@ -7,7 +7,62 @@ import { UiCounterMetricType } from '@kbn/analytics'; +/* @internal */ +export enum CountMetric { + UNHANDLED_ERROR = 'unhandled_error', + SHORTCUT_USED = 'shortcut_used', + SEARCH_FOCUS = 'search_focus', + SEARCH_REQUEST = 'search_request', +} + +/* @internal */ +export enum ClickMetric { + USER_NAVIGATED_TO_APPLICATION = 'user_navigated_to_application', + USER_NAVIGATED_TO_SAVED_OBJECT = 'user_navigated_to_saved_object', +} + +/* @internal */ +export enum EventMetric { + CLICK_APPLICATION = 'global_search_bar_click_application', + CLICK_SAVED_OBJECT = 'global_search_bar_click_saved_object', + SEARCH_BLUR = 'global_search_bar_blur', + ERROR = 'global_search_bar_error', +} + +/* @internal */ +export enum FieldType { + APPLICATION = 'application', + SAVED_OBJECT_TYPE = 'saved_object_type', + FOCUS_TIME = 'focus_time_ms', + SELECTED_LABEL = 'selected_label', + SELECTED_RANK = 'selected_rank', + ERROR_MESSAGE = 'error_message', + TERMS = 'terms', +} + +/* @internal */ export type TrackUiMetricFn = ( metricType: UiCounterMetricType, - eventName: string | string[] + eventName: CountMetric | ClickMetric, + context?: string ) => void; + +/* @internal */ +export interface TrackedApplicationClick { + application: string; + searchValue: string; + selectedLabel: string | null; + selectedRank: number | null; +} +/* @internal */ +export interface TrackedSavedObjectClick { + type: string; + searchValue: string; + selectedLabel: string | null; + selectedRank: number | null; +} +/* @internal */ +export interface TrackedError { + message: string | Error; + searchValue?: string; +} diff --git a/x-pack/plugins/global_search_bar/tsconfig.json b/x-pack/plugins/global_search_bar/tsconfig.json index daa4baf21a718d..1084a9b1139d6a 100644 --- a/x-pack/plugins/global_search_bar/tsconfig.json +++ b/x-pack/plugins/global_search_bar/tsconfig.json @@ -15,6 +15,7 @@ "@kbn/i18n", "@kbn/saved-objects-tagging-oss-plugin", "@kbn/core-chrome-browser", + "@kbn/analytics-client", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/infra/public/alerting/inventory/components/expression_chart.tsx b/x-pack/plugins/infra/public/alerting/inventory/components/expression_chart.tsx index a2f7107a0b59c0..805fd616aff06e 100644 --- a/x-pack/plugins/infra/public/alerting/inventory/components/expression_chart.tsx +++ b/x-pack/plugins/infra/public/alerting/inventory/components/expression_chart.tsx @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { Axis, Chart, niceTimeFormatter, Position, Settings } from '@elastic/charts'; +import { Axis, Chart, niceTimeFormatter, Position, Settings, Tooltip } from '@elastic/charts'; import { EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { first, last } from 'lodash'; @@ -192,7 +192,8 @@ export const ExpressionChart: React.FC = ({ tickFormat={dateFormatter} /> - + +
diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/alert_details_app_section/components/logs_ratio_chart.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/alert_details_app_section/components/logs_ratio_chart.tsx index a6fc149889038d..08957bdd4cd69f 100644 --- a/x-pack/plugins/infra/public/alerting/log_threshold/components/alert_details_app_section/components/logs_ratio_chart.tsx +++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/alert_details_app_section/components/logs_ratio_chart.tsx @@ -15,6 +15,7 @@ import { Settings, Position, AnnotationDomainType, + Tooltip, } from '@elastic/charts'; import React, { ReactElement, useEffect, useMemo } from 'react'; import { useIsDarkMode } from '../../../../../hooks/use_is_dark_mode'; @@ -227,7 +228,8 @@ const LogsRatioChart: React.FC = ({ tickFormat={yAxisFormatter} domain={chartDomain} /> - + + ); diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion_preview_chart.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion_preview_chart.tsx index 52b21b9d24693a..b8dbc56402b2b7 100644 --- a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion_preview_chart.tsx +++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion_preview_chart.tsx @@ -17,6 +17,7 @@ import { Settings, RectAnnotation, LineAnnotation, + Tooltip, } from '@elastic/charts'; import { EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -330,7 +331,8 @@ const CriterionPreviewChart: React.FC = ({ tickFormat={yAxisFormatter} domain={chartDomain} /> - + + {!executionTimeRange && ( diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx index 169b2b2ef949b9..785ba83e3837ec 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx @@ -14,6 +14,7 @@ import { Position, RectAnnotation, Settings, + Tooltip, } from '@elastic/charts'; import { EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -193,9 +194,9 @@ export const ExpressionChart: React.FC = ({ tickFormat={createFormatterForMetric(metric)} domain={domain} /> + { const isDarkMode = useIsDarkMode(); const metrics = series.map((chartSeries) => chartSeries.metric); - const tooltipProps: TooltipProps = { - headerFormatter: ({ value }) => moment(value).format('Y-MM-DD HH:mm:ss.SSS'), - }; return ( <> @@ -90,13 +87,12 @@ export const ChartSection = ({ tickFormat={tickFormatter} domain={domain} ticks={6} - showGridLines - /> - + moment(value).format('Y-MM-DD HH:mm:ss.SSS')} /> + ); diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/single_metric_sparkline.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/single_metric_sparkline.tsx index 7313f0ee19a78d..d95b19741258fe 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/single_metric_sparkline.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/single_metric_sparkline.tsx @@ -6,7 +6,7 @@ */ import React, { useMemo } from 'react'; -import { Chart, Settings, AreaSeries, ScaleType, TooltipType } from '@elastic/charts'; +import { Chart, Settings, AreaSeries, ScaleType, TooltipType, Tooltip } from '@elastic/charts'; import { EUI_CHARTS_THEME_LIGHT, EUI_SPARKLINE_THEME_PARTIAL, @@ -54,7 +54,8 @@ export const SingleMetricSparkline: React.FunctionComponent<{ return ( - + + { ) : ( - + ); diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_content.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_content.tsx index e12c3a85fb0bcd..f0d9356ba6ac68 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_content.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_content.tsx @@ -36,7 +36,7 @@ export const HostsContent = () => { - + diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx index b18c6c37b53f10..d75fca31ce4d8f 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx @@ -40,12 +40,10 @@ export const HostsTable = () => { return ( <> - {selectedItemsCount > 0 && ( - - )} + { @@ -24,6 +26,7 @@ interface FilterActionProps { } export const FilterAction = ({ selectedItemsCount, filterSelectedHosts }: FilterActionProps) => { + const { euiTheme } = useEuiTheme(); const [isPopoverOpen, { off: closePopover, toggle: togglePopover }] = useBoolean(false); const onAddFilterClick = () => { @@ -32,32 +35,55 @@ export const FilterAction = ({ selectedItemsCount, filterSelectedHosts }: Filter }; return ( - + 0, + })} + button={ + + {selectedHostsLabel(selectedItemsCount)} + + } + > togglePopover()} + data-test-subj="hostsViewTableAddFilterButton" + iconType="filter" + onClick={onAddFilterClick} > - {selectedHostsLabel(selectedItemsCount)} + {i18n.translate('xpack.infra.hostsViewPage.table.addFilter', { + defaultMessage: 'Add filter', + })} - } - > - - {i18n.translate('xpack.infra.hostsViewPage.table.addFilter', { - defaultMessage: 'Add filter', - })} - - + +
); }; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/chart_section.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/chart_section.tsx index ac7c11d0133a8b..ef4b7874eba32e 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/chart_section.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/chart_section.tsx @@ -14,12 +14,13 @@ import { Settings, TickFormatter, TooltipProps, + Tooltip, } from '@elastic/charts'; import moment from 'moment'; import React from 'react'; import { useIsDarkMode } from '../../../../../../../hooks/use_is_dark_mode'; import { MetricsExplorerSeries } from '../../../../../../../../common/http_api'; -import { getTimelineChartTheme } from '../../../../../../../utils/get_chart_theme'; +import { getTimelineChartThemes } from '../../../../../../../utils/get_chart_theme'; import { MetricExplorerSeriesChart } from '../../../../../metrics_explorer/components/series_chart'; import { MetricsExplorerChartType, @@ -89,13 +90,10 @@ export const ChartSection = ({ tickFormat={tickFormatter} domain={domain} ticks={6} - showGridLines - /> - + + ); diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row_charts.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row_charts.tsx index 2a185f729f76e6..043c7f945da47a 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row_charts.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row_charts.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { Axis, Chart, niceTimeFormatter, Position, Settings, TooltipProps } from '@elastic/charts'; +import { Axis, Chart, niceTimeFormatter, Position, Settings, Tooltip } from '@elastic/charts'; import { EuiDescriptionListDescription, EuiDescriptionListTitle, @@ -95,10 +95,6 @@ const ProcessChart = ({ timeseries, color, label }: ProcessChartProps) => { const yAxisFormatter = createFormatter('percent'); - const tooltipProps: TooltipProps = { - headerFormatter: ({ value }) => moment(value).format('Y-MM-DD HH:mm:ss.SSS'), - }; - const dataDomain = calculateDomain(timeseries, [chartMetric], false); const domain = dataDomain ? { @@ -129,9 +125,10 @@ const ProcessChart = ({ timeseries, color, label }: ProcessChartProps) => { tickFormat={yAxisFormatter} domain={domain} ticks={6} - showGridLines + gridLine={{ visible: true }} /> - + moment(value).format('Y-MM-DD HH:mm:ss.SSS')} /> + ); diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx index 460065668ee197..466064772cb390 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx @@ -22,6 +22,7 @@ import { RectAnnotationDatum, XYChartElementEvent, TooltipProps, + Tooltip, } from '@elastic/charts'; import { EuiFlexItem } from '@elastic/eui'; import { EuiFlexGroup } from '@elastic/eui'; @@ -37,7 +38,7 @@ import { useWaffleTimeContext } from '../../hooks/use_waffle_time'; import { useWaffleFiltersContext } from '../../hooks/use_waffle_filters'; import { MetricExplorerSeriesChart } from '../../../metrics_explorer/components/series_chart'; import { MetricsExplorerChartType } from '../../../metrics_explorer/hooks/use_metrics_explorer_options'; -import { getTimelineChartTheme } from '../../../../../utils/get_chart_theme'; +import { getTimelineChartThemes } from '../../../../../utils/get_chart_theme'; import { calculateDomain } from '../../../metrics_explorer/components/helpers/calculate_domain'; import { InfraFormatter } from '../../../../../lib/lib'; import { useMetricsHostsAnomaliesResults } from '../../hooks/use_metrics_hosts_anomalies'; @@ -291,13 +292,10 @@ export const Timeline: React.FC = ({ interval, yAxisFormatter, isVisible tickFormat={yAxisFormatter} domain={domain} ticks={6} - showGridLines - /> - + + diff --git a/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/chart_section_vis.tsx b/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/chart_section_vis.tsx index 66d18cedca356a..0e5cf39f47503e 100644 --- a/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/chart_section_vis.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/chart_section_vis.tsx @@ -16,6 +16,7 @@ import { Settings, BrushEndListener, TooltipProps, + Tooltip, } from '@elastic/charts'; import { EuiPageContentBody_Deprecated as EuiPageContentBody } from '@elastic/eui'; import { useIsDarkMode } from '../../../../hooks/use_is_dark_mode'; @@ -131,8 +132,8 @@ export const ChartSectionVis = ({ stack={stacked} /> ))} + - + + ) : options.metrics.length > 0 ? ( diff --git a/x-pack/plugins/infra/public/utils/get_chart_theme.ts b/x-pack/plugins/infra/public/utils/get_chart_theme.ts index 48fd23c0fce7fd..ca9253368c7cde 100644 --- a/x-pack/plugins/infra/public/utils/get_chart_theme.ts +++ b/x-pack/plugins/infra/public/utils/get_chart_theme.ts @@ -5,23 +5,13 @@ * 2.0. */ -import { - Theme, - PartialTheme, - LIGHT_THEME, - DARK_THEME, - mergeWithDefaultTheme, -} from '@elastic/charts'; +import { Theme, PartialTheme, LIGHT_THEME, DARK_THEME, SettingsProps } from '@elastic/charts'; // TODO use the EUI charts theme see src/plugins/charts/public/services/theme/README.md export function getChartTheme(isDarkMode: boolean): Theme { return isDarkMode ? DARK_THEME : LIGHT_THEME; } -export function getTimelineChartTheme(isDarkMode: boolean): Theme { - return isDarkMode ? DARK_THEME : mergeWithDefaultTheme(TIMELINE_LIGHT_THEME, LIGHT_THEME); -} - const TIMELINE_LIGHT_THEME: PartialTheme = { crosshair: { band: { @@ -36,3 +26,15 @@ const TIMELINE_LIGHT_THEME: PartialTheme = { }, }, }; + +export const getTimelineChartThemes = ( + isDarkMode: boolean +): Pick => + isDarkMode + ? { + baseTheme: DARK_THEME, + } + : { + baseTheme: LIGHT_THEME, + theme: TIMELINE_LIGHT_THEME, + }; diff --git a/x-pack/plugins/ml/common/constants/messages.test.ts b/x-pack/plugins/ml/common/constants/messages.test.ts index b0df17111bc0dd..4a93a553f6761c 100644 --- a/x-pack/plugins/ml/common/constants/messages.test.ts +++ b/x-pack/plugins/ml/common/constants/messages.test.ts @@ -63,6 +63,7 @@ describe('Constants: Messages parseMessages()', () => { { id: 'job_id_invalid', status: 'error', + heading: 'Job ID', text: 'Job ID is invalid. It can contain lowercase alphanumeric (a-z and 0-9) characters, hyphens or underscores and must start and end with an alphanumeric character.', url: 'https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/ml-put-job.html#ml-put-job-path-parms', }, @@ -114,6 +115,7 @@ describe('Constants: Messages parseMessages()', () => { fieldName: 'order_id', id: 'cardinality_partition_field', status: 'warning', + heading: 'Partition field cardinality', text: 'Cardinality of partition_field "order_id" is above 1000 and might result in high memory usage.', url: 'https://www.elastic.co/guide/en/machine-learning/mocked-test-branch/ml-ad-run-jobs.html#ml-ad-cardinality', }, @@ -135,13 +137,15 @@ describe('Constants: Messages parseMessages()', () => { { id: 'success_influencers', status: 'success', - text: 'Influencer configuration passed the validation checks.', + heading: 'Influencer configuration', + text: 'Passed the validation checks.', url: 'https://www.elastic.co/guide/en/machine-learning/mocked-test-branch/ml-ad-run-jobs.html#ml-ad-influencers', }, { id: 'half_estimated_mml_greater_than_mml', mml: '1MB', status: 'warning', + heading: 'Model memory limit', text: 'The specified model memory limit is less than half of the estimated model memory limit and will likely hit the hard limit.', url: 'https://www.elastic.co/guide/en/machine-learning/mocked-test-branch/ml-ad-run-jobs.html#ml-ad-model-memory-limits', }, diff --git a/x-pack/plugins/ml/common/constants/messages.ts b/x-pack/plugins/ml/common/constants/messages.ts index b372f172d5e130..8eafbccc9bee99 100644 --- a/x-pack/plugins/ml/common/constants/messages.ts +++ b/x-pack/plugins/ml/common/constants/messages.ts @@ -51,6 +51,12 @@ export const getMessages = once((docLinks?: DocLinksStart) => { return { categorizer_detector_missing_per_partition_field: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.categorizerMissingPerPartitionFieldHeading', + { + defaultMessage: 'Per-partition categorization', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.categorizerMissingPerPartitionFieldMessage', { @@ -62,11 +68,17 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, categorizer_varying_per_partition_fields: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.categorizerVaryingPerPartitionFieldNamesHeading', + { + defaultMessage: 'Per-partition categorization', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.categorizerVaryingPerPartitionFieldNamesMessage', { defaultMessage: - 'Detectors with keyword "mlcategory" cannot have different partition_field_name when per-partition categorization is enabled. Found [{fields}].', + 'Detectors with keyword "mlcategory " cannot have different partition_field_name when per-partition categorization is enabled. Found [{fields}].', values: { fields: '"{{fields}}"', @@ -77,8 +89,14 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, field_not_aggregatable: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.fieldNotAggregatableHeading', + { + defaultMessage: 'Detector field', + } + ), text: i18n.translate('xpack.ml.models.jobValidation.messages.fieldNotAggregatableMessage', { - defaultMessage: 'Detector field {fieldName} is not an aggregatable field.', + defaultMessage: '{fieldName} is not an aggregatable field.', values: { fieldName: '"{{fieldName}}"', }, @@ -87,6 +105,12 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, fields_not_aggregatable: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.fieldsNotAggregatableHeading', + { + defaultMessage: 'Detector fields', + } + ), text: i18n.translate('xpack.ml.models.jobValidation.messages.fieldsNotAggregatableMessage', { defaultMessage: 'One of the detector fields is not an aggregatable field.', }), @@ -125,6 +149,9 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, cardinality_by_field: { status: VALIDATION_STATUS.WARNING, + heading: i18n.translate('xpack.ml.models.jobValidation.messages.cardinalityByFieldHeading', { + defaultMessage: 'Field cardinality', + }), text: i18n.translate('xpack.ml.models.jobValidation.messages.cardinalityByFieldMessage', { defaultMessage: 'Cardinality of {fieldName} is above 1000 and might result in high memory usage.', @@ -136,6 +163,12 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, cardinality_over_field_low: { status: VALIDATION_STATUS.WARNING, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.cardinalityOverFieldLowHeading', + { + defaultMessage: 'Over field cardinality', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.cardinalityOverFieldLowMessage', { @@ -150,6 +183,12 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, cardinality_over_field_high: { status: VALIDATION_STATUS.WARNING, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.cardinalityOverFieldHighHeading', + { + defaultMessage: 'Over field cardinality', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.cardinalityOverFieldHighMessage', { @@ -164,6 +203,12 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, cardinality_partition_field: { status: VALIDATION_STATUS.WARNING, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.cardinalityPartitionFieldHeading', + { + defaultMessage: 'Partition field cardinality', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.cardinalityPartitionFieldMessage', { @@ -192,21 +237,33 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, categorization_filters_valid: { status: VALIDATION_STATUS.SUCCESS, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.categorizationFiltersValidHeading', + { + defaultMessage: 'Categorization filters', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.categorizationFiltersValidMessage', { - defaultMessage: 'Categorization filters checks passed.', + defaultMessage: 'All checks passed.', } ), url: docLinks?.links.ml.anomalyDetectionConfiguringCategories, }, categorization_filters_invalid: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.categorizationFiltersInvalidHeading', + { + defaultMessage: 'Categorization filters', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.categorizationFiltersInvalidMessage', { defaultMessage: - 'The categorization filters configuration is invalid. ' + + 'Configuration is invalid. ' + 'Make sure filters are valid regular expressions and {categorizationFieldName} is set.', values: { categorizationFieldName: '"categorization_field_name"', @@ -217,6 +274,9 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, bucket_span_empty: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate('xpack.ml.models.jobValidation.messages.bucketSpanEmptyHeading', { + defaultMessage: 'Bucket span', + }), text: i18n.translate('xpack.ml.models.jobValidation.messages.bucketSpanEmptyMessage', { defaultMessage: 'The bucket span field must be specified.', }), @@ -280,6 +340,9 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, detectors_duplicates: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate('xpack.ml.models.jobValidation.messages.detectorsDuplicatesHeading', { + defaultMessage: 'Detector duplicates', + }), text: i18n.translate('xpack.ml.models.jobValidation.messages.detectorsDuplicatesMessage', { defaultMessage: 'Duplicate detectors were found. Detectors having the same combined configuration for ' + @@ -297,6 +360,9 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, detectors_empty: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate('xpack.ml.models.jobValidation.messages.detectorsEmptyHeading', { + defaultMessage: 'Detectors', + }), text: i18n.translate('xpack.ml.models.jobValidation.messages.detectorsEmptyMessage', { defaultMessage: 'No detectors were found. At least one detector must be specified.', }), @@ -304,6 +370,12 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, detectors_function_empty: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.detectorsFunctionEmptyHeading', + { + defaultMessage: 'Detector functions', + } + ), text: i18n.translate('xpack.ml.models.jobValidation.messages.detectorsFunctionEmptyMessage', { defaultMessage: 'One of the detector functions is empty.', }), @@ -339,6 +411,9 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, influencer_high: { status: VALIDATION_STATUS.WARNING, + heading: i18n.translate('xpack.ml.models.jobValidation.messages.influencerHighHeading', { + defaultMessage: 'Influencers', + }), text: i18n.translate('xpack.ml.models.jobValidation.messages.influencerHighMessage', { defaultMessage: 'The job configuration includes more than 3 influencers. ' + @@ -348,6 +423,9 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, influencer_low: { status: VALIDATION_STATUS.WARNING, + heading: i18n.translate('xpack.ml.models.jobValidation.messages.influencerLowHeading', { + defaultMessage: 'Influencers', + }), text: i18n.translate('xpack.ml.models.jobValidation.messages.influencerLowMessage', { defaultMessage: 'No influencers have been configured. Picking an influencer is strongly recommended.', @@ -356,6 +434,12 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, influencer_low_suggestion: { status: VALIDATION_STATUS.WARNING, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.influencerLowSuggestionHeading', + { + defaultMessage: 'Influencers', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.influencerLowSuggestionMessage', { @@ -368,6 +452,12 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, influencer_low_suggestions: { status: VALIDATION_STATUS.WARNING, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.influencerLowSuggestionsHeading', + { + defaultMessage: 'Influencers', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.influencerLowSuggestionsMessage', { @@ -380,13 +470,19 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, job_id_empty: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate('xpack.ml.models.jobValidation.messages.jobIdEmptyHeading', { + defaultMessage: 'Job ID', + }), text: i18n.translate('xpack.ml.models.jobValidation.messages.jobIdEmptyMessage', { - defaultMessage: 'Job ID field must not be empty.', + defaultMessage: 'Field must not be empty.', }), url: docLinks?.links.ml.anomalyDetectionJobResource, }, job_id_invalid: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate('xpack.ml.models.jobValidation.messages.jobIdInvalidHeading', { + defaultMessage: 'Job ID', + }), text: i18n.translate('xpack.ml.models.jobValidation.messages.jobIdInvalidMessage', { defaultMessage: 'Job ID is invalid. It can contain lowercase alphanumeric (a-z and 0-9) characters, ' + @@ -396,6 +492,12 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, job_id_invalid_max_length: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.jobIdInvalidMaxLengthErrorHeading', + { + defaultMessage: 'Job ID', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.jobIdInvalidMaxLengthErrorMessage', { @@ -426,6 +528,9 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, job_group_id_invalid: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate('xpack.ml.models.jobValidation.messages.jobGroupIdInvalidHeading', { + defaultMessage: 'Group name', + }), text: i18n.translate('xpack.ml.models.jobValidation.messages.jobGroupIdInvalidMessage', { defaultMessage: 'One of the job group names is invalid. They can contain lowercase ' + @@ -435,6 +540,12 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, job_group_id_invalid_max_length: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.jobGroupIdInvalidMaxLengthErrorHeading', + { + defaultMessage: 'Group name', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.jobGroupIdInvalidMaxLengthErrorMessage', { @@ -503,8 +614,11 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, success_influencers: { status: VALIDATION_STATUS.SUCCESS, + heading: i18n.translate('xpack.ml.models.jobValidation.messages.successInfluencersHeading', { + defaultMessage: 'Influencer configuration', + }), text: i18n.translate('xpack.ml.models.jobValidation.messages.successInfluencersMessage', { - defaultMessage: 'Influencer configuration passed the validation checks.', + defaultMessage: 'Passed the validation checks.', }), url: docLinks?.links.ml.anomalyDetectionInfluencers, }, @@ -538,6 +652,9 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, mml_value_invalid: { status: VALIDATION_STATUS.ERROR, + heading: i18n.translate('xpack.ml.models.jobValidation.messages.mmlValueInvalidHeading', { + defaultMessage: 'Model memory limit', + }), text: i18n.translate('xpack.ml.models.jobValidation.messages.mmlValueInvalidMessage', { defaultMessage: '{mml} is not a valid value for model memory limit. The value needs to be at least ' + @@ -548,6 +665,12 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, half_estimated_mml_greater_than_mml: { status: VALIDATION_STATUS.WARNING, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.halfEstimatedMmlGreaterThanMmlHeading', + { + defaultMessage: 'Model memory limit', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.halfEstimatedMmlGreaterThanMmlMessage', { @@ -560,6 +683,12 @@ export const getMessages = once((docLinks?: DocLinksStart) => { }, estimated_mml_greater_than_mml: { status: VALIDATION_STATUS.INFO, + heading: i18n.translate( + 'xpack.ml.models.jobValidation.messages.halfEstimatedMmlGreaterThanMmlHeading', + { + defaultMessage: 'Model memory limit', + } + ), text: i18n.translate( 'xpack.ml.models.jobValidation.messages.estimatedMmlGreaterThanMmlMessage', { diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_chart.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_chart.tsx index b9c317a88b36ba..f85cd11113d85e 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_chart.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_chart.tsx @@ -40,12 +40,6 @@ const baselineStyle: LineAnnotationStyle = { stroke: euiColorFullShade, opacity: 0.75, }, - details: { - fontFamily: 'Arial', - fontSize: 10, - fill: euiColorMediumShade, - padding: 0, - }, }; const axes: RecursivePartial = { @@ -157,7 +151,9 @@ export const DecisionPathChart = ({ values: { predictionFieldName, xAxisLabel }, } )} - showGridLines={false} + gridLine={{ + visible: false, + }} position={Position.Top} showOverlappingTicks domain={ @@ -169,7 +165,13 @@ export const DecisionPathChart = ({ : undefined } /> - + { const resultsField = jobConfig?.dest.results_field ?? ''; - let backgroundColor; + let backgroundColor: string | undefined; const featureNames = fullItem[`${resultsField}.${FEATURE_INFLUENCE}`]; @@ -166,11 +166,16 @@ export const useOutlierData = ( } } - if (backgroundColor !== undefined) { - setCellProps({ - style: { backgroundColor: String(backgroundColor) }, - }); - } + // From EUI docs: Treated as React component allowing hooks, context, and other React concepts to be used. + // This is the recommended use of setCellProps: https://github.com/elastic/eui/blob/main/src/components/datagrid/data_grid_types.ts#L521-L525 + // eslint-disable-next-line react-hooks/rules-of-hooks + useEffect(() => { + if (backgroundColor) { + setCellProps({ + style: { backgroundColor: String(backgroundColor) }, + }); + } + }, [backgroundColor, setCellProps]); } ); diff --git a/x-pack/plugins/ml/public/application/explorer/swimlane_container.tsx b/x-pack/plugins/ml/public/application/explorer/swimlane_container.tsx index 7038c8799b8fe8..a6595ed797e80d 100644 --- a/x-pack/plugins/ml/public/application/explorer/swimlane_container.tsx +++ b/x-pack/plugins/ml/public/application/explorer/swimlane_container.tsx @@ -28,8 +28,9 @@ import { Position, ScaleType, Settings, - TooltipSettings, + TooltipProps, TooltipValue, + Tooltip, } from '@elastic/charts'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; @@ -368,7 +369,7 @@ export const SwimlaneContainer: FC = ({ [swimlaneType, swimlaneData?.fieldName, swimlaneData?.interval, onCellsSelection] ) as ElementClickListener; - const tooltipOptions: TooltipSettings = useMemo( + const tooltipOptions = useMemo( () => ({ placement: 'auto', fallbackPlacements: ['left'], @@ -439,6 +440,7 @@ export const SwimlaneContainer: FC = ({ > {showSwimlane && !isLoading && ( + = ({ showLegend={showLegend} legendPosition={Position.Top} xDomain={xDomain} - tooltip={tooltipOptions} debugState={window._echDebugStateFlag ?? false} onBrushEnd={onBrushEnd as BrushEndListener} /> diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/charts/anomaly_chart/anomaly_chart.tsx b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/charts/anomaly_chart/anomaly_chart.tsx index 277c7afc1d9ed7..d2f608eeb01c0b 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/charts/anomaly_chart/anomaly_chart.tsx +++ b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/charts/anomaly_chart/anomaly_chart.tsx @@ -6,7 +6,7 @@ */ import React, { FC } from 'react'; -import { Chart, Settings, TooltipType } from '@elastic/charts'; +import { Chart, Settings, TooltipType, Tooltip } from '@elastic/charts'; import { ModelItem, Anomaly } from '../../../../common/results_loader'; import { Anomalies } from '../common/anomalies'; import { ModelBounds } from './model_bounds'; @@ -47,10 +47,10 @@ export const AnomalyChart: FC = ({
0} loading={loading}> + diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/charts/event_rate_chart/event_rate_chart.tsx b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/charts/event_rate_chart/event_rate_chart.tsx index e1a367e6814810..06d90e495ecccc 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/charts/event_rate_chart/event_rate_chart.tsx +++ b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/charts/event_rate_chart/event_rate_chart.tsx @@ -14,6 +14,7 @@ import { TooltipType, BrushEndListener, PartialTheme, + Tooltip, } from '@elastic/charts'; import { css } from '@emotion/react'; import { Axes } from '../common/axes'; @@ -72,8 +73,8 @@ export const EventRateChart: FC = ({ 0} loading={loading}> {showAxis === true && } + = ({ memoryOverview return ( + + i18n.translate('xpack.ml.trainedModels.nodesList.memoryBreakdown', { + defaultMessage: 'Approximate memory breakdown', + }) + } + /> - i18n.translate('xpack.ml.trainedModels.nodesList.memoryBreakdown', { - defaultMessage: 'Approximate memory breakdown', - }), - }} /> { expect(asDuration(0)).toEqual('0 μs'); expect(asDuration(1)).toEqual('1 μs'); expect(asDuration(toMicroseconds(1, 'milliseconds'))).toEqual('1,000 μs'); - expect(asDuration(toMicroseconds(1000, 'milliseconds'))).toEqual('1,000 ms'); - expect(asDuration(toMicroseconds(10000, 'milliseconds'))).toEqual('10,000 ms'); + expect(asDuration(toMicroseconds(999, 'milliseconds'))).toEqual('999 ms'); + expect(asDuration(toMicroseconds(4600, 'milliseconds'))).toEqual('4.6 s'); + expect(asDuration(toMicroseconds(5999, 'milliseconds'))).toEqual('6.0 s'); + expect(asDuration(toMicroseconds(10000, 'milliseconds'))).toEqual('10 s'); expect(asDuration(toMicroseconds(20, 'seconds'))).toEqual('20 s'); expect(asDuration(toMicroseconds(10, 'minutes'))).toEqual('600 s'); expect(asDuration(toMicroseconds(11, 'minutes'))).toEqual('11 min'); diff --git a/x-pack/plugins/observability/common/utils/formatters/duration.ts b/x-pack/plugins/observability/common/utils/formatters/duration.ts index d37b75cd1cab72..2d58338d983cba 100644 --- a/x-pack/plugins/observability/common/utils/formatters/duration.ts +++ b/x-pack/plugins/observability/common/utils/formatters/duration.ts @@ -148,7 +148,7 @@ function getDurationUnitKey(max: number): DurationTimeUnit { if (max > toMicroseconds(10, 'minutes')) { return 'minutes'; } - if (max > toMicroseconds(10, 'seconds')) { + if (max > toMicroseconds(1, 'seconds')) { return 'seconds'; } if (max > toMicroseconds(1, 'milliseconds')) { diff --git a/x-pack/plugins/observability/public/application/index.tsx b/x-pack/plugins/observability/public/application/index.tsx index 2674809202e58b..bf682b6bf7eff7 100644 --- a/x-pack/plugins/observability/public/application/index.tsx +++ b/x-pack/plugins/observability/public/application/index.tsx @@ -24,7 +24,7 @@ import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; import { HasDataContextProvider } from '../context/has_data_context/has_data_context'; import { PluginContext } from '../context/plugin_context/plugin_context'; import { ConfigSchema, ObservabilityPublicPluginsStart } from '../plugin'; -import { routes } from '../routes'; +import { routes } from '../routes/routes'; import { ObservabilityRuleTypeRegistry } from '../rules/create_observability_rule_type_registry'; import { HideableReactQueryDevTools } from './hideable_react_query_dev_tools'; diff --git a/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.test.tsx b/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.test.tsx index 211fc4bc47d7d1..5937fd4f8f7aab 100644 --- a/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.test.tsx +++ b/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.test.tsx @@ -10,7 +10,7 @@ import { waitFor } from '@testing-library/react'; import { timefilterServiceMock } from '@kbn/data-plugin/public/query/timefilter/timefilter_service.mock'; import { ObservabilityAlertSearchBarProps, Services } from './types'; import { ObservabilityAlertSearchBar } from './alert_search_bar'; -import { observabilityAlertFeatureIds } from '../../config/alert_feature_ids'; +import { observabilityAlertFeatureIds } from '../../../common/constants'; import { render } from '../../utils/test_helper'; const getAlertsSearchBarMock = jest.fn(); diff --git a/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx b/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx index bf4d1908378507..d51d6987b4c6eb 100644 --- a/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx +++ b/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx @@ -11,7 +11,7 @@ import React, { useCallback, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; import { Query } from '@kbn/es-query'; import { AlertsStatusFilter } from './components'; -import { observabilityAlertFeatureIds } from '../../config/alert_feature_ids'; +import { observabilityAlertFeatureIds } from '../../../common/constants'; import { ALERT_STATUS_QUERY, DEFAULT_QUERIES, DEFAULT_QUERY_STRING } from './constants'; import { ObservabilityAlertSearchBarProps } from './types'; import { buildEsQuery } from '../../utils/build_es_query'; diff --git a/x-pack/plugins/observability/public/components/alerts_flyout/alerts_flyout_body.tsx b/x-pack/plugins/observability/public/components/alerts_flyout/alerts_flyout_body.tsx index c476f1376d774a..06cdd72626ec4d 100644 --- a/x-pack/plugins/observability/public/components/alerts_flyout/alerts_flyout_body.tsx +++ b/x-pack/plugins/observability/public/components/alerts_flyout/alerts_flyout_body.tsx @@ -26,13 +26,13 @@ import { ALERT_STATUS_ACTIVE, ALERT_STATUS_RECOVERED, } from '@kbn/rule-data-utils'; +import { i18n } from '@kbn/i18n'; import { AlertLifecycleStatusBadge } from '@kbn/alerts-ui-shared'; import moment from 'moment-timezone'; import { useUiSetting } from '@kbn/kibana-react-plugin/public'; import { useKibana } from '../../utils/kibana_react'; import { asDuration } from '../../../common/utils/formatters'; -import { paths } from '../../config/paths'; -import { translations } from '../../config/translations'; +import { paths } from '../../routes/paths'; import { formatAlertEvaluationValue } from '../../utils/format_alert_evaluation_value'; import { RULE_DETAILS_PAGE_ID } from '../../pages/rule_details/constants'; import type { TopAlert } from '../../typings/alerts'; @@ -59,7 +59,9 @@ export function AlertsFlyoutBody({ alert, id: pageId }: FlyoutProps) { const overviewListItems = [ { - title: translations.alertsFlyout.statusLabel, + title: i18n.translate('xpack.observability.alertsFlyout.statusLabel', { + defaultMessage: 'Status', + }), description: ( {moment(alert.start).format(dateFormat)} ), }, { - title: translations.alertsFlyout.lastUpdatedLabel, + title: i18n.translate('xpack.observability.alertsFlyout.lastUpdatedLabel', { + defaultMessage: 'Last updated', + }), description: ( {moment(alert.lastUpdated).format(dateFormat)} @@ -82,25 +88,33 @@ export function AlertsFlyoutBody({ alert, id: pageId }: FlyoutProps) { ), }, { - title: translations.alertsFlyout.durationLabel, + title: i18n.translate('xpack.observability.alertsFlyout.durationLabel', { + defaultMessage: 'Duration', + }), description: asDuration(alert.fields[ALERT_DURATION], { extended: true }), }, { - title: translations.alertsFlyout.expectedValueLabel, + title: i18n.translate('xpack.observability.alertsFlyout.expectedValueLabel', { + defaultMessage: 'Expected value', + }), description: formatAlertEvaluationValue( alert.fields[ALERT_RULE_TYPE_ID], alert.fields[ALERT_EVALUATION_THRESHOLD] ), }, { - title: translations.alertsFlyout.actualValueLabel, + title: i18n.translate('xpack.observability.alertsFlyout.actualValueLabel', { + defaultMessage: 'Actual value', + }), description: formatAlertEvaluationValue( alert.fields[ALERT_RULE_TYPE_ID], alert.fields[ALERT_EVALUATION_VALUE] ), }, { - title: translations.alertsFlyout.ruleTypeLabel, + title: i18n.translate('xpack.observability.alertsFlyout.ruleTypeLabel', { + defaultMessage: 'Rule type', + }), description: alert.fields[ALERT_RULE_CATEGORY] ?? '-', }, ]; @@ -108,19 +122,29 @@ export function AlertsFlyoutBody({ alert, id: pageId }: FlyoutProps) { return ( -

{translations.alertsFlyout.reasonTitle}

+

+ {i18n.translate('xpack.observability.alertsFlyout.reasonTitle', { + defaultMessage: 'Reason', + })} +

{alert.reason} {!!linkToRule && ( - {translations.alertsFlyout.viewRulesDetailsLinkText} + {i18n.translate('xpack.observability.alertsFlyout.viewRulesDetailsLinkText', { + defaultMessage: 'View rule details', + })} )} -

{translations.alertsFlyout.documentSummaryTitle}

+

+ {i18n.translate('xpack.observability.alertsFlyout.documentSummaryTitle', { + defaultMessage: 'Document Summary', + })} +

{ - if (!isAlertDetailsEnabledPerApp(alert, config)) return <>; - return ( - - - {translations.alertsFlyout.alertDetailsButtonText} - - - ); - }; - - const getViewInAppUrlButton = () => { - if (!alert.link || isInApp) return <>; - return ( - - - {translations.alertsFlyout.viewInAppButtonText} - - - ); - }; - return ( - {getViewInAppUrlButton()} - {getAlertDetailsButton()} + {!alert.link || isInApp ? null : ( + + + {i18n.translate('xpack.observability.alertsFlyout.viewInAppButtonText', { + defaultMessage: 'View in app', + })} + + + )} + + {!isAlertDetailsEnabledPerApp(alert, config) ? null : ( + + + {i18n.translate('xpack.observability.alertsFlyout.alertsDetailsButtonText', { + defaultMessage: 'Alert details', + })} + + + )} ); diff --git a/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_active_alerts_badge.tsx b/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_active_alerts_badge.tsx index 4d5e826ab4129b..df75dcbdf3c351 100644 --- a/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_active_alerts_badge.tsx +++ b/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_active_alerts_badge.tsx @@ -10,7 +10,7 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { SLOWithSummaryResponse } from '@kbn/slo-schema'; -import { paths } from '../../../config/paths'; +import { paths } from '../../../routes/paths'; import { useKibana } from '../../../utils/kibana_react'; import { ActiveAlerts } from '../../../hooks/slo/use_fetch_active_alerts'; diff --git a/x-pack/plugins/observability/public/components/threshold/components/expression_chart.tsx b/x-pack/plugins/observability/public/components/threshold/components/expression_chart.tsx index 4e794e0341f33f..57399f2272ff44 100644 --- a/x-pack/plugins/observability/public/components/threshold/components/expression_chart.tsx +++ b/x-pack/plugins/observability/public/components/threshold/components/expression_chart.tsx @@ -14,6 +14,7 @@ import { Position, RectAnnotation, Settings, + Tooltip, } from '@elastic/charts'; import { EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -190,12 +191,13 @@ export function ExpressionChart({ tickFormat={createFormatterForMetric(metric)} domain={domain} /> + + moment(value).format(uiSettings.get(UI_SETTINGS.DATE_FORMAT)) + } + /> - moment(value).format(uiSettings.get(UI_SETTINGS.DATE_FORMAT)), - }} externalPointerEvents={{ tooltip: { visible: true }, }} diff --git a/x-pack/plugins/observability/public/config/alert_feature_ids.ts b/x-pack/plugins/observability/public/config/alert_feature_ids.ts deleted file mode 100644 index 48dc3acf8311f6..00000000000000 --- a/x-pack/plugins/observability/public/config/alert_feature_ids.ts +++ /dev/null @@ -1,18 +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 { AlertConsumers } from '@kbn/rule-data-utils'; -import type { ValidFeatureId } from '@kbn/rule-data-utils'; - -export const observabilityAlertFeatureIds: ValidFeatureId[] = [ - AlertConsumers.APM, - AlertConsumers.INFRASTRUCTURE, - AlertConsumers.LOGS, - AlertConsumers.UPTIME, - AlertConsumers.SLO, - AlertConsumers.OBSERVABILITY, -]; diff --git a/x-pack/plugins/observability/public/config/paths.ts b/x-pack/plugins/observability/public/config/paths.ts deleted file mode 100644 index bb18b04830ae8c..00000000000000 --- a/x-pack/plugins/observability/public/config/paths.ts +++ /dev/null @@ -1,35 +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 const OBSERVABILITY_BASE_PATH = '/app/observability'; -export const ALERT_PAGE_LINK = `${OBSERVABILITY_BASE_PATH}/alerts`; -export const RULES_PAGE_LINK = `${ALERT_PAGE_LINK}/rules`; -export const SLOS_PAGE_LINK = `${OBSERVABILITY_BASE_PATH}/slos`; - -export const paths = { - observability: { - alerts: ALERT_PAGE_LINK, - alertDetails: (alertId: string) => `${ALERT_PAGE_LINK}/${encodeURI(alertId)}`, - rules: RULES_PAGE_LINK, - ruleDetails: (ruleId?: string | null) => - ruleId ? `${RULES_PAGE_LINK}/${encodeURI(ruleId)}` : RULES_PAGE_LINK, - slos: SLOS_PAGE_LINK, - slosWelcome: `${SLOS_PAGE_LINK}/welcome`, - sloCreate: `${SLOS_PAGE_LINK}/create`, - sloCreateWithEncodedForm: (encodedParams: string) => - `${SLOS_PAGE_LINK}/create?_a=${encodedParams}`, - sloEdit: (sloId: string) => `${SLOS_PAGE_LINK}/edit/${encodeURI(sloId)}`, - sloDetails: (sloId: string) => `${SLOS_PAGE_LINK}/${encodeURI(sloId)}`, - }, - management: { - rules: '/app/management/insightsAndAlerting/triggersActions/rules', - ruleDetails: (ruleId: string) => - `/app/management/insightsAndAlerting/triggersActions/rule/${encodeURI(ruleId)}`, - alertDetails: (alertId: string) => - `/app/management/insightsAndAlerting/triggersActions/alert/${encodeURI(alertId)}`, - }, -}; diff --git a/x-pack/plugins/observability/public/config/translations.ts b/x-pack/plugins/observability/public/config/translations.ts deleted file mode 100644 index 042650b94c0846..00000000000000 --- a/x-pack/plugins/observability/public/config/translations.ts +++ /dev/null @@ -1,125 +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 { i18n } from '@kbn/i18n'; - -export const translations = { - alertsTable: { - viewDetailsTextLabel: i18n.translate('xpack.observability.alertsTable.viewDetailsTextLabel', { - defaultMessage: 'View details', - }), - viewInAppTextLabel: i18n.translate('xpack.observability.alertsTable.viewInAppTextLabel', { - defaultMessage: 'View in app', - }), - moreActionsTextLabel: i18n.translate('xpack.observability.alertsTable.moreActionsTextLabel', { - defaultMessage: 'More actions', - }), - notEnoughPermissions: i18n.translate('xpack.observability.alertsTable.notEnoughPermissions', { - defaultMessage: 'Additional privileges required', - }), - statusColumnDescription: i18n.translate( - 'xpack.observability.alertsTGrid.statusColumnDescription', - { - defaultMessage: 'Alert Status', - } - ), - lastUpdatedColumnDescription: i18n.translate( - 'xpack.observability.alertsTGrid.lastUpdatedColumnDescription', - { - defaultMessage: 'Last updated', - } - ), - durationColumnDescription: i18n.translate( - 'xpack.observability.alertsTGrid.durationColumnDescription', - { - defaultMessage: 'Duration', - } - ), - reasonColumnDescription: i18n.translate( - 'xpack.observability.alertsTGrid.reasonColumnDescription', - { - defaultMessage: 'Reason', - } - ), - actionsTextLabel: i18n.translate('xpack.observability.alertsTable.actionsTextLabel', { - defaultMessage: 'Actions', - }), - loadingTextLabel: i18n.translate('xpack.observability.alertsTable.loadingTextLabel', { - defaultMessage: 'loading alerts', - }), - footerTextLabel: i18n.translate('xpack.observability.alertsTable.footerTextLabel', { - defaultMessage: 'alerts', - }), - showingAlertsTitle: (totalAlerts: number) => - i18n.translate('xpack.observability.alertsTable.showingAlertsTitle', { - values: { totalAlerts }, - defaultMessage: '{totalAlerts, plural, =1 {alert} other {alerts}}', - }), - viewRuleDetailsButtonText: i18n.translate( - 'xpack.observability.alertsTable.viewRuleDetailsButtonText', - { - defaultMessage: 'View rule details', - } - ), - viewAlertDetailsButtonText: i18n.translate( - 'xpack.observability.alertsTable.viewAlertDetailsButtonText', - { - defaultMessage: 'View alert details', - } - ), - viewAlertDetailsPageButtonText: i18n.translate( - 'xpack.observability.alertsTable.viewAlertDetailsPageButtonText', - { - defaultMessage: 'View alert page', - } - ), - }, - alertsFlyout: { - statusLabel: i18n.translate('xpack.observability.alertsFlyout.statusLabel', { - defaultMessage: 'Status', - }), - lastUpdatedLabel: i18n.translate('xpack.observability.alertsFlyout.lastUpdatedLabel', { - defaultMessage: 'Last updated', - }), - startedAtLabel: i18n.translate('xpack.observability.alertsFlyout.startedAtLabel', { - defaultMessage: 'Started at', - }), - durationLabel: i18n.translate('xpack.observability.alertsFlyout.durationLabel', { - defaultMessage: 'Duration', - }), - expectedValueLabel: i18n.translate('xpack.observability.alertsFlyout.expectedValueLabel', { - defaultMessage: 'Expected value', - }), - actualValueLabel: i18n.translate('xpack.observability.alertsFlyout.actualValueLabel', { - defaultMessage: 'Actual value', - }), - ruleTypeLabel: i18n.translate('xpack.observability.alertsFlyout.ruleTypeLabel', { - defaultMessage: 'Rule type', - }), - reasonTitle: i18n.translate('xpack.observability.alertsFlyout.reasonTitle', { - defaultMessage: 'Reason', - }), - viewRulesDetailsLinkText: i18n.translate( - 'xpack.observability.alertsFlyout.viewRulesDetailsLinkText', - { - defaultMessage: 'View rule details', - } - ), - documentSummaryTitle: i18n.translate('xpack.observability.alertsFlyout.documentSummaryTitle', { - defaultMessage: 'Document Summary', - }), - viewInAppButtonText: i18n.translate('xpack.observability.alertsFlyout.viewInAppButtonText', { - defaultMessage: 'View in app', - }), - alertDetailsButtonText: i18n.translate( - 'xpack.observability.alertsFlyout.alertsDetailsButtonText', - { - defaultMessage: 'Alert details', - } - ), - }, -}; diff --git a/x-pack/plugins/observability/public/hooks/slo/use_create_slo.ts b/x-pack/plugins/observability/public/hooks/slo/use_create_slo.ts index 52d6d3cec95e22..87711d3d6136bb 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_create_slo.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_create_slo.ts @@ -11,7 +11,7 @@ import type { CreateSLOInput, CreateSLOResponse, FindSLOResponse } from '@kbn/sl import { useMutation, useQueryClient } from '@tanstack/react-query'; import { v1 as uuidv1 } from 'uuid'; -import { paths } from '../../config/paths'; +import { paths } from '../../routes/paths'; import { useKibana } from '../../utils/kibana_react'; import { sloKeys } from './query_key_factory'; diff --git a/x-pack/plugins/observability/public/index.ts b/x-pack/plugins/observability/public/index.ts index b242b4ff43ee81..303257e7ca6172 100644 --- a/x-pack/plugins/observability/public/index.ts +++ b/x-pack/plugins/observability/public/index.ts @@ -49,8 +49,8 @@ export { uptimeOverviewLocatorID, } from '../common'; -export type { UXMetrics } from './components/core_web_vitals/core_vitals'; -export { getCoreVitalsComponent } from './components/core_web_vitals/get_core_web_vitals_lazy'; +export type { UXMetrics } from './pages/overview/components/sections/ux/core_web_vitals/core_vitals'; +export { getCoreVitalsComponent } from './pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy'; export { DatePicker } from './pages/overview/components/date_picker/date_picker'; export { ObservabilityAlertSearchBar } from './components/alert_search_bar/get_alert_search_bar_lazy'; diff --git a/x-pack/plugins/observability/public/locators/rule_details.test.ts b/x-pack/plugins/observability/public/locators/rule_details.test.ts index a00c4389d07ff3..faa28f5140ba73 100644 --- a/x-pack/plugins/observability/public/locators/rule_details.test.ts +++ b/x-pack/plugins/observability/public/locators/rule_details.test.ts @@ -8,6 +8,7 @@ import { ACTIVE_ALERTS } from '../components/alert_search_bar/constants'; import { EXECUTION_TAB, ALERTS_TAB } from '../pages/rule_details/constants'; import { getRuleDetailsPath, RuleDetailsLocatorDefinition } from './rule_details'; +import { RULES_PATH } from '../routes/paths'; describe('RuleDetailsLocator', () => { const locator = new RuleDetailsLocatorDefinition(); @@ -21,15 +22,13 @@ describe('RuleDetailsLocator', () => { it('should return correct url when tabId is execution', async () => { const location = await locator.getLocation({ ruleId: mockedRuleId, tabId: EXECUTION_TAB }); - expect(location.path).toMatchInlineSnapshot( - `"/alerts/rules/389d3318-7e10-4996-bb45-128e1607fb7e?tabId=execution"` - ); + expect(location.path).toEqual(`${RULES_PATH}/${mockedRuleId}?tabId=execution`); }); it('should return correct url when tabId is alerts without extra search params', async () => { const location = await locator.getLocation({ ruleId: mockedRuleId, tabId: ALERTS_TAB }); - expect(location.path).toMatchInlineSnapshot( - `"/alerts/rules/389d3318-7e10-4996-bb45-128e1607fb7e?tabId=alerts&searchBarParams=(kuery:'',rangeFrom:now-15m,rangeTo:now,status:all)"` + expect(location.path).toEqual( + `${RULES_PATH}/${mockedRuleId}?tabId=alerts&searchBarParams=(kuery:'',rangeFrom:now-15m,rangeTo:now,status:all)` ); }); @@ -42,8 +41,8 @@ describe('RuleDetailsLocator', () => { kuery: 'mockedKuery', status: ACTIVE_ALERTS.status, }); - expect(location.path).toMatchInlineSnapshot( - `"/alerts/rules/389d3318-7e10-4996-bb45-128e1607fb7e?tabId=alerts&searchBarParams=(kuery:mockedKuery,rangeFrom:mockedRangeTo,rangeTo:mockedRangeFrom,status:active)"` + expect(location.path).toEqual( + `${RULES_PATH}/${mockedRuleId}?tabId=alerts&searchBarParams=(kuery:mockedKuery,rangeFrom:mockedRangeTo,rangeTo:mockedRangeFrom,status:active)` ); }); }); diff --git a/x-pack/plugins/observability/public/locators/rule_details.ts b/x-pack/plugins/observability/public/locators/rule_details.ts index f36662627e0c68..3688fd35352368 100644 --- a/x-pack/plugins/observability/public/locators/rule_details.ts +++ b/x-pack/plugins/observability/public/locators/rule_details.ts @@ -9,6 +9,7 @@ import { setStateToKbnUrl } from '@kbn/kibana-utils-plugin/public'; import type { SerializableRecord } from '@kbn/utility-types'; import type { LocatorDefinition } from '@kbn/share-plugin/public'; import { ruleDetailsLocatorID } from '../../common'; +import { RULES_PATH } from '../routes/paths'; import { ALL_ALERTS } from '../components/alert_search_bar/constants'; import { ALERTS_TAB, @@ -28,7 +29,7 @@ export interface RuleDetailsLocatorParams extends SerializableRecord { } export const getRuleDetailsPath = (ruleId: string) => { - return `/alerts/rules/${encodeURI(ruleId)}`; + return `${RULES_PATH}/${encodeURI(ruleId)}`; }; export class RuleDetailsLocatorDefinition implements LocatorDefinition { diff --git a/x-pack/plugins/observability/public/locators/rules.test.ts b/x-pack/plugins/observability/public/locators/rules.test.ts index 86d4303f054b9c..b73e58fa9d20d0 100644 --- a/x-pack/plugins/observability/public/locators/rules.test.ts +++ b/x-pack/plugins/observability/public/locators/rules.test.ts @@ -5,7 +5,8 @@ * 2.0. */ -import { RulesLocatorDefinition, RULES_PATH } from './rules'; +import { RulesLocatorDefinition } from './rules'; +import { RULES_PATH } from '../routes/paths'; describe('RulesLocator', () => { const locator = new RulesLocatorDefinition(); diff --git a/x-pack/plugins/observability/public/locators/rules.ts b/x-pack/plugins/observability/public/locators/rules.ts index 533f4ccc98fd1f..379d34050d7f47 100644 --- a/x-pack/plugins/observability/public/locators/rules.ts +++ b/x-pack/plugins/observability/public/locators/rules.ts @@ -10,6 +10,7 @@ import type { SerializableRecord } from '@kbn/utility-types'; import type { LocatorDefinition } from '@kbn/share-plugin/public'; import type { RuleStatus } from '@kbn/triggers-actions-ui-plugin/public'; import { rulesLocatorID } from '../../common'; +import { RULES_PATH } from '../routes/paths'; // eslint-disable-next-line @typescript-eslint/consistent-type-definitions export type RulesParams = { @@ -22,8 +23,6 @@ export type RulesParams = { export interface RulesLocatorParams extends RulesParams, SerializableRecord {} -export const RULES_PATH = '/alerts/rules'; - export class RulesLocatorDefinition implements LocatorDefinition { public readonly id = rulesLocatorID; diff --git a/x-pack/plugins/observability/public/locators/slo_details.ts b/x-pack/plugins/observability/public/locators/slo_details.ts index cce555b47eef76..fd981a0ae44931 100644 --- a/x-pack/plugins/observability/public/locators/slo_details.ts +++ b/x-pack/plugins/observability/public/locators/slo_details.ts @@ -8,6 +8,7 @@ import type { SerializableRecord } from '@kbn/utility-types'; import type { LocatorDefinition } from '@kbn/share-plugin/public'; import { sloDetailsLocatorID } from '../../common'; +import { SLOS_PATH } from '../routes/paths'; // eslint-disable-next-line @typescript-eslint/consistent-type-definitions export type SloDetailsParams = { @@ -17,7 +18,7 @@ export type SloDetailsParams = { export interface SloDetailsLocatorParams extends SloDetailsParams, SerializableRecord {} export const getSloDetailsPath = (sloId: string) => { - return `/slos/${encodeURI(sloId)}`; + return `/${SLOS_PATH}/${encodeURI(sloId)}`; }; export class SloDetailsLocatorDefinition implements LocatorDefinition { diff --git a/x-pack/plugins/observability/public/pages/alert_details/alert_details.tsx b/x-pack/plugins/observability/public/pages/alert_details/alert_details.tsx index ad087dde744748..4fda9575b276b4 100644 --- a/x-pack/plugins/observability/public/pages/alert_details/alert_details.tsx +++ b/x-pack/plugins/observability/public/pages/alert_details/alert_details.tsx @@ -21,12 +21,12 @@ import { PageTitle, pageTitleContent } from './components/page_title'; import { HeaderActions } from './components/header_actions'; import { AlertSummary, AlertSummaryField } from './components/alert_summary'; import { CenterJustifiedSpinner } from '../../components/center_justified_spinner'; +import { FeedbackButton } from './components/feedback_button'; import PageNotFound from '../404'; import { getTimeZone } from '../../utils/get_time_zone'; import { isAlertDetailsEnabledPerApp } from '../../utils/is_alert_details_enabled'; import { observabilityFeatureId } from '../../../common'; -import { paths } from '../../config/paths'; -import { FeedbackButton } from './components/feedback_button'; +import { paths } from '../../routes/paths'; interface AlertDetailsPathParams { alertId: string; diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts.tsx index 578156ee044c43..363ad320ed5fbb 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts.tsx @@ -29,7 +29,7 @@ import { } from '../../components/alert_search_bar/containers'; import { calculateTimeRangeBucketSize } from '../overview/helpers/calculate_bucket_size'; import { getAlertSummaryTimeRange } from '../../utils/alert_summary_widget'; -import { observabilityAlertFeatureIds } from '../../config/alert_feature_ids'; +import { observabilityAlertFeatureIds } from '../../../common/constants'; import { ALERTS_URL_STORAGE_KEY } from '../../../common/constants'; const ALERTS_SEARCH_BAR_ID = 'alerts-search-bar-o11y'; diff --git a/x-pack/plugins/observability/public/pages/alerts/components/alert_actions.tsx b/x-pack/plugins/observability/public/pages/alerts/components/alert_actions.tsx index 7d570dffee2178..ad2d37e125cc4f 100644 --- a/x-pack/plugins/observability/public/pages/alerts/components/alert_actions.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/components/alert_actions.tsx @@ -27,7 +27,7 @@ import { useKibana } from '../../../utils/kibana_react'; import { useGetUserCasesPermissions } from '../../../hooks/use_get_user_cases_permissions'; import { isAlertDetailsEnabledPerApp } from '../../../utils/is_alert_details_enabled'; import { parseAlert } from '../helpers/parse_alert'; -import { paths } from '../../../config/paths'; +import { paths } from '../../../routes/paths'; import { RULE_DETAILS_PAGE_ID } from '../../rule_details/constants'; import type { ObservabilityRuleTypeRegistry } from '../../..'; import type { ConfigSchema } from '../../../plugin'; diff --git a/x-pack/plugins/observability/public/pages/cases/components/cases.tsx b/x-pack/plugins/observability/public/pages/cases/components/cases.tsx index 02ad7cb0b6ee95..33dbe68167b148 100644 --- a/x-pack/plugins/observability/public/pages/cases/components/cases.tsx +++ b/x-pack/plugins/observability/public/pages/cases/components/cases.tsx @@ -7,13 +7,13 @@ import React, { Suspense, useState } from 'react'; import { CasesPermissions } from '@kbn/cases-plugin/common'; -import { casesPath, observabilityFeatureId } from '../../../../common'; +import { observabilityFeatureId } from '../../../../common'; import { useKibana } from '../../../utils/kibana_react'; import { usePluginContext } from '../../../hooks/use_plugin_context'; import { useFetchAlertDetail } from '../../../hooks/use_fetch_alert_detail'; import { useFetchAlertData } from '../../../hooks/use_fetch_alert_data'; import { LazyAlertsFlyout } from '../../..'; -import { paths } from '../../../config/paths'; +import { CASES_PATH, paths } from '../../../routes/paths'; export interface CasesProps { permissions: CasesPermissions; @@ -45,14 +45,14 @@ export function Cases({ permissions }: CasesProps) { return ( <> prepend(paths.observability.ruleDetails(ruleId)), + href: (ruleId) => prepend(paths.observability.ruleDetails(ruleId || '')), onClick: (ruleId, ev) => { - const ruleLink = prepend(paths.observability.ruleDetails(ruleId)); + const ruleLink = prepend(paths.observability.ruleDetails(ruleId || '')); if (ev != null) { ev.preventDefault(); diff --git a/x-pack/plugins/observability/public/pages/overview/components/observability_status/content.ts b/x-pack/plugins/observability/public/pages/overview/components/observability_status/content.ts index dc7bada8faef1a..59eb92df6f44da 100644 --- a/x-pack/plugins/observability/public/pages/overview/components/observability_status/content.ts +++ b/x-pack/plugins/observability/public/pages/overview/components/observability_status/content.ts @@ -7,7 +7,7 @@ import { i18n } from '@kbn/i18n'; import { HttpSetup, DocLinksStart } from '@kbn/core/public'; import { ObservabilityFetchDataPlugins } from '../../../../typings/fetch_overview_data'; -import { paths } from '../../../../config/paths'; +import { paths } from '../../../../routes/paths'; export interface ObservabilityStatusContent { id: ObservabilityFetchDataPlugins | 'alert'; diff --git a/x-pack/plugins/observability/public/pages/overview/components/sections/empty/empty_sections.tsx b/x-pack/plugins/observability/public/pages/overview/components/sections/empty/empty_sections.tsx index a2d71e53b0b923..645bb830363a5e 100644 --- a/x-pack/plugins/observability/public/pages/overview/components/sections/empty/empty_sections.tsx +++ b/x-pack/plugins/observability/public/pages/overview/components/sections/empty/empty_sections.tsx @@ -13,7 +13,7 @@ import { HttpSetup } from '@kbn/core/public'; import { FETCH_STATUS } from '@kbn/observability-shared-plugin/public'; import { useKibana } from '../../../../../utils/kibana_react'; -import { paths } from '../../../../../config/paths'; +import { paths } from '../../../../../routes/paths'; import { useHasData } from '../../../../../hooks/use_has_data'; import { EmptySection, Section } from './empty_section'; diff --git a/x-pack/plugins/observability/public/pages/overview/components/sections/metrics/metric_with_sparkline.tsx b/x-pack/plugins/observability/public/pages/overview/components/sections/metrics/metric_with_sparkline.tsx index 27a3aa200910f3..ede1c025440b7e 100644 --- a/x-pack/plugins/observability/public/pages/overview/components/sections/metrics/metric_with_sparkline.tsx +++ b/x-pack/plugins/observability/public/pages/overview/components/sections/metrics/metric_with_sparkline.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { Chart, Settings, AreaSeries } from '@elastic/charts'; +import { Chart, Settings, AreaSeries, TooltipType, Tooltip } from '@elastic/charts'; import { EuiFlexItem, EuiFlexGroup, EuiIcon, EuiTextColor } from '@elastic/eui'; import React, { useContext } from 'react'; import { @@ -46,7 +46,8 @@ export function MetricWithSparkline({ id, formatter, value, timeseries, color }: - + + ({ useLocation: () => ({ diff --git a/x-pack/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx b/x-pack/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx index 29a9231f828392..ec6aa5a3a9024c 100644 --- a/x-pack/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx +++ b/x-pack/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx @@ -17,7 +17,7 @@ import { SectionContainer } from '../section_container'; import { getDataHandler } from '../../../../../context/has_data_context/data_handler'; import { useHasData } from '../../../../../hooks/use_has_data'; import { useDatePickerContext } from '../../../../../hooks/use_date_picker_context'; -import CoreVitals from '../../../../../components/core_web_vitals/core_vitals'; +import CoreVitals from './core_web_vitals/core_vitals'; import type { BucketSize } from '../../../helpers/calculate_bucket_size'; interface Props { diff --git a/x-pack/plugins/observability/public/pages/overview/overview.tsx b/x-pack/plugins/observability/public/pages/overview/overview.tsx index a938cdc98023ed..2f468310a13e33 100644 --- a/x-pack/plugins/observability/public/pages/overview/overview.tsx +++ b/x-pack/plugins/observability/public/pages/overview/overview.tsx @@ -22,8 +22,8 @@ import { HeaderMenu } from './components/header_menu/header_menu'; import { Resources } from './components/resources'; import { NewsFeed } from './components/news_feed/news_feed'; import { ObservabilityStatusProgress } from './components/observability_status/observability_status_progress'; -import { observabilityAlertFeatureIds } from '../../config/alert_feature_ids'; -import { paths } from '../../config/paths'; +import { observabilityAlertFeatureIds } from '../../../common/constants'; +import { paths } from '../../routes/paths'; import { useDatePickerContext } from '../../hooks/use_date_picker_context'; import { useGuidedSetupProgress } from '../../hooks/use_guided_setup_progress'; import { useHasData } from '../../hooks/use_has_data'; diff --git a/x-pack/plugins/observability/public/pages/rule_details/index.tsx b/x-pack/plugins/observability/public/pages/rule_details/index.tsx index 87f9ee906500c8..5ca95a1b249d2c 100644 --- a/x-pack/plugins/observability/public/pages/rule_details/index.tsx +++ b/x-pack/plugins/observability/public/pages/rule_details/index.tsx @@ -61,7 +61,7 @@ import { useFetchRule } from '../../hooks/use_fetch_rule'; import { PageTitle } from './components'; import { getHealthColor } from './config'; import { hasExecuteActionsCapability, hasAllPrivilege } from './config'; -import { paths } from '../../config/paths'; +import { paths } from '../../routes/paths'; import { ALERT_STATUS_ALL } from '../../../common/constants'; import { observabilityFeatureId, ruleDetailsLocatorID } from '../../../common'; import { ALERT_STATUS_LICENSE_ERROR, rulesStatusesTranslationsMapping } from './translations'; diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/header_control.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/header_control.tsx index 7fc57348ebe075..2d71fca18eede4 100644 --- a/x-pack/plugins/observability/public/pages/slo_details/components/header_control.tsx +++ b/x-pack/plugins/observability/public/pages/slo_details/components/header_control.tsx @@ -18,7 +18,7 @@ import { isApmIndicatorType } from '../../../utils/slo/indicator'; import { convertSliApmParamsToApmAppDeeplinkUrl } from '../../../utils/slo/convert_sli_apm_params_to_apm_app_deeplink_url'; import { SLO_BURN_RATE_RULE_TYPE_ID } from '../../../../common/constants'; import { rulesLocatorID, sloFeatureId } from '../../../../common'; -import { paths } from '../../../config/paths'; +import { paths } from '../../../routes/paths'; import { transformSloResponseToCreateSloForm, transformCreateSLOFormToCreateSLOInput, diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/wide_chart.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/wide_chart.tsx index dbbacc6b1be914..3d65f7a77628c6 100644 --- a/x-pack/plugins/observability/public/pages/slo_details/components/wide_chart.tsx +++ b/x-pack/plugins/observability/public/pages/slo_details/components/wide_chart.tsx @@ -14,6 +14,8 @@ import { Position, ScaleType, Settings, + Tooltip, + TooltipType, } from '@elastic/charts'; import React, { useRef } from 'react'; import { EuiIcon, EuiLoadingChart, useEuiTheme } from '@elastic/eui'; @@ -57,11 +59,11 @@ export function WideChart({ chart, data, id, isLoading, state }: Props) { return ( + } onPointerUpdate={handleCursorUpdate} externalPointerEvents={{ diff --git a/x-pack/plugins/observability/public/pages/slo_details/slo_details.test.tsx b/x-pack/plugins/observability/public/pages/slo_details/slo_details.test.tsx index e83ef6b5dc5e54..c52fd9a0bd8fc0 100644 --- a/x-pack/plugins/observability/public/pages/slo_details/slo_details.test.tsx +++ b/x-pack/plugins/observability/public/pages/slo_details/slo_details.test.tsx @@ -20,7 +20,7 @@ import { useDeleteSlo } from '../../hooks/slo/use_delete_slo'; import { render } from '../../utils/test_helper'; import { SloDetailsPage } from './slo_details'; import { buildSlo } from '../../data/slo/slo'; -import { paths } from '../../config/paths'; +import { paths } from '../../routes/paths'; import { HEALTHY_STEP_DOWN_ROLLING_SLO, historicalSummaryData, diff --git a/x-pack/plugins/observability/public/pages/slo_details/slo_details.tsx b/x-pack/plugins/observability/public/pages/slo_details/slo_details.tsx index 46be061c880bf6..00d6fb4db07622 100644 --- a/x-pack/plugins/observability/public/pages/slo_details/slo_details.tsx +++ b/x-pack/plugins/observability/public/pages/slo_details/slo_details.tsx @@ -23,7 +23,7 @@ import PageNotFound from '../404'; import { SloDetails } from './components/slo_details'; import { HeaderTitle } from './components/header_title'; import { HeaderControl } from './components/header_control'; -import { paths } from '../../config/paths'; +import { paths } from '../../routes/paths'; import type { SloDetailsPathParams } from './types'; import { AutoRefreshButton } from '../slos/components/auto_refresh_button'; import { FeedbackButton } from '../../components/slo/feedback_button/feedback_button'; diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx index 44d81195da9b47..0a29611393d0b7 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { AreaSeries, Axis, Chart, Position, ScaleType, Settings } from '@elastic/charts'; +import { AreaSeries, Axis, Chart, Position, ScaleType, Settings, Tooltip } from '@elastic/charts'; import { EuiFlexItem, EuiIcon, EuiLoadingChart, EuiPanel } from '@elastic/eui'; import numeral from '@elastic/numeral'; import { i18n } from '@kbn/i18n'; @@ -39,6 +39,7 @@ export function DataPreviewChart() { {!isPreviewLoading && !!previewData && ( + } diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form.tsx index d856a54151bba0..1ff446c005c019 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form.tsx @@ -20,7 +20,7 @@ import React, { useCallback, useEffect, useState } from 'react'; import { FormProvider, useForm } from 'react-hook-form'; import { sloFeatureId } from '../../../../common'; import { SLO_BURN_RATE_RULE_TYPE_ID } from '../../../../common/constants'; -import { paths } from '../../../config/paths'; +import { paths } from '../../../routes/paths'; import { useCreateSlo } from '../../../hooks/slo/use_create_slo'; import { useFetchRulesForSlo } from '../../../hooks/slo/use_fetch_rules_for_slo'; import { useUpdateSlo } from '../../../hooks/slo/use_update_slo'; diff --git a/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx b/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx index 22b11640b747fd..7746e2b99545ed 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx @@ -23,7 +23,7 @@ import { useUpdateSlo } from '../../hooks/slo/use_update_slo'; import { useFetchApmSuggestions } from '../../hooks/slo/use_fetch_apm_suggestions'; import { kibanaStartMock } from '../../utils/kibana_react.mock'; import { buildSlo } from '../../data/slo/slo'; -import { paths } from '../../config/paths'; +import { paths } from '../../routes/paths'; import { SloEditPage } from './slo_edit'; import { useCapabilities } from '../../hooks/slo/use_capabilities'; diff --git a/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.tsx b/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.tsx index a4c4a134c0b3ad..9b64d09e293431 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.tsx @@ -10,7 +10,7 @@ import { useParams } from 'react-router-dom'; import { i18n } from '@kbn/i18n'; import { useBreadcrumbs } from '@kbn/observability-shared-plugin/public'; -import { paths } from '../../config/paths'; +import { paths } from '../../routes/paths'; import { useKibana } from '../../utils/kibana_react'; import { usePluginContext } from '../../hooks/use_plugin_context'; import { useFetchSloDetails } from '../../hooks/slo/use_fetch_slo_details'; diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list_item.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list_item.tsx index 4733b600c6e993..fdbe1668a92882 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list_item.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list_item.tsx @@ -35,7 +35,7 @@ import { } from '../../slo_edit/helpers/process_slo_form_values'; import { SLO_BURN_RATE_RULE_TYPE_ID } from '../../../../common/constants'; import { rulesLocatorID, sloFeatureId } from '../../../../common'; -import { paths } from '../../../config/paths'; +import { paths } from '../../../routes/paths'; import type { ActiveAlerts } from '../../../hooks/slo/use_fetch_active_alerts'; import type { SloRule } from '../../../hooks/slo/use_fetch_rules_for_slo'; import type { RulesParams } from '../../../locators/rules'; diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_sparkline.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_sparkline.tsx index c546d8306bb38c..a4f7057e65491e 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_sparkline.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_sparkline.tsx @@ -5,7 +5,17 @@ * 2.0. */ -import { AreaSeries, Axis, Chart, Fit, LineSeries, ScaleType, Settings } from '@elastic/charts'; +import { + AreaSeries, + Axis, + Chart, + Fit, + LineSeries, + ScaleType, + Settings, + Tooltip, + TooltipType, +} from '@elastic/charts'; import React from 'react'; import { EuiLoadingChart, useEuiTheme } from '@elastic/eui'; import { EUI_SPARKLINE_THEME_PARTIAL } from '@elastic/eui/dist/eui_charts_theme'; @@ -45,7 +55,9 @@ export function SloSparkline({ chart, data, id, isLoading, state }: Props) { min: 0, max: 1, }} - showGridLines={false} + gridLine={{ + visible: false, + }} /> ) : null; @@ -59,8 +71,8 @@ export function SloSparkline({ chart, data, id, isLoading, state }: Props) { baseTheme={baseTheme} showLegend={false} theme={[theme, EUI_SPARKLINE_THEME_PARTIAL]} - tooltip="none" /> + {LineAxisComponent} ({ ...jest.requireActual('react-router-dom'), diff --git a/x-pack/plugins/observability/public/pages/slos/slos.tsx b/x-pack/plugins/observability/public/pages/slos/slos.tsx index 3eb9eefabab541..c2a07a01e0fa15 100644 --- a/x-pack/plugins/observability/public/pages/slos/slos.tsx +++ b/x-pack/plugins/observability/public/pages/slos/slos.tsx @@ -19,7 +19,7 @@ import { SloList } from './components/slo_list'; import { AutoRefreshButton } from './components/auto_refresh_button'; import { HeaderTitle } from './components/header_title'; import { FeedbackButton } from '../../components/slo/feedback_button/feedback_button'; -import { paths } from '../../config/paths'; +import { paths } from '../../routes/paths'; export function SlosPage() { const { diff --git a/x-pack/plugins/observability/public/pages/slos_welcome/slos_welcome.test.tsx b/x-pack/plugins/observability/public/pages/slos_welcome/slos_welcome.test.tsx index 35870cb2e4bc46..a2e4b95e55b00d 100644 --- a/x-pack/plugins/observability/public/pages/slos_welcome/slos_welcome.test.tsx +++ b/x-pack/plugins/observability/public/pages/slos_welcome/slos_welcome.test.tsx @@ -16,7 +16,7 @@ import { useLicense } from '../../hooks/use_license'; import { SlosWelcomePage } from './slos_welcome'; import { emptySloList, sloList } from '../../data/slo/slo'; import { useCapabilities } from '../../hooks/slo/use_capabilities'; -import { paths } from '../../config/paths'; +import { paths } from '../../routes/paths'; jest.mock('@kbn/observability-shared-plugin/public'); jest.mock('../../utils/kibana_react'); diff --git a/x-pack/plugins/observability/public/pages/slos_welcome/slos_welcome.tsx b/x-pack/plugins/observability/public/pages/slos_welcome/slos_welcome.tsx index d43d4319848239..9009a18ce98134 100644 --- a/x-pack/plugins/observability/public/pages/slos_welcome/slos_welcome.tsx +++ b/x-pack/plugins/observability/public/pages/slos_welcome/slos_welcome.tsx @@ -23,7 +23,7 @@ import { useLicense } from '../../hooks/use_license'; import { usePluginContext } from '../../hooks/use_plugin_context'; import { useCapabilities } from '../../hooks/slo/use_capabilities'; import { useFetchSloList } from '../../hooks/slo/use_fetch_slo_list'; -import { paths } from '../../config/paths'; +import { paths } from '../../routes/paths'; import illustration from './assets/illustration.svg'; import { useFetchSloGlobalDiagnosis } from '../../hooks/slo/use_fetch_global_diagnosis'; diff --git a/x-pack/plugins/observability/public/plugin.ts b/x-pack/plugins/observability/public/plugin.ts index 1fb04d947bef2d..78bb07a0ee662a 100644 --- a/x-pack/plugins/observability/public/plugin.ts +++ b/x-pack/plugins/observability/public/plugin.ts @@ -54,14 +54,22 @@ import { ExploratoryViewPublicStart } from '@kbn/exploratory-view-plugin/public' import { RulesLocatorDefinition } from './locators/rules'; import { RuleDetailsLocatorDefinition } from './locators/rule_details'; import { SloDetailsLocatorDefinition } from './locators/slo_details'; -import { observabilityAppId, observabilityFeatureId, casesPath } from '../common'; +import { observabilityAppId, observabilityFeatureId } from '../common'; import { registerDataHandler } from './context/has_data_context/data_handler'; import { createObservabilityRuleTypeRegistry, ObservabilityRuleTypeRegistry, } from './rules/create_observability_rule_type_registry'; -import { createUseRulesLink } from './hooks/create_use_rules_link'; import { registerObservabilityRuleTypes } from './rules/register_observability_rule_types'; +import { createUseRulesLink } from './hooks/create_use_rules_link'; +import { + ALERTS_PATH, + CASES_PATH, + OBSERVABILITY_BASE_PATH, + OVERVIEW_PATH, + RULES_PATH, + SLOS_PATH, +} from './routes/paths'; import { createCoPilotService } from './context/co_pilot_context/create_co_pilot_service'; import { type CoPilotService } from './typings/co_pilot'; @@ -149,7 +157,7 @@ export class Plugin defaultMessage: 'Alerts', }), order: 8001, - path: '/alerts', + path: ALERTS_PATH, navLinkStatus: AppNavLinkStatus.hidden, deepLinks: [ { @@ -157,7 +165,7 @@ export class Plugin title: i18n.translate('xpack.observability.rulesLinkTitle', { defaultMessage: 'Rules', }), - path: '/alerts/rules', + path: RULES_PATH, navLinkStatus: AppNavLinkStatus.hidden, }, ], @@ -169,10 +177,10 @@ export class Plugin }), navLinkStatus: AppNavLinkStatus.hidden, order: 8002, - path: '/slos', + path: SLOS_PATH, }, getCasesDeepLinks({ - basePath: casesPath, + basePath: CASES_PATH, extend: { [CasesDeepLinkId.cases]: { order: 8003, @@ -224,21 +232,21 @@ export class Plugin const { ruleTypeRegistry, actionTypeRegistry } = pluginsStart.triggersActionsUi; return renderApp({ - core: coreStart, - config, - plugins: { ...pluginsStart, ruleTypeRegistry, actionTypeRegistry }, appMountParameters: params, + config, + core: coreStart, + isDev: this.initContext.env.mode.dev, + kibanaVersion, observabilityRuleTypeRegistry: this.observabilityRuleTypeRegistry, ObservabilityPageTemplate: pluginsStart.observabilityShared.navigation.PageTemplate, + plugins: { ...pluginsStart, ruleTypeRegistry, actionTypeRegistry }, usageCollection: pluginsSetup.usageCollection, - isDev: this.initContext.env.mode.dev, - kibanaVersion, }); }; const appUpdater$ = this.appUpdater$; const app = { - appRoute: '/app/observability', + appRoute: OBSERVABILITY_BASE_PATH, category, deepLinks: this.deepLinks, euiIconType, @@ -280,7 +288,7 @@ export class Plugin 'Consolidate your logs, metrics, application traces, and system availability with purpose-built UIs.', }), icon: 'logoObservability', - path: '/app/observability/', + path: `${OBSERVABILITY_BASE_PATH}/`, order: 200, }); } @@ -295,7 +303,7 @@ export class Plugin defaultMessage: 'Overview', }), app: observabilityAppId, - path: '/overview', + path: OVERVIEW_PATH, }; // Reformat the visible links to be NavigationEntry objects instead of diff --git a/x-pack/plugins/observability/public/routes/paths.ts b/x-pack/plugins/observability/public/routes/paths.ts new file mode 100644 index 00000000000000..1fcf7d74705f20 --- /dev/null +++ b/x-pack/plugins/observability/public/routes/paths.ts @@ -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. + */ + +export const OBSERVABILITY_BASE_PATH = '/app/observability'; +export const ROOT_PATH = '/' as const; +export const LANDING_PATH = '/landing' as const; +export const OVERVIEW_PATH = '/overview' as const; +export const ALERTS_PATH = '/alerts' as const; +export const ALERT_DETAIL_PATH = '/alerts/:alertId' as const; +export const EXPLORATORY_VIEW_PATH = '/exploratory-view' as const; // has been moved to its own app. Keeping around for redirecting purposes. +export const RULES_PATH = '/alerts/rules' as const; +export const RULE_DETAIL_PATH = '/alerts/rules/:ruleId' as const; +export const SLOS_PATH = '/slos' as const; +export const SLOS_WELCOME_PATH = '/slos/welcome' as const; +export const SLO_DETAIL_PATH = '/slos/:sloId' as const; +export const SLO_CREATE_PATH = '/slos/create' as const; +export const SLO_EDIT_PATH = '/slos/edit/:sloId' as const; +export const CASES_PATH = '/cases' as const; + +export const paths = { + observability: { + alerts: `${OBSERVABILITY_BASE_PATH}${ALERTS_PATH}`, + alertDetails: (alertId: string) => + `${OBSERVABILITY_BASE_PATH}${ALERTS_PATH}/${encodeURI(alertId)}`, + rules: `${OBSERVABILITY_BASE_PATH}${RULES_PATH}`, + ruleDetails: (ruleId: string) => `${OBSERVABILITY_BASE_PATH}${RULES_PATH}/${encodeURI(ruleId)}`, + slos: `${OBSERVABILITY_BASE_PATH}${SLOS_PATH}`, + slosWelcome: `${OBSERVABILITY_BASE_PATH}${SLOS_WELCOME_PATH}`, + sloCreate: `${OBSERVABILITY_BASE_PATH}${SLO_CREATE_PATH}`, + sloCreateWithEncodedForm: (encodedParams: string) => + `${OBSERVABILITY_BASE_PATH}${SLO_CREATE_PATH}?_a=${encodedParams}`, + sloEdit: (sloId: string) => `${OBSERVABILITY_BASE_PATH}${SLOS_PATH}/edit/${encodeURI(sloId)}`, + sloDetails: (sloId: string) => `${OBSERVABILITY_BASE_PATH}${SLOS_PATH}/${encodeURI(sloId)}`, + }, +}; diff --git a/x-pack/plugins/observability/public/routes/index.tsx b/x-pack/plugins/observability/public/routes/routes.tsx similarity index 79% rename from x-pack/plugins/observability/public/routes/index.tsx rename to x-pack/plugins/observability/public/routes/routes.tsx index e65f20e9cd6759..9fc1fc8d4b5a2d 100644 --- a/x-pack/plugins/observability/public/routes/index.tsx +++ b/x-pack/plugins/observability/public/routes/routes.tsx @@ -5,7 +5,6 @@ * 2.0. */ -import * as t from 'io-ts'; import React from 'react'; import { useHistory, useLocation } from 'react-router-dom'; import { DatePickerContextProvider } from '../context/date_picker_context/date_picker_context'; @@ -13,6 +12,7 @@ import { useKibana } from '../utils/kibana_react'; import { AlertsPage } from '../pages/alerts/alerts'; import { AlertDetails } from '../pages/alert_details/alert_details'; import { CasesPage } from '../pages/cases/cases'; +import { LandingPage } from '../pages/landing/landing'; import { OverviewPage } from '../pages/overview/overview'; import { RulesPage } from '../pages/rules/rules'; import { RuleDetailsPage } from '../pages/rule_details'; @@ -20,19 +20,22 @@ import { SlosPage } from '../pages/slos/slos'; import { SlosWelcomePage } from '../pages/slos_welcome/slos_welcome'; import { SloDetailsPage } from '../pages/slo_details/slo_details'; import { SloEditPage } from '../pages/slo_edit/slo_edit'; -import { casesPath } from '../../common'; -import { LandingPage } from '../pages/landing/landing'; - -export type RouteParams = DecodeParams; - -type DecodeParams = { - [key in keyof TParams]: TParams[key] extends t.Any ? t.TypeOf : never; -}; - -export interface Params { - query?: t.HasProps; - path?: t.HasProps; -} +import { + ALERTS_PATH, + ALERT_DETAIL_PATH, + CASES_PATH, + EXPLORATORY_VIEW_PATH, + LANDING_PATH, + OVERVIEW_PATH, + ROOT_PATH, + RULES_PATH, + RULE_DETAIL_PATH, + SLOS_PATH, + SLOS_WELCOME_PATH, + SLO_CREATE_PATH, + SLO_DETAIL_PATH, + SLO_EDIT_PATH, +} from './paths'; // Note: React Router DOM component was not working here // so I've recreated this simple version for this purpose. @@ -52,21 +55,21 @@ function SimpleRedirect({ to, redirectToApp }: { to: string; redirectToApp?: str } export const routes = { - '/': { + [ROOT_PATH]: { handler: () => { - return ; + return ; }, params: {}, exact: true, }, - '/landing': { + [LANDING_PATH]: { handler: () => { return ; }, params: {}, exact: true, }, - '/overview': { + [OVERVIEW_PATH]: { handler: () => { return ( @@ -77,79 +80,77 @@ export const routes = { params: {}, exact: true, }, - [casesPath]: { + [CASES_PATH]: { handler: () => { return ; }, params: {}, exact: false, }, - '/alerts': { + [ALERTS_PATH]: { handler: () => { return ; }, - params: { - // Technically gets a '_a' param by using Kibana URL state sync helpers - }, + params: {}, exact: true, }, - '/exploratory-view': { + [EXPLORATORY_VIEW_PATH]: { handler: () => { return ; }, params: {}, exact: true, }, - '/alerts/rules': { + [RULES_PATH]: { handler: () => { return ; }, params: {}, exact: true, }, - '/alerts/rules/:ruleId': { + [RULE_DETAIL_PATH]: { handler: () => { return ; }, params: {}, exact: true, }, - '/alerts/:alertId': { + [ALERT_DETAIL_PATH]: { handler: () => { return ; }, params: {}, exact: true, }, - '/slos': { + [SLOS_PATH]: { handler: () => { return ; }, params: {}, exact: true, }, - '/slos/create': { + [SLO_CREATE_PATH]: { handler: () => { return ; }, params: {}, exact: true, }, - '/slos/welcome': { + [SLOS_WELCOME_PATH]: { handler: () => { return ; }, params: {}, exact: true, }, - '/slos/edit/:sloId': { + [SLO_EDIT_PATH]: { handler: () => { return ; }, params: {}, exact: true, }, - '/slos/:sloId': { + [SLO_DETAIL_PATH]: { handler: () => { return ; }, diff --git a/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts b/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts index 8de756af5ebd31..14305e4f7ab913 100644 --- a/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts +++ b/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts @@ -6,7 +6,7 @@ */ import type { ObservabilityApp } from '../../../typings/common'; -import type { UXMetrics } from '../../components/core_web_vitals/core_vitals'; +import type { UXMetrics } from '../../pages/overview/components/sections/ux/core_web_vitals/core_vitals'; import { ApmIndicesConfig } from '../../../common/typings'; export interface Stat { diff --git a/x-pack/plugins/profiling/common/callee.ts b/x-pack/plugins/profiling/common/callee.ts index 04206843463fc1..68fa9170f44ecb 100644 --- a/x-pack/plugins/profiling/common/callee.ts +++ b/x-pack/plugins/profiling/common/callee.ts @@ -101,7 +101,7 @@ export function createCalleeTree( // e.g. when stopping the host agent or on network errors. const stackTrace = stackTraces.get(stackTraceID) ?? emptyStackTrace; const lenStackTrace = stackTrace.FrameIDs.length; - const samples = (events.get(stackTraceID) ?? 0) * scalingFactor; + const samples = Math.floor((events.get(stackTraceID) ?? 0) * scalingFactor); let currentNode = 0; diff --git a/x-pack/plugins/profiling/public/components/flamegraph/index.tsx b/x-pack/plugins/profiling/public/components/flamegraph/index.tsx index b16da9a6db8e86..5fc9fd4f997a1d 100644 --- a/x-pack/plugins/profiling/public/components/flamegraph/index.tsx +++ b/x-pack/plugins/profiling/public/components/flamegraph/index.tsx @@ -5,7 +5,15 @@ * 2.0. */ -import { Chart, Datum, Flame, FlameLayerValue, PartialTheme, Settings } from '@elastic/charts'; +import { + Chart, + Datum, + Flame, + FlameLayerValue, + PartialTheme, + Settings, + Tooltip, +} from '@elastic/charts'; import { EuiFlexGroup, EuiFlexItem, useEuiTheme } from '@elastic/eui'; import { Maybe } from '@kbn/observability-plugin/common/typings'; import React, { useEffect, useMemo, useState } from 'react'; @@ -109,45 +117,45 @@ export function FlameGraph({ setHighlightedVmIndex(selectedElement!.vmIndex); } }} - tooltip={{ - actions: [{ label: '', onSelect: () => {} }], - customTooltip: (props) => { - if (!primaryFlamegraph) { - return <>; - } + /> + {} }]} + customTooltip={(props) => { + if (!primaryFlamegraph) { + return <>; + } - const valueIndex = props.values[0].valueAccessor as number; - const label = primaryFlamegraph.Label[valueIndex]; - const countInclusive = primaryFlamegraph.CountInclusive[valueIndex]; - const countExclusive = primaryFlamegraph.CountExclusive[valueIndex]; - const totalSeconds = primaryFlamegraph.TotalSeconds; - const nodeID = primaryFlamegraph.ID[valueIndex]; + const valueIndex = props.values[0].valueAccessor as number; + const label = primaryFlamegraph.Label[valueIndex]; + const countInclusive = primaryFlamegraph.CountInclusive[valueIndex]; + const countExclusive = primaryFlamegraph.CountExclusive[valueIndex]; + const totalSeconds = primaryFlamegraph.TotalSeconds; + const nodeID = primaryFlamegraph.ID[valueIndex]; - const comparisonNode = columnarData.comparisonNodesById[nodeID]; + const comparisonNode = columnarData.comparisonNodesById[nodeID]; - return ( - { - if (!showInformationWindow) { - toggleShowInformationWindow(); - } - setHighlightedVmIndex(valueIndex); - }} - /> - ); - }, + return ( + { + if (!showInformationWindow) { + toggleShowInformationWindow(); + } + setHighlightedVmIndex(valueIndex); + }} + /> + ); }} /> (asPercentages ? asPercentage(d) : d.toFixed(0))} /> diff --git a/x-pack/plugins/profiling/public/components/subchart.tsx b/x-pack/plugins/profiling/public/components/subchart.tsx index 247765d2c88247..72c869e85c3a3c 100644 --- a/x-pack/plugins/profiling/public/components/subchart.tsx +++ b/x-pack/plugins/profiling/public/components/subchart.tsx @@ -16,6 +16,7 @@ import { ScaleType, Settings, timeFormatter, + Tooltip, } from '@elastic/charts'; import { EuiBadge, @@ -218,12 +219,8 @@ export function SubChart({ - + + (showAxes ? Number(d).toFixed(0) : '')} style={ showAxes diff --git a/x-pack/plugins/profiling/public/components/topn_functions/index.tsx b/x-pack/plugins/profiling/public/components/topn_functions/index.tsx index 0b5736c72fe39f..daf9d213e8e0c7 100644 --- a/x-pack/plugins/profiling/public/components/topn_functions/index.tsx +++ b/x-pack/plugins/profiling/public/components/topn_functions/index.tsx @@ -45,36 +45,24 @@ interface Row { }; } -function getTotalSamplesLabel(samplingRate?: number) { - if (samplingRate === undefined) { - return i18n.translate('xpack.profiling.functionsView.totalSampleCountLabel', { - defaultMessage: 'Total sample estimate:', - }); - } - return i18n.translate('xpack.profiling.functionsView.totalSampleCountLabelWithSamplingRate', { - defaultMessage: 'Total sample (estimate sample rate: {samplingRate}):', - values: { samplingRate }, - }); -} - function TotalSamplesStat({ totalSamples, newSamples, - samplingRateA, - samplingRateB, }: { totalSamples: number; newSamples: number | undefined; - samplingRateA: number; - samplingRateB: number | undefined; }) { const value = totalSamples.toLocaleString(); + const sampleHeader = i18n.translate('xpack.profiling.functionsView.totalSampleCountLabel', { + defaultMessage: ' Total sample estimate: ', + }); + if (newSamples === undefined || newSamples === 0) { return ( {value}} - description={getTotalSamplesLabel(samplingRateA)} + description={sampleHeader} /> ); } @@ -87,10 +75,10 @@ function TotalSamplesStat({ title={ {value} - + } - description={getTotalSamplesLabel(samplingRateB)} + description={sampleHeader} /> ); } @@ -418,8 +406,6 @@ export function TopNFunctionsTable({ diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_rule_alert_generator.ts b/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_rule_alert_generator.ts index 8396f86a45e971..1b74ae55f62894 100644 --- a/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_rule_alert_generator.ts +++ b/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_rule_alert_generator.ts @@ -279,6 +279,15 @@ export class EndpointRuleAlertGenerator extends BaseDataGenerator { value: '', }, ], + response_actions: [ + { + action_type_id: 'endpoint', + params: { + command: 'isolate', + comment: 'test', + }, + }, + ], rule_id: ELASTIC_SECURITY_RULE_ID, rule_name_override: 'message', severity: 'medium', diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_action_generator.ts b/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_action_generator.ts index 093ea582516873..1b60699e7c19f3 100644 --- a/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_action_generator.ts +++ b/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_action_generator.ts @@ -23,7 +23,6 @@ export class FleetActionGenerator extends BaseDataGenerator { /** Generate a random endpoint Action (isolate or unisolate) */ generate(overrides: DeepPartial = {}): EndpointAction { const timeStamp = overrides['@timestamp'] ? new Date(overrides['@timestamp']) : new Date(); - return merge( { action_id: this.seededUUIDv4(), diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_fleet_actions.ts b/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_fleet_actions.ts index 48587055a8988f..a0be011c4ce901 100644 --- a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_fleet_actions.ts +++ b/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_fleet_actions.ts @@ -15,11 +15,13 @@ import type { LogsEndpointAction, LogsEndpointActionResponse, } from '../types'; -import { ENDPOINT_ACTIONS_INDEX, ENDPOINT_ACTION_RESPONSES_INDEX } from '../constants'; +import { ENDPOINT_ACTION_RESPONSES_INDEX, ENDPOINT_ACTIONS_INDEX } from '../constants'; import { FleetActionGenerator } from '../data_generators/fleet_action_generator'; import { wrapErrorAndRejectPromise } from './utils'; +import { EndpointActionGenerator } from '../data_generators/endpoint_action_generator'; -const defaultFleetActionGenerator = new FleetActionGenerator(); +const fleetActionGenerator = new FleetActionGenerator(); +const endpointActionGenerator = new EndpointActionGenerator(); export interface IndexedEndpointAndFleetActionsForHostResponse { actions: EndpointAction[]; @@ -34,25 +36,26 @@ export interface IndexedEndpointAndFleetActionsForHostResponse { export interface IndexEndpointAndFleetActionsForHostOptions { numResponseActions?: number; + alertIds?: string[]; } + /** * Indexes a random number of Endpoint (via Fleet) Actions for a given host - * (NOTE: ensure that fleet is setup first before calling this loading function) + * (NOTE: ensure that fleet is set up first before calling this loading function) * * @param esClient * @param endpointHost - * @param [fleetActionGenerator] + * @param options */ export const indexEndpointAndFleetActionsForHost = async ( esClient: Client, endpointHost: HostMetadata, - fleetActionGenerator: FleetActionGenerator = defaultFleetActionGenerator, options: IndexEndpointAndFleetActionsForHostOptions = {} ): Promise => { const ES_INDEX_OPTIONS = { headers: { 'X-elastic-product-origin': 'fleet' } }; const agentId = endpointHost.elastic.agent.id; const actionsCount = options.numResponseActions ?? 1; - const total = fleetActionGenerator.randomN(5) + actionsCount; + const total = actionsCount === 1 ? actionsCount : fleetActionGenerator.randomN(5) + actionsCount; const response: IndexedEndpointAndFleetActionsForHostResponse = { actions: [], actionResponses: [], @@ -65,49 +68,60 @@ export const indexEndpointAndFleetActionsForHost = async ( }; for (let i = 0; i < total; i++) { - // create an action - const action = fleetActionGenerator.generate({ - data: { comment: 'data generator: this host is bad' }, + // start with endpoint action + const logsEndpointAction: LogsEndpointAction = endpointActionGenerator.generate({ + EndpointActions: { + data: { comment: 'data generator: this host is bad' }, + }, }); - action.agents = [agentId]; + const fleetAction: EndpointAction = { + ...logsEndpointAction.EndpointActions, + '@timestamp': logsEndpointAction['@timestamp'], + agents: + typeof logsEndpointAction.agent.id === 'string' + ? [logsEndpointAction.agent.id] + : logsEndpointAction.agent.id, + user_id: logsEndpointAction.user.id, + }; + + // index fleet action const indexFleetActions = esClient - .index( + .index( { index: AGENT_ACTIONS_INDEX, - body: action, + body: fleetAction, refresh: 'wait_for', }, ES_INDEX_OPTIONS ) .catch(wrapErrorAndRejectPromise); - const endpointActionsBody: LogsEndpointAction & { - EndpointActions: LogsEndpointAction['EndpointActions'] & { - '@timestamp': undefined; - user_id: undefined; - }; - } = { + const logsEndpointActionsBody: LogsEndpointAction = { + ...logsEndpointAction, EndpointActions: { - ...action, - '@timestamp': undefined, - user_id: undefined, - }, - agent: { - id: [agentId], - }, - '@timestamp': action['@timestamp'], - user: { - id: action.user_id, + ...logsEndpointAction.EndpointActions, + data: { + ...logsEndpointAction.EndpointActions.data, + alert_id: options.alertIds, + }, }, + // to test automated actions in cypress + user: options.alertIds ? { id: 'unknown' } : logsEndpointAction.user, + rule: options.alertIds + ? { + id: 'generated_rule_id', + name: 'generated_rule_name', + } + : logsEndpointAction.rule, }; await Promise.all([ indexFleetActions, esClient - .index({ + .index({ index: ENDPOINT_ACTIONS_INDEX, - body: endpointActionsBody, + body: logsEndpointActionsBody, refresh: 'wait_for', }) .catch(wrapErrorAndRejectPromise), @@ -115,8 +129,8 @@ export const indexEndpointAndFleetActionsForHost = async ( const randomFloat = fleetActionGenerator.randomFloat(); // Create an action response for the above - const actionResponse = fleetActionGenerator.generateResponse({ - action_id: action.action_id, + const fleetActionResponse: EndpointActionResponse = fleetActionGenerator.generateResponse({ + action_id: logsEndpointAction.EndpointActions.action_id, agent_id: agentId, action_response: { endpoint: { @@ -129,10 +143,10 @@ export const indexEndpointAndFleetActionsForHost = async ( }); const indexFleetResponses = esClient - .index( + .index( { index: AGENT_ACTIONS_RESULTS_INDEX, - body: actionResponse, + body: fleetActionResponse, refresh: 'wait_for', }, ES_INDEX_OPTIONS @@ -143,8 +157,8 @@ export const indexEndpointAndFleetActionsForHost = async ( if (randomFloat < 0.7) { const endpointActionResponseBody = { EndpointActions: { - ...actionResponse, - data: actionResponse.action_data, + ...fleetActionResponse, + data: fleetActionResponse.action_data, '@timestamp': undefined, action_data: undefined, agent_id: undefined, @@ -157,16 +171,16 @@ export const indexEndpointAndFleetActionsForHost = async ( error: randomFloat < 0.1 ? { - message: actionResponse.error, + message: fleetActionResponse.error, } : undefined, - '@timestamp': actionResponse['@timestamp'], + '@timestamp': fleetActionResponse['@timestamp'], }; await Promise.all([ indexFleetResponses, esClient - .index({ + .index({ index: ENDPOINT_ACTION_RESPONSES_INDEX, body: endpointActionResponseBody, refresh: 'wait_for', @@ -178,8 +192,8 @@ export const indexEndpointAndFleetActionsForHost = async ( await indexFleetResponses; } - response.actions.push(action); - response.actionResponses.push(actionResponse); + response.actions.push(fleetAction); + response.actionResponses.push(fleetActionResponse); } // Add edge case fleet actions (maybe) @@ -191,54 +205,54 @@ export const indexEndpointAndFleetActionsForHost = async ( }; // 70% of the time just add either an Isolate -OR- an UnIsolate action if (randomFloat < 0.7) { - let action: EndpointAction; + let fleetAction: EndpointAction; if (randomFloat < 0.3) { // add a pending isolation - action = fleetActionGenerator.generateIsolateAction(actionStartedAt); + fleetAction = fleetActionGenerator.generateIsolateAction(actionStartedAt); } else { // add a pending UN-isolation - action = fleetActionGenerator.generateUnIsolateAction(actionStartedAt); + fleetAction = fleetActionGenerator.generateUnIsolateAction(actionStartedAt); } - action.agents = [agentId]; + fleetAction.agents = [agentId]; await esClient - .index( + .index( { index: AGENT_ACTIONS_INDEX, - body: action, + body: fleetAction, refresh: 'wait_for', }, ES_INDEX_OPTIONS ) .catch(wrapErrorAndRejectPromise); - response.actions.push(action); + response.actions.push(fleetAction); } else { // Else (30% of the time) add a pending isolate AND pending un-isolate - const action1 = fleetActionGenerator.generateIsolateAction(actionStartedAt); - const action2 = fleetActionGenerator.generateUnIsolateAction(actionStartedAt); + const fleetAction1 = fleetActionGenerator.generateIsolateAction(actionStartedAt); + const fleetAction2 = fleetActionGenerator.generateUnIsolateAction(actionStartedAt); - action1.agents = [agentId]; - action2.agents = [agentId]; + fleetAction1.agents = [agentId]; + fleetAction2.agents = [agentId]; await Promise.all([ esClient - .index( + .index( { index: AGENT_ACTIONS_INDEX, - body: action1, + body: fleetAction1, refresh: 'wait_for', }, ES_INDEX_OPTIONS ) .catch(wrapErrorAndRejectPromise), esClient - .index( + .index( { index: AGENT_ACTIONS_INDEX, - body: action2, + body: fleetAction2, refresh: 'wait_for', }, ES_INDEX_OPTIONS @@ -246,7 +260,7 @@ export const indexEndpointAndFleetActionsForHost = async ( .catch(wrapErrorAndRejectPromise), ]); - response.actions.push(action1, action2); + response.actions.push(fleetAction1, fleetAction2); } } diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hosts.ts b/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hosts.ts index c467735fdb3273..d778e1cde027f9 100644 --- a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hosts.ts +++ b/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hosts.ts @@ -90,6 +90,7 @@ export async function indexEndpointHostDocs({ generator, withResponseActions = true, numResponseActions, + alertIds, }: { numDocs: number; client: Client; @@ -102,6 +103,7 @@ export async function indexEndpointHostDocs({ generator: EndpointDocGenerator; withResponseActions?: boolean; numResponseActions?: IndexEndpointAndFleetActionsForHostOptions['numResponseActions']; + alertIds?: string[]; }): Promise { const timeBetweenDocs = 6 * 3600 * 1000; // 6 hours between metadata documents const timestamp = new Date().getTime(); @@ -198,14 +200,10 @@ export async function indexEndpointHostDocs({ if (withResponseActions) { // Create some fleet endpoint actions and .logs-endpoint actions for this Host - const actionsResponse = await indexEndpointAndFleetActionsForHost( - client, - hostMetadata, - undefined, - { - numResponseActions, - } - ); + const actionsResponse = await indexEndpointAndFleetActionsForHost(client, hostMetadata, { + alertIds, + numResponseActions, + }); mergeAndAppendArrays(response, actionsResponse); } } diff --git a/x-pack/plugins/security_solution/common/endpoint/index_data.ts b/x-pack/plugins/security_solution/common/endpoint/index_data.ts index 2ad264ab14b914..d01c5f9bdae075 100644 --- a/x-pack/plugins/security_solution/common/endpoint/index_data.ts +++ b/x-pack/plugins/security_solution/common/endpoint/index_data.ts @@ -65,7 +65,8 @@ export async function indexHostsAndAlerts( options: TreeOptions = {}, DocGenerator: typeof EndpointDocGenerator = EndpointDocGenerator, withResponseActions = true, - numResponseActions?: number + numResponseActions?: number, + alertIds?: string[] ): Promise { const random = seedrandom(seed); const epmEndpointPackage = await getEndpointPackageInfo(kbnClient); @@ -119,6 +120,7 @@ export async function indexHostsAndAlerts( generator, withResponseActions, numResponseActions, + alertIds, }); mergeAndAppendArrays(response, indexedHosts); diff --git a/x-pack/plugins/security_solution/public/common/components/alerts_treemap/index.tsx b/x-pack/plugins/security_solution/public/common/components/alerts_treemap/index.tsx index 1683bba36c1c75..c60080580fc6f3 100644 --- a/x-pack/plugins/security_solution/public/common/components/alerts_treemap/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/alerts_treemap/index.tsx @@ -12,7 +12,7 @@ import { isEmpty } from 'lodash/fp'; import React, { useCallback, useMemo } from 'react'; import styled from 'styled-components'; -import { useTheme } from '../charts/common'; +import { useThemes } from '../charts/common'; import { DraggableLegend } from '../charts/draggable_legend'; import type { LegendItem } from '../charts/draggable_legend_item'; import type { AlertSearchResponse } from '../../../detections/containers/detection_engine/alerts/types'; @@ -59,22 +59,23 @@ const AlertsTreemapComponent: React.FC = ({ stackByField0, stackByField1, }: Props) => { - const theme = useTheme(); - const fillColor = useMemo(() => theme.background.color, [theme.background.color]); - - const treemapTheme: PartialTheme[] = useMemo( - () => [ - { - partition: { - fillLabel: { valueFont: { fontWeight: 700 } }, - idealFontSizeJump: 1.15, - maxFontSize: 16, - minFontSize: 4, - sectorLineStroke: fillColor, // draws the light or dark "lines" between partitions - sectorLineWidth: 1.5, - }, + const { theme, baseTheme } = useThemes(); + const fillColor = useMemo( + () => theme?.background?.color ?? baseTheme.background.color, + [theme?.background?.color, baseTheme.background.color] + ); + + const treemapTheme: PartialTheme = useMemo( + () => ({ + partition: { + fillLabel: { valueFont: { fontWeight: 700 } }, + idealFontSizeJump: 1.15, + maxFontSize: 16, + minFontSize: 4, + sectorLineStroke: fillColor, // draws the light or dark "lines" between partitions + sectorLineWidth: 1.5, }, - ], + }), [fillColor] ); @@ -173,9 +174,9 @@ const AlertsTreemapComponent: React.FC = ({ ) : ( { - const theme = useTheme(); + const themes = useThemes(); const timeZone = useTimeZone(); const xTickFormatter = get('configs.axis.xTickFormatter', chartConfigs); const yTickFormatter = get('configs.axis.yTickFormatter', chartConfigs); const xAxisId = `group-${data[0].key}-x`; const yAxisId = `group-${data[0].key}-y`; - const settings = { + const settings: SettingsProps = { ...chartDefaultSettings, - theme, + ...themes, ...get('configs.settings', chartConfigs), }; return chartConfigs.width && chartConfigs.height ? ( diff --git a/x-pack/plugins/security_solution/public/common/components/charts/barchart.tsx b/x-pack/plugins/security_solution/public/common/components/charts/barchart.tsx index 9390c2edeee9a9..30c4c985e2d72b 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/barchart.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/barchart.tsx @@ -7,6 +7,7 @@ import { EuiFlexItem } from '@elastic/eui'; import React, { useMemo } from 'react'; +import type { SettingsProps } from '@elastic/charts'; import { Chart, BarSeries, Axis, Position, ScaleType, Settings } from '@elastic/charts'; import { getOr, get, isNumber } from 'lodash/fp'; import deepmerge from 'deepmerge'; @@ -28,7 +29,7 @@ import { getChartHeight, getChartWidth, WrappedByAutoSizer, - useTheme, + useThemes, Wrapper, BarChartWrapper, } from './common'; @@ -75,16 +76,16 @@ export const BarChartBaseComponent = ({ configs?: ChartSeriesConfigs | undefined; forceHiddenLegend?: boolean; }) => { - const theme = useTheme(); + const themes = useThemes(); const timeZone = useTimeZone(); const xTickFormatter = get('configs.axis.xTickFormatter', chartConfigs); const yTickFormatter = get('configs.axis.yTickFormatter', chartConfigs); const tickSize = getOr(0, 'configs.axis.tickSize', chartConfigs); const xAxisId = `stat-items-barchart-${data[0].key}-x`; const yAxisId = `stat-items-barchart-${data[0].key}-y`; - const settings = { + const settings: SettingsProps = { ...chartDefaultSettings, - ...deepmerge(get('configs.settings', chartConfigs), { theme }), + ...deepmerge(get('configs.settings', chartConfigs), themes), }; const xAxisStyle = useMemo( diff --git a/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx b/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx index e6d9143566b40c..572706719eb88c 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx @@ -17,8 +17,9 @@ import { getChartHeight, getChartWidth, WrappedByAutoSizer, - useTheme, + useThemes, } from './common'; +import { LIGHT_THEME, DARK_THEME } from '@elastic/charts'; jest.mock('../../lib/kibana'); @@ -169,22 +170,25 @@ describe('checkIfAllValuesAreZero', () => { }); }); - describe('useTheme', () => { - it('merges our spacing with the default theme', () => { - const { result } = renderHook(() => useTheme()); + describe('useThemes', () => { + it('should return custom spacing theme', () => { + const { result } = renderHook(() => useThemes()); - expect(result.current).toEqual( - expect.objectContaining({ chartMargins: expect.objectContaining({ top: 4, bottom: 0 }) }) - ); + expect(result.current.theme.chartMargins).toMatchObject({ top: 4, bottom: 0 }); }); - it('returns a different theme depending on user settings', () => { - const { result: defaultResult } = renderHook(() => useTheme()); - (useUiSetting as jest.Mock).mockImplementation(() => true); + it('should return light baseTheme when isDarkMode false', () => { + (useUiSetting as jest.Mock).mockImplementation(() => false); + const { result } = renderHook(() => useThemes()); + + expect(result.current.baseTheme).toBe(LIGHT_THEME); + }); - const { result: darkResult } = renderHook(() => useTheme()); + it('should return dark baseTheme when isDarkMode true', () => { + (useUiSetting as jest.Mock).mockImplementation(() => true); + const { result } = renderHook(() => useThemes()); - expect(defaultResult.current).not.toMatchObject(darkResult.current); + expect(result.current.baseTheme).toBe(DARK_THEME); }); }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/charts/common.tsx b/x-pack/plugins/security_solution/public/common/components/charts/common.tsx index 0e4a68b5912f9a..bf8f561cdfdf36 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/common.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/common.tsx @@ -15,10 +15,11 @@ import type { BrushEndListener, AxisStyle, BarSeriesStyle, + Theme, } from '@elastic/charts'; -import { DARK_THEME, LIGHT_THEME, mergeWithDefaultTheme, Position } from '@elastic/charts'; +import { DARK_THEME, LIGHT_THEME, Position } from '@elastic/charts'; import { EuiFlexGroup } from '@elastic/eui'; -import React, { useMemo } from 'react'; +import React from 'react'; import styled from 'styled-components'; import { DEFAULT_DARK_MODE } from '../../../../common/constants'; @@ -111,20 +112,19 @@ const theme: PartialTheme = { barsPadding: 0.05, }, }; -export const useTheme = () => { +export const useThemes = (): { baseTheme: Theme; theme: PartialTheme } => { const isDarkMode = useUiSetting(DEFAULT_DARK_MODE); // TODO use the EUI charts theme see src/plugins/charts/public/services/theme/README.md - const defaultTheme = isDarkMode ? DARK_THEME : LIGHT_THEME; - // eslint-disable-next-line react-hooks/exhaustive-deps - const themeValue = useMemo(() => mergeWithDefaultTheme(theme, defaultTheme), []); - - return themeValue; + const baseTheme = isDarkMode ? DARK_THEME : LIGHT_THEME; + return { + baseTheme, + theme, + }; }; -export const chartDefaultSettings = { +export const chartDefaultSettings: SettingsProps = { rotation: chartDefaultRotation, rendering: chartDefaultRendering, - animatedData: false, showLegend: false, showLegendExtra: false, debug: false, diff --git a/x-pack/plugins/security_solution/public/common/components/charts/donutchart.test.tsx b/x-pack/plugins/security_solution/public/common/components/charts/donutchart.test.tsx index 9d482e0565e5cb..18313b002b2232 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/donutchart.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/donutchart.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import type { Severity } from '@kbn/securitysolution-io-ts-alerting-types'; -import { Partition, Settings } from '@elastic/charts'; +import { LIGHT_THEME, Partition, Settings } from '@elastic/charts'; import { parsedMockAlertsData } from '../../../overview/components/detection_response/alerts_by_status/mock_data'; import { render } from '@testing-library/react'; import type { DonutChartProps } from './donutchart'; @@ -47,14 +47,12 @@ jest.mock('./draggable_legend', () => { }; }); +const mockBaseTheme = LIGHT_THEME; jest.mock('./common', () => { return { - useTheme: jest.fn(() => ({ - eui: { - euiScrollBar: 0, - euiColorDarkShade: '#fff', - euiScrollBarCorner: '#ccc', - }, + useThemes: jest.fn(() => ({ + baseTheme: mockBaseTheme, + theme: {}, })), }; }); @@ -94,25 +92,18 @@ describe('DonutChart', () => { const { container } = render(); expect(container.querySelector(`[data-test-subj="es-chart-settings"]`)).toBeInTheDocument(); - expect((Settings as jest.Mock).mock.calls[0][0]).toEqual({ - baseTheme: { - eui: { - euiColorDarkShade: '#fff', - euiScrollBar: 0, - euiScrollBarCorner: '#ccc', - }, - }, - theme: { - chartMargins: { bottom: 0, left: 0, right: 0, top: 0 }, - partition: { - circlePadding: 4, - emptySizeRatio: 0.8, - idealFontSizeJump: 1.1, - outerSizeRatio: 1, - }, + const settingsProps = (Settings as jest.Mock).mock.calls[0][0]; + expect(settingsProps.baseTheme).toEqual(LIGHT_THEME); + expect(settingsProps.theme[0]).toEqual({ + chartMargins: { bottom: 0, left: 0, right: 0, top: 0 }, + partition: { + circlePadding: 4, + emptySizeRatio: 0.8, + idealFontSizeJump: 1.1, + outerSizeRatio: 1, }, - onElementClick: expect.any(Function), }); + expect(settingsProps.onElementClick).toBeInstanceOf(Function); }); test('should render an empty chart', () => { diff --git a/x-pack/plugins/security_solution/public/common/components/charts/donutchart.tsx b/x-pack/plugins/security_solution/public/common/components/charts/donutchart.tsx index 3a54f26ae7ddea..c41a5a0e93b102 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/donutchart.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/donutchart.tsx @@ -21,7 +21,7 @@ import { isEmpty } from 'lodash'; import type { FlattenSimpleInterpolation } from 'styled-components'; import styled from 'styled-components'; -import { useTheme } from './common'; +import { useThemes } from './common'; import { DraggableLegend } from './draggable_legend'; import type { LegendItem } from './draggable_legend_item'; import { DonutChartEmpty } from './donutchart_empty'; @@ -162,7 +162,7 @@ export const DonutChart = ({ title, totalCount, }: DonutChartProps) => { - const theme = useTheme(); + const { baseTheme, theme } = useThemes(); const onElementClicked: ElementClickListener = useCallback( (event) => { @@ -195,7 +195,11 @@ export const DonutChart = ({ ) : ( - + { const requestBody = hostIsolationRequestBodyMock(); await isolateHost(requestBody); - expect(mockKibanaServices().http.post).toHaveBeenCalledWith(ISOLATE_HOST_ROUTE, { + expect(mockKibanaServices().http.post).toHaveBeenCalledWith(ISOLATE_HOST_ROUTE_V2, { body: JSON.stringify(requestBody), + version: '2023-10-31', }); }); @@ -33,8 +37,9 @@ describe('When using Host Isolation library', () => { const requestBody = hostIsolationRequestBodyMock(); await unIsolateHost(requestBody); - expect(mockKibanaServices().http.post).toHaveBeenCalledWith(UNISOLATE_HOST_ROUTE, { + expect(mockKibanaServices().http.post).toHaveBeenCalledWith(UNISOLATE_HOST_ROUTE_V2, { body: JSON.stringify(requestBody), + version: '2023-10-31', }); }); }); diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint_isolation/index.ts b/x-pack/plugins/security_solution/public/common/lib/endpoint_isolation/index.ts index a83f4ea7d3ce75..71cde358a17a37 100644 --- a/x-pack/plugins/security_solution/public/common/lib/endpoint_isolation/index.ts +++ b/x-pack/plugins/security_solution/public/common/lib/endpoint_isolation/index.ts @@ -10,14 +10,18 @@ import type { ResponseActionApiResponse, } from '../../../../common/endpoint/types'; import { KibanaServices } from '../kibana'; -import { ISOLATE_HOST_ROUTE, UNISOLATE_HOST_ROUTE } from '../../../../common/endpoint/constants'; +import { + ISOLATE_HOST_ROUTE_V2, + UNISOLATE_HOST_ROUTE_V2, +} from '../../../../common/endpoint/constants'; /** Isolates a Host running either elastic endpoint or fleet agent */ export const isolateHost = async ( params: HostIsolationRequestBody ): Promise => { - return KibanaServices.get().http.post(ISOLATE_HOST_ROUTE, { + return KibanaServices.get().http.post(ISOLATE_HOST_ROUTE_V2, { body: JSON.stringify(params), + version: '2023-10-31', }); }; @@ -25,7 +29,8 @@ export const isolateHost = async ( export const unIsolateHost = async ( params: HostIsolationRequestBody ): Promise => { - return KibanaServices.get().http.post(UNISOLATE_HOST_ROUTE, { + return KibanaServices.get().http.post(UNISOLATE_HOST_ROUTE_V2, { body: JSON.stringify(params), + version: '2023-10-31', }); }; diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint_isolation/mocks.ts b/x-pack/plugins/security_solution/public/common/lib/endpoint_isolation/mocks.ts index b0bbc70393092f..5540f4c9667733 100644 --- a/x-pack/plugins/security_solution/public/common/lib/endpoint_isolation/mocks.ts +++ b/x-pack/plugins/security_solution/public/common/lib/endpoint_isolation/mocks.ts @@ -11,7 +11,10 @@ import type { } from '../../../../common/endpoint/types'; import type { ResponseProvidersInterface } from '../../mock/endpoint/http_handler_mock_factory'; import { httpHandlerMockFactory } from '../../mock/endpoint/http_handler_mock_factory'; -import { ISOLATE_HOST_ROUTE, UNISOLATE_HOST_ROUTE } from '../../../../common/endpoint/constants'; +import { + ISOLATE_HOST_ROUTE_V2, + UNISOLATE_HOST_ROUTE_V2, +} from '../../../../common/endpoint/constants'; export const hostIsolationRequestBodyMock = (): HostIsolationRequestBody => { return { @@ -37,13 +40,13 @@ export const hostIsolationHttpMocks = httpHandlerMockFactory hostIsolationResponseMock(), }, { id: 'unIsolateHost', method: 'post', - path: UNISOLATE_HOST_ROUTE, + path: UNISOLATE_HOST_ROUTE_V2, handler: () => hostIsolationResponseMock(), }, ]); diff --git a/x-pack/plugins/security_solution/public/common/lib/process_actions/index.ts b/x-pack/plugins/security_solution/public/common/lib/process_actions/index.ts index 5e34218a9f0b5c..ef38144a5c53cd 100644 --- a/x-pack/plugins/security_solution/public/common/lib/process_actions/index.ts +++ b/x-pack/plugins/security_solution/public/common/lib/process_actions/index.ts @@ -18,6 +18,7 @@ export const killProcess = ( ): Promise => { return KibanaServices.get().http.post(KILL_PROCESS_ROUTE, { body: JSON.stringify(params), + version: '2023-10-31', }); }; @@ -27,5 +28,6 @@ export const suspendProcess = ( ): Promise => { return KibanaServices.get().http.post(SUSPEND_PROCESS_ROUTE, { body: JSON.stringify(params), + version: '2023-10-31', }); }; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/alerts_histogram.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/alerts_histogram.tsx index 3966c9a319582f..f20684f974ec42 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/alerts_histogram.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/alerts_histogram.tsx @@ -11,7 +11,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiProgress } from '@elastic/eui'; import React, { useMemo } from 'react'; import type { UpdateDateRange, ChartData } from '../../../../common/components/charts/common'; -import { useTheme } from '../../../../common/components/charts/common'; +import { useThemes } from '../../../../common/components/charts/common'; import { histogramDateTimeFormatter } from '../../../../common/components/utils'; import { hasValueToDisplay } from '../../../../common/utils/validators'; import { DraggableLegend } from '../../../../common/components/charts/draggable_legend'; @@ -47,8 +47,7 @@ export const AlertsHistogram = React.memo( to, updateDateRange, }) => { - const theme = useTheme(); - + const { baseTheme, theme } = useThemes(); const chartSize: ChartSizeArray = useMemo(() => ['100%', chartHeight], [chartHeight]); const xAxisId = 'alertsHistogramAxisX'; const yAxisId = 'alertsHistogramAxisY'; @@ -81,6 +80,7 @@ export const AlertsHistogram = React.memo( showLegend={showLegend && legendItems.length === 0} showLegendExtra={showLegend} theme={theme} + baseTheme={baseTheme} /> diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts index adbb0048818fec..eea9500e868a83 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts @@ -179,8 +179,9 @@ describe('Detections Alerts API', () => { comment: 'commento', caseIds: ['88c04a90-b19c-11eb-b838-bf3c7840b969'], }); - expect(postMock).toHaveBeenCalledWith('/api/endpoint/isolate', { + expect(postMock).toHaveBeenCalledWith('/api/endpoint/action/isolate', { body: '{"endpoint_ids":["fd8a122b-4c54-4c05-b295-e5f8381fc59d"],"comment":"commento","case_ids":["88c04a90-b19c-11eb-b838-bf3c7840b969"]}', + version: '2023-10-31', }); }); diff --git a/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_score_over_time/index.tsx b/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_score_over_time/index.tsx index a8906bfab2fa62..7a5170d20235a3 100644 --- a/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_score_over_time/index.tsx +++ b/x-pack/plugins/security_solution/public/explore/components/risk_score/risk_score_over_time/index.tsx @@ -16,11 +16,12 @@ import { Position, AnnotationDomainType, LineAnnotation, + Tooltip, } from '@elastic/charts'; import { EuiFlexGroup, EuiFlexItem, EuiLoadingChart, EuiText, EuiPanel } from '@elastic/eui'; import styled from 'styled-components'; import { euiThemeVars } from '@kbn/ui-theme'; -import { chartDefaultSettings, useTheme } from '../../../../common/components/charts/common'; +import { chartDefaultSettings, useThemes } from '../../../../common/components/charts/common'; import { useTimeZone } from '../../../../common/lib/kibana'; import { histogramDateTimeFormatter } from '../../../../common/components/utils'; import { HeaderSection } from '../../../../common/components/header_section'; @@ -85,8 +86,7 @@ const RiskScoreOverTimeComponent: React.FC = ({ [] ); - const theme = useTheme(); - + const { baseTheme, theme } = useThemes(); const graphData = useMemo( () => riskScore @@ -144,19 +144,14 @@ const RiskScoreOverTimeComponent: React.FC = ({ ) : ( - + + { expect(apiMocks.responseProvider.getFile).toHaveBeenCalledWith({ body: '{"endpoint_ids":["a.b.c"],"parameters":{"path":"one/two"}}', path: GET_FILE_ROUTE, + version: '2023-10-31', }); }); }); diff --git a/x-pack/plugins/security_solution/public/management/cypress.config.ts b/x-pack/plugins/security_solution/public/management/cypress.config.ts index d22255d3dc635a..153527a19ea15e 100644 --- a/x-pack/plugins/security_solution/public/management/cypress.config.ts +++ b/x-pack/plugins/security_solution/public/management/cypress.config.ts @@ -40,7 +40,7 @@ export default defineCypressConfig({ // baseUrl: To override, set Env. variable `CYPRESS_BASE_URL` baseUrl: 'http://localhost:5601', supportFile: 'public/management/cypress/support/e2e.ts', - specPattern: 'public/management/cypress/e2e/mocked_data/*.cy.{js,jsx,ts,tsx}', + specPattern: 'public/management/cypress/e2e/mocked_data/', experimentalRunAllSpecs: true, setupNodeEvents: (on, config) => { return dataLoaders(on, config); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/response_actions.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/automated_response_actions/form.cy.ts similarity index 88% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/response_actions.cy.ts rename to x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/automated_response_actions/form.cy.ts index 987d65b0f311fc..9f6b380b1fdf37 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/response_actions.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/automated_response_actions/form.cy.ts @@ -13,12 +13,12 @@ import { tryAddingDisabledResponseAction, validateAvailableCommands, visitRuleActions, -} from '../../tasks/response_actions'; -import { cleanupRule, generateRandomStringName, loadRule } from '../../tasks/api_fixtures'; -import { RESPONSE_ACTION_TYPES } from '../../../../../common/detection_engine/rule_response_actions/schemas'; -import { loginWithRole, ROLE } from '../../tasks/login'; +} from '../../../tasks/response_actions'; +import { cleanupRule, generateRandomStringName, loadRule } from '../../../tasks/api_fixtures'; +import { RESPONSE_ACTION_TYPES } from '../../../../../../common/detection_engine/rule_response_actions/schemas'; +import { loginWithRole, ROLE } from '../../../tasks/login'; -describe('Response actions', () => { +describe('Form', () => { describe('User with no access can not create an endpoint response action', () => { before(() => { loginWithRole(ROLE.endpoint_response_actions_no_access); @@ -142,6 +142,23 @@ describe('Response actions', () => { }); }); + describe('User should not see endpoint action when no rbac', () => { + const [ruleName, ruleDescription] = generateRandomStringName(2); + + before(() => { + loginWithRole(ROLE.endpoint_response_actions_no_access); + }); + + it('response actions are disabled', () => { + fillUpNewRule(ruleName, ruleDescription); + cy.getByTestSubj('response-actions-wrapper').within(() => { + cy.getByTestSubj('Endpoint Security-response-action-type-selection-option').should( + 'be.disabled' + ); + }); + }); + }); + describe('User without access can not edit, add nor delete an endpoint response action', () => { let ruleId: string; diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/automated_response_actions/history_log.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/automated_response_actions/history_log.cy.ts new file mode 100644 index 00000000000000..369ee507206b81 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/automated_response_actions/history_log.cy.ts @@ -0,0 +1,90 @@ +/* + * 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 { generateRandomStringName } from '@kbn/osquery-plugin/cypress/tasks/integrations'; +import { indexEndpointHosts } from '../../../tasks/index_endpoint_hosts'; +import type { ReturnTypeFromChainable } from '../../../types'; +import { indexEndpointRuleAlerts } from '../../../tasks/index_endpoint_rule_alerts'; + +import { login, ROLE } from '../../../tasks/login'; + +describe('Response actions history page', () => { + let endpointData: ReturnTypeFromChainable | undefined; + let endpointDataWithAutomated: ReturnTypeFromChainable | undefined; + let alertData: ReturnTypeFromChainable | undefined; + const [endpointAgentId, endpointHostname] = generateRandomStringName(2); + + before(() => { + login(ROLE.endpoint_response_actions_access); + + indexEndpointHosts({ numResponseActions: 2 }).then((indexEndpoints) => { + endpointData = indexEndpoints; + }); + indexEndpointRuleAlerts({ + endpointAgentId, + endpointHostname, + endpointIsolated: false, + }).then((indexedAlert) => { + alertData = indexedAlert; + const alertId = alertData.alerts[0]._id; + return indexEndpointHosts({ + numResponseActions: 1, + alertIds: [alertId], + }).then((indexEndpoints) => { + endpointDataWithAutomated = indexEndpoints; + }); + }); + }); + + after(() => { + if (endpointDataWithAutomated) { + endpointDataWithAutomated.cleanup(); + endpointDataWithAutomated = undefined; + } + if (endpointData) { + endpointData.cleanup(); + endpointData = undefined; + } + + if (alertData) { + alertData.cleanup(); + alertData = undefined; + } + }); + + it('enable filtering by type', () => { + cy.visit(`/app/security/administration/response_actions_history`); + + let maxLength: number; + cy.getByTestSubj('response-actions-list').then(($table) => { + maxLength = $table.find('tbody .euiTableRow').length; + cy.get('tbody .euiTableRow').should('have.lengthOf', maxLength); + }); + + cy.getByTestSubj('response-actions-list-type-filter-popoverButton').click(); + cy.getByTestSubj('type-filter-option').contains('Triggered by rule').click(); + cy.getByTestSubj('response-actions-list').within(() => { + cy.get('tbody .euiTableRow').should('have.lengthOf', 1); + cy.get('tbody .euiTableRow').eq(0).contains('Triggered by rule'); + }); + cy.getByTestSubj('type-filter-option').contains('Triggered by rule').click(); + cy.getByTestSubj('response-actions-list').within(() => { + cy.get('tbody .euiTableRow').should('have.lengthOf', maxLength); + }); + cy.getByTestSubj('type-filter-option').contains('Triggered manually').click(); + cy.getByTestSubj('response-actions-list').within(() => { + cy.get('tbody .euiTableRow').should('have.lengthOf', maxLength - 1); + }); + cy.getByTestSubj('type-filter-option').contains('Triggered by rule').click(); + cy.getByTestSubj('response-actions-list').within(() => { + cy.get('tbody .euiTableRow').should('have.lengthOf', maxLength); + cy.get('tbody .euiTableRow').eq(0).contains('Triggered by rule').click(); + }); + // check if we were moved to Rules app after clicking Triggered by rule + cy.getByTestSubj('breadcrumb last').contains('Rules'); + }); +}); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/automated_response_actions/no_license.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/automated_response_actions/no_license.cy.ts new file mode 100644 index 00000000000000..4d830c959399a3 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/automated_response_actions/no_license.cy.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { generateRandomStringName } from '@kbn/osquery-plugin/cypress/tasks/integrations'; +import { APP_ALERTS_PATH } from '../../../../../../common/constants'; +import { closeAllToasts } from '../../../tasks/toasts'; +import { fillUpNewRule } from '../../../tasks/response_actions'; +import { login, loginWithRole, ROLE } from '../../../tasks/login'; +import type { ReturnTypeFromChainable } from '../../../types'; +import { indexEndpointHosts } from '../../../tasks/index_endpoint_hosts'; +import { indexEndpointRuleAlerts } from '../../../tasks/index_endpoint_rule_alerts'; + +describe('No License', { env: { ftrConfig: { license: 'basic' } } }, () => { + describe('User cannot use endpoint action in form', () => { + const [ruleName, ruleDescription] = generateRandomStringName(2); + + before(() => { + loginWithRole(ROLE.endpoint_response_actions_access); + }); + + it('response actions are disabled', () => { + fillUpNewRule(ruleName, ruleDescription); + // addEndpointResponseAction(); + cy.getByTestSubj('response-actions-wrapper').within(() => { + cy.getByTestSubj('Endpoint Security-response-action-type-selection-option').should( + 'be.disabled' + ); + }); + }); + }); + + describe('User cannot see results', () => { + let endpointData: ReturnTypeFromChainable | undefined; + let alertData: ReturnTypeFromChainable | undefined; + const [endpointAgentId, endpointHostname] = generateRandomStringName(2); + before(() => { + login(); + indexEndpointRuleAlerts({ + endpointAgentId, + endpointHostname, + endpointIsolated: false, + }).then((indexedAlert) => { + alertData = indexedAlert; + const alertId = alertData.alerts[0]._id; + return indexEndpointHosts({ + withResponseActions: true, + numResponseActions: 1, + alertIds: [alertId], + }).then((indexEndpoints) => { + endpointData = indexEndpoints; + }); + }); + }); + + after(() => { + if (endpointData) { + endpointData.cleanup(); + endpointData = undefined; + } + + if (alertData) { + alertData.cleanup(); + alertData = undefined; + } + }); + it('show the permission denied callout', () => { + cy.visit(APP_ALERTS_PATH); + closeAllToasts(); + cy.getByTestSubj('expand-event').first().click(); + cy.getByTestSubj('response-actions-notification').should('not.have.text', '0'); + cy.getByTestSubj('responseActionsViewTab').click(); + cy.contains('Permission denied'); + cy.contains( + 'To access these results, ask your administrator for Elastic Defend Kibana privileges.' + ); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/automated_response_actions/results.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/automated_response_actions/results.cy.ts new file mode 100644 index 00000000000000..bb3be124418f8e --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/automated_response_actions/results.cy.ts @@ -0,0 +1,85 @@ +/* + * 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 { generateRandomStringName } from '@kbn/osquery-plugin/cypress/tasks/integrations'; +import { APP_ALERTS_PATH } from '../../../../../../common/constants'; +import { closeAllToasts } from '../../../tasks/toasts'; +import { indexEndpointHosts } from '../../../tasks/index_endpoint_hosts'; +import type { ReturnTypeFromChainable } from '../../../types'; +import { indexEndpointRuleAlerts } from '../../../tasks/index_endpoint_rule_alerts'; + +import { login, ROLE } from '../../../tasks/login'; + +describe('Results', () => { + let endpointData: ReturnTypeFromChainable | undefined; + let alertData: ReturnTypeFromChainable | undefined; + const [endpointAgentId, endpointHostname] = generateRandomStringName(2); + + before(() => { + indexEndpointRuleAlerts({ + endpointAgentId, + endpointHostname, + endpointIsolated: false, + }).then((indexedAlert) => { + alertData = indexedAlert; + const alertId = alertData.alerts[0]._id; + return indexEndpointHosts({ + withResponseActions: true, + numResponseActions: 1, + alertIds: [alertId], + }).then((indexEndpoints) => { + endpointData = indexEndpoints; + }); + }); + }); + + after(() => { + if (endpointData) { + endpointData.cleanup(); + endpointData = undefined; + } + + if (alertData) { + alertData.cleanup(); + alertData = undefined; + } + }); + + describe('see results when has RBAC', () => { + before(() => { + login(ROLE.endpoint_response_actions_access); + }); + + it('see endpoint action', () => { + cy.visit(APP_ALERTS_PATH); + closeAllToasts(); + cy.getByTestSubj('expand-event').first().click(); + cy.getByTestSubj('response-actions-notification').should('not.have.text', '0'); + cy.getByTestSubj('responseActionsViewTab').click(); + cy.getByTestSubj('endpoint-results-comment'); + cy.contains(/isolate is pending|isolate completed successfully/g); + }); + }); + describe('do not see results results when does not have RBAC', () => { + before(() => { + login(ROLE.endpoint_response_actions_no_access); + }); + + it('show the permission denied callout', () => { + cy.visit(APP_ALERTS_PATH); + closeAllToasts(); + + cy.getByTestSubj('expand-event').first().click(); + cy.getByTestSubj('response-actions-notification').should('not.have.text', '0'); + cy.getByTestSubj('responseActionsViewTab').click(); + cy.contains('Permission denied'); + cy.contains( + 'To access these results, ask your administrator for Elastic Defend Kibana privileges.' + ); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts b/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts index a782a775df087e..32ada46f131279 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts @@ -122,6 +122,7 @@ export const dataLoaders = ( isolation, withResponseActions, numResponseActions, + alertIds, } = options; return cyLoadEndpointDataHandler(esClient, kbnClient, { @@ -131,6 +132,7 @@ export const dataLoaders = ( isolation, withResponseActions, numResponseActions, + alertIds, }); }, diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/plugin_handlers/endpoint_data_loader.ts b/x-pack/plugins/security_solution/public/management/cypress/support/plugin_handlers/endpoint_data_loader.ts index 5f50eacff76c6a..32b392ac32696e 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/support/plugin_handlers/endpoint_data_loader.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/support/plugin_handlers/endpoint_data_loader.ts @@ -40,6 +40,7 @@ export interface CyLoadEndpointDataOptions numResponseActions?: number; isolation: boolean; bothIsolatedAndNormalEndpoints?: boolean; + alertIds?: string[]; } /** @@ -65,6 +66,7 @@ export const cyLoadEndpointDataHandler = async ( withResponseActions, isolation, numResponseActions, + alertIds, } = options; const DocGenerator = EndpointDocGenerator.custom({ @@ -94,7 +96,8 @@ export const cyLoadEndpointDataHandler = async ( undefined, DocGenerator, withResponseActions, - numResponseActions + numResponseActions, + alertIds ); if (waitUntilTransformed) { diff --git a/x-pack/plugins/security_solution/public/management/cypress/tsconfig.json b/x-pack/plugins/security_solution/public/management/cypress/tsconfig.json index dc0b2e1ca4fd4b..c79c48ca3640f6 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/tsconfig.json +++ b/x-pack/plugins/security_solution/public/management/cypress/tsconfig.json @@ -35,5 +35,6 @@ "@kbn/test", "@kbn/repo-info", "@kbn/data-views-plugin", + "@kbn/osquery-plugin/cypress", ] } diff --git a/x-pack/plugins/security_solution/public/management/cypress/types.ts b/x-pack/plugins/security_solution/public/management/cypress/types.ts index 6c8bc8a04bed34..fecaa33a6a70a8 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/types.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/types.ts @@ -42,10 +42,12 @@ export type ReturnTypeFromChainable = C extends Cyp : never; export type IndexEndpointHostsCyTaskOptions = Partial< - { count: number; withResponseActions: boolean; numResponseActions?: number } & Pick< - CyLoadEndpointDataOptions, - 'version' | 'os' | 'isolation' - > + { + count: number; + withResponseActions: boolean; + numResponseActions?: number; + alertIds?: string[]; + } & Pick >; export interface HostActionResponse { diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_get_endpoint_processes_request.ts b/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_get_endpoint_processes_request.ts index 8fa97e75dc6be9..cf946db04ca373 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_get_endpoint_processes_request.ts +++ b/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_get_endpoint_processes_request.ts @@ -40,6 +40,7 @@ export const useSendGetEndpointProcessesRequest = ( ResponseActionApiResponse >(GET_PROCESSES_ROUTE, { body: JSON.stringify(getRunningProcessesData), + version: '2023-10-31', }); }, customOptions); }; diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_get_file_request.ts b/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_get_file_request.ts index e915e3ca94244b..234abfd6e0e97e 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_get_file_request.ts +++ b/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_get_file_request.ts @@ -28,6 +28,7 @@ export const useSendGetFileRequest = ( (reqBody) => { return KibanaServices.get().http.post(GET_FILE_ROUTE, { body: JSON.stringify(reqBody), + version: '2023-10-31', }); }, customOptions diff --git a/x-pack/plugins/security_solution/public/management/mocks/response_actions_http_mocks.ts b/x-pack/plugins/security_solution/public/management/mocks/response_actions_http_mocks.ts index 05a02603de6159..f4a62fd9fa341f 100644 --- a/x-pack/plugins/security_solution/public/management/mocks/response_actions_http_mocks.ts +++ b/x-pack/plugins/security_solution/public/management/mocks/response_actions_http_mocks.ts @@ -12,14 +12,14 @@ import { ACTION_STATUS_ROUTE, GET_PROCESSES_ROUTE, BASE_ENDPOINT_ACTION_ROUTE, - ISOLATE_HOST_ROUTE, - UNISOLATE_HOST_ROUTE, KILL_PROCESS_ROUTE, SUSPEND_PROCESS_ROUTE, GET_FILE_ROUTE, ACTION_AGENT_FILE_INFO_ROUTE, EXECUTE_ROUTE, UPLOAD_ROUTE, + ISOLATE_HOST_ROUTE_V2, + UNISOLATE_HOST_ROUTE_V2, } from '../../../common/endpoint/constants'; import type { ResponseProvidersInterface } from '../../common/mock/endpoint/http_handler_mock_factory'; import { httpHandlerMockFactory } from '../../common/mock/endpoint/http_handler_mock_factory'; @@ -71,7 +71,7 @@ export type ResponseActionsHttpMocksInterface = ResponseProvidersInterface<{ export const responseActionsHttpMocks = httpHandlerMockFactory([ { id: 'isolateHost', - path: ISOLATE_HOST_ROUTE, + path: ISOLATE_HOST_ROUTE_V2, method: 'post', handler: (): ResponseActionApiResponse => { return { action: '1-2-3', data: { id: '1-2-3' } as ResponseActionApiResponse['data'] }; @@ -79,7 +79,7 @@ export const responseActionsHttpMocks = httpHandlerMockFactory { return { action: '3-2-1', data: { id: '3-2-1' } as ResponseActionApiResponse['data'] }; diff --git a/x-pack/plugins/security_solution/public/overview/pages/data_quality.tsx b/x-pack/plugins/security_solution/public/overview/pages/data_quality.tsx index f27c239320ddc1..5a5667bbbd2f29 100644 --- a/x-pack/plugins/security_solution/public/overview/pages/data_quality.tsx +++ b/x-pack/plugins/security_solution/public/overview/pages/data_quality.tsx @@ -31,7 +31,7 @@ import styled from 'styled-components'; import { SecurityPageName } from '../../app/types'; import { getGroupByFieldsOnClick } from '../../common/components/alerts_treemap/lib/helpers'; -import { useTheme } from '../../common/components/charts/common'; +import { useThemes } from '../../common/components/charts/common'; import { HeaderPage } from '../../common/components/header_page'; import { LandingPageComponent } from '../../common/components/landing_page'; import { useLocalStorage } from '../../common/components/local_storage'; @@ -131,7 +131,7 @@ const renderOption = ( const DataQualityComponent: React.FC = () => { const isAssistantEnabled = useIsExperimentalFeatureEnabled('assistantEnabled'); const httpFetch = KibanaServices.get().http.fetch; - const theme = useTheme(); + const { baseTheme, theme } = useThemes(); const toasts = useToasts(); const addSuccessToast = useCallback( (toast: { title: string }) => { @@ -242,6 +242,7 @@ const DataQualityComponent: React.FC = () => { openCreateCaseFlyout={openCreateCaseFlyout} patterns={alertsAndSelectedPatterns} setLastChecked={setLastChecked} + baseTheme={baseTheme} theme={theme} /> diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/with_response_actions_role.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/with_response_actions_role.ts index c86fbd472adfb1..0fed92037e07f0 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/with_response_actions_role.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/with_response_actions_role.ts @@ -23,6 +23,8 @@ export const getWithResponseActionsRole: () => Omit = () => { 'execute_operations_all', 'host_isolation_all', 'process_operations_all', + 'actions_log_management_all', + 'actions_log_management_read', ], }, }, diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/without_response_actions_role.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/without_response_actions_role.ts index 8e26bc61972cff..4ed5f91df77ddf 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/without_response_actions_role.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/without_response_actions_role.ts @@ -18,6 +18,7 @@ export const getNoResponseActionsRole: () => Omit = () => ({ '.siem-signals-*', '.items-*', '.lists-*', + '.logs-*', ], privileges: ['manage', 'write', 'read', 'view_index_metadata'], }, @@ -55,8 +56,6 @@ export const getNoResponseActionsRole: () => Omit = () => ({ 'event_filters_read', 'policy_management_all', 'policy_management_read', - 'actions_log_management_all', - 'actions_log_management_read', ], stackAlerts: ['all'], }, diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts b/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts index 7459b7b04581f4..3c14adff1ccc4c 100644 --- a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts +++ b/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts @@ -179,9 +179,10 @@ export const cli = () => { } return element.value as string; }); + } else if (property.value.type === 'StringLiteral') { + value = property.value.value; } if (key && value) { - // @ts-expect-error acc[key] = value; } return acc; @@ -280,6 +281,10 @@ export const cli = () => { ); } + if (configFromTestFile?.license) { + vars.esTestCluster.license = configFromTestFile.license; + } + if (hasFleetServerArgs) { vars.kbnTestServer.serverArgs.push( `--xpack.fleet.agents.elasticsearch.host=http://${hostRealIp}:${esPort}` diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts index 124bda8b2fe0dc..dd10093cc343c9 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts @@ -209,7 +209,10 @@ describe('Response actions', () => { }); it('correctly redirects legacy isolate to new route', async () => { - await callRoute(ISOLATE_HOST_ROUTE, { body: { endpoint_ids: ['XYZ'] } }); + await callRoute(ISOLATE_HOST_ROUTE, { + body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', + }); expect(mockResponse.custom).toBeCalled(); const response = mockResponse.custom.mock.calls[0][0]; expect(response.statusCode).toEqual(308); @@ -217,7 +220,10 @@ describe('Response actions', () => { }); it('correctly redirects legacy release to new route', async () => { - await callRoute(UNISOLATE_HOST_ROUTE, { body: { endpoint_ids: ['XYZ'] } }); + await callRoute(UNISOLATE_HOST_ROUTE, { + body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', + }); expect(mockResponse.custom).toBeCalled(); const response = mockResponse.custom.mock.calls[0][0]; expect(response.statusCode).toEqual(308); @@ -225,12 +231,18 @@ describe('Response actions', () => { }); it('succeeds when an endpoint ID is provided', async () => { - await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] } }); + await callRoute(ISOLATE_HOST_ROUTE_V2, { + body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', + }); expect(mockResponse.ok).toBeCalled(); }); it('accepts a comment field', async () => { - await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'], comment: 'XYZ' } }); + await callRoute(ISOLATE_HOST_ROUTE_V2, { + body: { endpoint_ids: ['XYZ'], comment: 'XYZ' }, + version: '2023-10-31', + }); expect(mockResponse.ok).toBeCalled(); }); @@ -240,6 +252,7 @@ describe('Response actions', () => { await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['ABC-XYZ-000'] }, searchResponse: metadataResponse, + version: '2023-10-31', }); await expect( @@ -258,6 +271,7 @@ describe('Response actions', () => { await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, mockUser: testUser, + version: '2023-10-31', }); await expect( @@ -275,6 +289,7 @@ describe('Response actions', () => { const comment = "I am isolating this because it's Friday"; await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'], comment }, + version: '2023-10-31', }); await expect( @@ -295,6 +310,7 @@ describe('Response actions', () => { await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: endpointIds, comment: 'XYZ' }, + version: '2023-10-31', }); await expect( @@ -322,6 +338,7 @@ describe('Response actions', () => { it('records the timeout in the action payload', async () => { await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', }); await expect( ( @@ -341,6 +358,7 @@ describe('Response actions', () => { await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, searchResponse: doc, + version: '2023-10-31', }); await expect( @@ -357,6 +375,7 @@ describe('Response actions', () => { it('sends the isolate command payload from the isolate route', async () => { await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', }); await expect( @@ -375,6 +394,7 @@ describe('Response actions', () => { it('sends the unisolate command payload from the unisolate route', async () => { await callRoute(UNISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', }); await expect( @@ -393,6 +413,7 @@ describe('Response actions', () => { it('sends the kill-process command payload from the kill process route', async () => { await callRoute(KILL_PROCESS_ROUTE, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', }); await expect( @@ -411,6 +432,7 @@ describe('Response actions', () => { it('sends the suspend-process command payload from the suspend process route', async () => { await callRoute(SUSPEND_PROCESS_ROUTE, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', }); await expect( @@ -429,6 +451,7 @@ describe('Response actions', () => { it('sends the running-processes command payload from the running processes route', async () => { await callRoute(GET_PROCESSES_ROUTE, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', }); await expect( @@ -447,6 +470,7 @@ describe('Response actions', () => { it('sends the get-file command payload from the get file route', async () => { await callRoute(GET_FILE_ROUTE, { body: { endpoint_ids: ['XYZ'], parameters: { path: '/one/two/three' } }, + version: '2023-10-31', }); await expect( @@ -487,6 +511,7 @@ describe('Response actions', () => { UNISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', }, { endpointDsExists: true } ); @@ -521,6 +546,7 @@ describe('Response actions', () => { ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', }, { endpointDsExists: true } ); @@ -556,6 +582,7 @@ describe('Response actions', () => { KILL_PROCESS_ROUTE, { body: { endpoint_ids: ['XYZ'], parameters }, + version: '2023-10-31', }, { endpointDsExists: true } ); @@ -593,6 +620,7 @@ describe('Response actions', () => { SUSPEND_PROCESS_ROUTE, { body: { endpoint_ids: ['XYZ'], parameters }, + version: '2023-10-31', }, { endpointDsExists: true } ); @@ -629,6 +657,7 @@ describe('Response actions', () => { GET_PROCESSES_ROUTE, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', }, { endpointDsExists: true } ); @@ -663,6 +692,7 @@ describe('Response actions', () => { GET_FILE_ROUTE, { body: { endpoint_ids: ['XYZ'], parameters: { path: '/one/two/three' } }, + version: '2023-10-31', }, { endpointDsExists: true } ); @@ -777,6 +807,7 @@ describe('Response actions', () => { ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', }, { endpointDsExists: true } ); @@ -801,6 +832,7 @@ describe('Response actions', () => { UNISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', indexErrorResponse: { statusCode: 500, body: { @@ -824,6 +856,7 @@ describe('Response actions', () => { await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, license: Platinum, + version: '2023-10-31', }); expect(mockResponse.ok).toBeCalled(); }); @@ -833,6 +866,7 @@ describe('Response actions', () => { body: { endpoint_ids: ['XYZ'] }, authz: { canIsolateHost: false }, license: Gold, + version: '2023-10-31', }); expect(mockResponse.forbidden).toBeCalled(); @@ -842,6 +876,7 @@ describe('Response actions', () => { licenseEmitter.next(Gold); await callRoute(UNISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', license: Gold, }); expect(mockResponse.ok).toBeCalled(); @@ -852,6 +887,7 @@ describe('Response actions', () => { it('allows user to perform isolation when canIsolateHost is true', async () => { await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', }); expect(mockResponse.ok).toBeCalled(); }); @@ -859,6 +895,7 @@ describe('Response actions', () => { it('allows user to perform unisolation when canUnIsolateHost is true', async () => { await callRoute(UNISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, + version: '2023-10-31', }); expect(mockResponse.ok).toBeCalled(); }); @@ -867,6 +904,7 @@ describe('Response actions', () => { await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, authz: { canIsolateHost: false }, + version: '2023-10-31', }); expect(mockResponse.forbidden).toBeCalled(); }); @@ -875,6 +913,7 @@ describe('Response actions', () => { await callRoute(UNISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, authz: { canUnIsolateHost: false }, + version: '2023-10-31', }); expect(mockResponse.forbidden).toBeCalled(); }); @@ -924,6 +963,7 @@ describe('Response actions', () => { it('logs a comment to the provided cases', async () => { await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'], case_ids: ['one', 'two'] }, + version: '2023-10-31', }); expect(casesClient.attachments.bulkCreate).toHaveBeenCalledTimes(2); @@ -935,6 +975,7 @@ describe('Response actions', () => { it('logs a comment to any cases associated with the given alerts', async () => { await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'], alert_ids: ['one', 'two'] }, + version: '2023-10-31', }); expect(getCaseIdsFromAttachmentAddService()).toEqual( @@ -950,6 +991,7 @@ describe('Response actions', () => { case_ids: ['ONE', 'TWO', 'case-1'], alert_ids: ['one', 'two'], }, + version: '2023-10-31', }); expect(casesClient.attachments.bulkCreate).toHaveBeenCalledTimes(4); diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts index 868274d255e099..b305a3f05e4d46 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts @@ -51,114 +51,170 @@ export function registerResponseActionRoutes( /** * @deprecated use ISOLATE_HOST_ROUTE_V2 instead */ - router.post( - { + router.versioned + .post({ + access: 'public', path: ISOLATE_HOST_ROUTE, - validate: NoParametersRequestSchema, options: { authRequired: true, tags: ['access:securitySolution'] }, - }, - withEndpointAuthz({ all: ['canIsolateHost'] }, logger, redirectHandler(ISOLATE_HOST_ROUTE_V2)) - ); + }) + .addVersion( + { + version: '2023-10-31', + validate: { + request: NoParametersRequestSchema, + }, + }, + withEndpointAuthz({ all: ['canIsolateHost'] }, logger, redirectHandler(ISOLATE_HOST_ROUTE_V2)) + ); /** * @deprecated use RELEASE_HOST_ROUTE instead */ - router.post( - { + router.versioned + .post({ + access: 'public', path: UNISOLATE_HOST_ROUTE, - validate: NoParametersRequestSchema, options: { authRequired: true, tags: ['access:securitySolution'] }, - }, - withEndpointAuthz( - { all: ['canUnIsolateHost'] }, - logger, - redirectHandler(UNISOLATE_HOST_ROUTE_V2) - ) - ); - - router.post( - { + }) + .addVersion( + { + version: '2023-10-31', + validate: { + request: NoParametersRequestSchema, + }, + }, + withEndpointAuthz( + { all: ['canUnIsolateHost'] }, + logger, + redirectHandler(UNISOLATE_HOST_ROUTE_V2) + ) + ); + + router.versioned + .post({ + access: 'public', path: ISOLATE_HOST_ROUTE_V2, - validate: NoParametersRequestSchema, options: { authRequired: true, tags: ['access:securitySolution'] }, - }, - withEndpointAuthz( - { all: ['canIsolateHost'] }, - logger, - responseActionRequestHandler(endpointContext, 'isolate') - ) - ); - - router.post( - { + }) + .addVersion( + { + version: '2023-10-31', + validate: { + request: NoParametersRequestSchema, + }, + }, + withEndpointAuthz( + { all: ['canIsolateHost'] }, + logger, + responseActionRequestHandler(endpointContext, 'isolate') + ) + ); + + router.versioned + .post({ + access: 'public', path: UNISOLATE_HOST_ROUTE_V2, - validate: NoParametersRequestSchema, options: { authRequired: true, tags: ['access:securitySolution'] }, - }, - withEndpointAuthz( - { all: ['canUnIsolateHost'] }, - logger, - responseActionRequestHandler(endpointContext, 'unisolate') - ) - ); - - router.post( - { + }) + .addVersion( + { + version: '2023-10-31', + validate: { + request: NoParametersRequestSchema, + }, + }, + withEndpointAuthz( + { all: ['canUnIsolateHost'] }, + logger, + responseActionRequestHandler(endpointContext, 'unisolate') + ) + ); + + router.versioned + .post({ + access: 'public', path: KILL_PROCESS_ROUTE, - validate: KillOrSuspendProcessRequestSchema, options: { authRequired: true, tags: ['access:securitySolution'] }, - }, - withEndpointAuthz( - { all: ['canKillProcess'] }, - logger, - responseActionRequestHandler( - endpointContext, - 'kill-process' + }) + .addVersion( + { + version: '2023-10-31', + validate: { + request: KillOrSuspendProcessRequestSchema, + }, + }, + withEndpointAuthz( + { all: ['canKillProcess'] }, + logger, + responseActionRequestHandler( + endpointContext, + 'kill-process' + ) ) - ) - ); + ); - router.post( - { + router.versioned + .post({ + access: 'public', path: SUSPEND_PROCESS_ROUTE, - validate: KillOrSuspendProcessRequestSchema, options: { authRequired: true, tags: ['access:securitySolution'] }, - }, - withEndpointAuthz( - { all: ['canSuspendProcess'] }, - logger, - responseActionRequestHandler( - endpointContext, - 'suspend-process' + }) + .addVersion( + { + version: '2023-10-31', + validate: { + request: KillOrSuspendProcessRequestSchema, + }, + }, + withEndpointAuthz( + { all: ['canSuspendProcess'] }, + logger, + responseActionRequestHandler( + endpointContext, + 'suspend-process' + ) ) - ) - ); + ); - router.post( - { + router.versioned + .post({ + access: 'public', path: GET_PROCESSES_ROUTE, - validate: NoParametersRequestSchema, options: { authRequired: true, tags: ['access:securitySolution'] }, - }, - withEndpointAuthz( - { all: ['canGetRunningProcesses'] }, - logger, - responseActionRequestHandler(endpointContext, 'running-processes') - ) - ); - - router.post( - { + }) + .addVersion( + { + version: '2023-10-31', + validate: { + request: NoParametersRequestSchema, + }, + }, + withEndpointAuthz( + { all: ['canGetRunningProcesses'] }, + logger, + responseActionRequestHandler(endpointContext, 'running-processes') + ) + ); + + router.versioned + .post({ + access: 'public', path: GET_FILE_ROUTE, - validate: EndpointActionGetFileSchema, options: { authRequired: true, tags: ['access:securitySolution'] }, - }, - withEndpointAuthz( - { all: ['canWriteFileOperations'] }, - logger, - responseActionRequestHandler(endpointContext, 'get-file') - ) - ); + }) + .addVersion( + { + version: '2023-10-31', + validate: { + request: EndpointActionGetFileSchema, + }, + }, + withEndpointAuthz( + { all: ['canWriteFileOperations'] }, + logger, + responseActionRequestHandler(endpointContext, 'get-file') + ) + ); router.versioned .post({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/assets.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/assets.test.ts new file mode 100644 index 00000000000000..59eaaa03a173e7 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/assets.test.ts @@ -0,0 +1,228 @@ +/* + * 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 sourceRuleMonitoringDashboard from './dashboard_rule_monitoring.json'; +import sourceKibanaEventLogDataView from './data_view_kibana_event_log.json'; +import sourceManagedTag from './tag_managed.json'; +import sourceSecuritySolutionTag from './tag_security_solution.json'; + +describe('Assets for rule monitoring', () => { + describe('Dashboard: "[Elastic Security] Detection rule monitoring"', () => { + it('has correct type and id', () => { + expect(sourceRuleMonitoringDashboard).toEqual( + expect.objectContaining({ + type: 'dashboard', + id: 'security-detection-rule-monitoring-', + }) + ); + }); + + it('is marked as managed', () => { + expect(sourceRuleMonitoringDashboard).toEqual( + expect.objectContaining({ + managed: true, + }) + ); + }); + + it('has "coreMigrationVersion" and "typeMigrationVersion" fields', () => { + expect(sourceRuleMonitoringDashboard).toEqual( + expect.objectContaining({ + coreMigrationVersion: expect.any(String), + typeMigrationVersion: expect.any(String), + }) + ); + }); + + it('has references to ".kibana-event-log-*" data view', () => { + expect(sourceRuleMonitoringDashboard).toEqual( + expect.objectContaining({ + references: expect.any(Array), + }) + ); + + const dataViewReferences = sourceRuleMonitoringDashboard.references.filter( + (r) => r.type === 'index-pattern' && r.id === 'kibana-event-log-data-view' + ); + + expect(dataViewReferences.length).toBeGreaterThan(1); + }); + + it('has references to the tags', () => { + expect(sourceRuleMonitoringDashboard).toEqual( + expect.objectContaining({ + references: expect.any(Array), + }) + ); + + const tagsReferences = sourceRuleMonitoringDashboard.references.filter( + (r) => r.type === 'tag' + ); + + expect(tagsReferences).toEqual([ + { + id: 'fleet-managed-', + name: 'tag-ref-fleet-managed', + type: 'tag', + }, + { + id: 'security-solution-', + name: 'tag-ref-security-solution', + type: 'tag', + }, + ]); + }); + }); + + describe('Data view: ".kibana-event-log-*"', () => { + it('has correct type and id', () => { + expect(sourceKibanaEventLogDataView).toEqual( + expect.objectContaining({ + type: 'index-pattern', + id: 'kibana-event-log-data-view', + }) + ); + }); + + it('is marked as managed', () => { + expect(sourceKibanaEventLogDataView).toEqual( + expect.objectContaining({ + managed: true, + }) + ); + }); + + it('has "coreMigrationVersion" and "typeMigrationVersion" fields', () => { + expect(sourceKibanaEventLogDataView).toEqual( + expect.objectContaining({ + coreMigrationVersion: expect.any(String), + typeMigrationVersion: expect.any(String), + }) + ); + }); + + it('has correct and minimal attributes', () => { + expect(sourceKibanaEventLogDataView).toEqual( + expect.objectContaining({ + attributes: { + // We don't specify any concrete fields and their formatting for this data view + name: '.kibana-event-log-*', + title: '.kibana-event-log-*', + timeFieldName: '@timestamp', + allowNoIndex: true, + }, + }) + ); + }); + + it('has no references', () => { + expect(sourceKibanaEventLogDataView).toEqual( + expect.objectContaining({ + references: expect.any(Array), + }) + ); + + expect(sourceKibanaEventLogDataView.references.length).toEqual(0); + }); + }); + + describe('Tag: "Managed"', () => { + it('has correct type and id', () => { + expect(sourceManagedTag).toEqual( + expect.objectContaining({ + type: 'tag', + id: 'fleet-managed-', + }) + ); + }); + + it('is marked as managed', () => { + expect(sourceManagedTag).toEqual( + expect.objectContaining({ + managed: true, + }) + ); + }); + + it('has "coreMigrationVersion" and "typeMigrationVersion" fields', () => { + expect(sourceManagedTag).toEqual( + expect.objectContaining({ + coreMigrationVersion: expect.any(String), + typeMigrationVersion: expect.any(String), + }) + ); + }); + + it('has correct attributes', () => { + expect(sourceManagedTag).toEqual( + expect.objectContaining({ + attributes: expect.objectContaining({ + name: 'Managed', + }), + }) + ); + }); + + it('has no references', () => { + expect(sourceManagedTag).toEqual( + expect.objectContaining({ + references: expect.any(Array), + }) + ); + + expect(sourceManagedTag.references.length).toEqual(0); + }); + }); + + describe('Tag: "Security Solution"', () => { + it('has correct type and id', () => { + expect(sourceSecuritySolutionTag).toEqual( + expect.objectContaining({ + type: 'tag', + id: 'security-solution-', + }) + ); + }); + + it('is marked as managed', () => { + expect(sourceSecuritySolutionTag).toEqual( + expect.objectContaining({ + managed: true, + }) + ); + }); + + it('has "coreMigrationVersion" and "typeMigrationVersion" fields', () => { + expect(sourceSecuritySolutionTag).toEqual( + expect.objectContaining({ + coreMigrationVersion: expect.any(String), + typeMigrationVersion: expect.any(String), + }) + ); + }); + + it('has correct attributes', () => { + expect(sourceSecuritySolutionTag).toEqual( + expect.objectContaining({ + attributes: expect.objectContaining({ + name: 'Security Solution', + }), + }) + ); + }); + + it('has no references', () => { + expect(sourceSecuritySolutionTag).toEqual( + expect.objectContaining({ + references: expect.any(Array), + }) + ); + + expect(sourceSecuritySolutionTag.references.length).toEqual(0); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/dashboard_rule_monitoring.json b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/dashboard_rule_monitoring.json index b85d9ffe84e450..9d0f8869d3c41e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/dashboard_rule_monitoring.json +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/dashboard_rule_monitoring.json @@ -9,14 +9,14 @@ "chainingSystem": "HIERARCHICAL", "controlStyle": "oneLine", "ignoreParentSettingsJSON": "{\"ignoreFilters\":false,\"ignoreQuery\":false,\"ignoreTimerange\":false,\"ignoreValidations\":false}", - "panelsJSON": "{\"0c2b3354-f4a0-4f90-b1d1-56f053869463\":{\"order\":0,\"width\":\"large\",\"grow\":true,\"type\":\"timeSlider\",\"explicitInput\":{\"title\":\"Time slider\",\"id\":\"0c2b3354-f4a0-4f90-b1d1-56f053869463\",\"timesliceStartAsPercentageOfTimeRange\":-0.0008844444444444444,\"timesliceEndAsPercentageOfTimeRange\":1.0002266666666666,\"enhancements\":{}}},\"c9c507d9-a157-40b4-aec4-0a2e204c559c\":{\"type\":\"optionsListControl\",\"order\":1,\"grow\":true,\"width\":\"small\",\"explicitInput\":{\"id\":\"c9c507d9-a157-40b4-aec4-0a2e204c559c\",\"fieldName\":\"rule.category\",\"title\":\"Rule type\",\"grow\":true,\"width\":\"medium\",\"enhancements\":{}}},\"8b3b697c-2abf-4801-8a08-a1a29d483571\":{\"type\":\"optionsListControl\",\"order\":2,\"grow\":true,\"width\":\"small\",\"explicitInput\":{\"id\":\"8b3b697c-2abf-4801-8a08-a1a29d483571\",\"fieldName\":\"kibana.space_ids\",\"title\":\"Kibana space\",\"grow\":true,\"width\":\"small\",\"selectedOptions\":[],\"enhancements\":{}}}}" + "panelsJSON": "{\"0c2b3354-f4a0-4f90-b1d1-56f053869463\":{\"order\":0,\"width\":\"large\",\"grow\":true,\"type\":\"timeSlider\",\"explicitInput\":{\"title\":\"Time slider\",\"id\":\"0c2b3354-f4a0-4f90-b1d1-56f053869463\",\"timesliceStartAsPercentageOfTimeRange\":-0.0005311111111111111,\"timesliceEndAsPercentageOfTimeRange\":1.00058,\"enhancements\":{}}},\"c9c507d9-a157-40b4-aec4-0a2e204c559c\":{\"type\":\"optionsListControl\",\"order\":1,\"grow\":true,\"width\":\"small\",\"explicitInput\":{\"id\":\"c9c507d9-a157-40b4-aec4-0a2e204c559c\",\"fieldName\":\"rule.category\",\"title\":\"Rule type\",\"grow\":true,\"width\":\"medium\",\"enhancements\":{}}},\"8b3b697c-2abf-4801-8a08-a1a29d483571\":{\"type\":\"optionsListControl\",\"order\":2,\"grow\":true,\"width\":\"small\",\"explicitInput\":{\"id\":\"8b3b697c-2abf-4801-8a08-a1a29d483571\",\"fieldName\":\"kibana.space_ids\",\"title\":\"Kibana space\",\"grow\":true,\"width\":\"small\",\"selectedOptions\":[],\"enhancements\":{}}}}" }, - "description": "This dashboard can be helpful for monitoring the health and performance of Security detection rules.", + "description": "This dashboard helps you monitor the health and performance of detection rules.", "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" }, "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", - "panelsJSON": "[{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":10,\"h\":8,\"i\":\"52ec5ce0-3ea9-42ee-91f2-0f664d6cb74d\"},\"panelIndex\":\"52ec5ce0-3ea9-42ee-91f2-0f664d6cb74d\",\"embeddableConfig\":{\"attributes\":{\"title\":\"Enabled rules\",\"description\":\"\",\"visualizationType\":\"lnsLegacyMetric\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-66195a85-b71e-45f5-a5ea-4388416cf5f7\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"874e1b4c-a64b-426a-b43e-d4ee226610a9\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"66195a85-b71e-45f5-a5ea-4388416cf5f7\",\"accessor\":\"9449b851-8169-44e9-8418-bd0e586bbf94\",\"layerType\":\"data\",\"textAlign\":\"center\",\"titlePosition\":\"bottom\",\"size\":\"xl\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execute\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"874e1b4c-a64b-426a-b43e-d4ee226610a9\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"66195a85-b71e-45f5-a5ea-4388416cf5f7\":{\"columns\":{\"9449b851-8169-44e9-8418-bd0e586bbf94\":{\"label\":\"Enabled rules\",\"dataType\":\"number\",\"operationType\":\"unique_count\",\"scale\":\"ratio\",\"sourceField\":\"rule.id\",\"isBucketed\":false,\"customLabel\":true}},\"columnOrder\":[\"9449b851-8169-44e9-8418-bd0e586bbf94\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{},\"hidePanelTitles\":false,\"description\":\"Number of rules that were executed during the selected timeframe.\"}},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":10,\"y\":0,\"w\":11,\"h\":8,\"i\":\"91a23437-071d-4739-b57e-2881caa980eb\"},\"panelIndex\":\"91a23437-071d-4739-b57e-2881caa980eb\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsLegacyMetric\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"37539143-7ea2-4353-ae4e-78ec772d1508\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"accessor\":\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\",\"layerType\":\"data\",\"textAlign\":\"center\",\"titlePosition\":\"bottom\",\"size\":\"xl\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execute\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"37539143-7ea2-4353-ae4e-78ec772d1508\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\":{\"columns\":{\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\":{\"label\":\"Rule executions\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{},\"hidePanelTitles\":false,\"description\":\"Number of rule executions within the selected timeframe.\"},\"title\":\"Rule executions\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":0,\"w\":9,\"h\":8,\"i\":\"9770096c-3ba7-42e4-9783-5042ff08896d\"},\"panelIndex\":\"9770096c-3ba7-42e4-9783-5042ff08896d\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsLegacyMetric\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"32816692-7d96-4a12-abe3-3016e8a3844c\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"accessor\":\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\",\"layerType\":\"data\",\"textAlign\":\"center\",\"titlePosition\":\"bottom\",\"size\":\"xl\",\"colorMode\":\"Labels\",\"palette\":{\"name\":\"custom\",\"type\":\"palette\",\"params\":{\"steps\":3,\"name\":\"custom\",\"reverse\":false,\"rangeType\":\"number\",\"rangeMin\":null,\"rangeMax\":null,\"progression\":\"fixed\",\"stops\":[{\"color\":\"#209280\",\"stop\":12}],\"colorStops\":[{\"color\":\"#209280\",\"stop\":null}],\"continuity\":\"all\",\"maxSteps\":5}}},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"status-change\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"status-change\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"kibana.alert.rule.execution.status\",\"field\":\"kibana.alert.rule.execution.status\",\"params\":{\"query\":\"succeeded\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"kibana.alert.rule.execution.status\":\"succeeded\"}}}],\"index\":\"32816692-7d96-4a12-abe3-3016e8a3844c\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\":{\"columns\":{\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\":{\"label\":\"Succeeded\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{},\"hidePanelTitles\":false,\"description\":\"Number of rule executions with a succeeded status (outcome of the rule execution) within the selected timeframe.\"},\"title\":\"\\\"Succeeded\\\" statuses\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":30,\"y\":0,\"w\":9,\"h\":8,\"i\":\"12011f8d-0d0d-40d6-8ef5-0d50bfe570f8\"},\"panelIndex\":\"12011f8d-0d0d-40d6-8ef5-0d50bfe570f8\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsLegacyMetric\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"9acb5e9e-8c72-4ba6-a4f5-7f2901353c16\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"accessor\":\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\",\"layerType\":\"data\",\"textAlign\":\"center\",\"titlePosition\":\"bottom\",\"size\":\"xl\",\"colorMode\":\"Labels\",\"palette\":{\"name\":\"custom\",\"type\":\"palette\",\"params\":{\"steps\":3,\"name\":\"custom\",\"reverse\":false,\"rangeType\":\"number\",\"rangeMin\":null,\"rangeMax\":null,\"progression\":\"fixed\",\"stops\":[{\"color\":\"#d6bf57\",\"stop\":4104}],\"colorStops\":[{\"color\":\"#d6bf57\",\"stop\":null}],\"continuity\":\"all\",\"maxSteps\":5}}},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"status-change\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"status-change\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"kibana.alert.rule.execution.status\",\"field\":\"kibana.alert.rule.execution.status\",\"params\":{\"query\":\"partial failure\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"kibana.alert.rule.execution.status\":\"partial failure\"}}}],\"index\":\"9acb5e9e-8c72-4ba6-a4f5-7f2901353c16\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\":{\"columns\":{\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\":{\"label\":\"Warning\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{},\"hidePanelTitles\":false,\"description\":\"Number of rule executions with a warning status (outcome of the rule execution) within the selected timeframe.\"},\"title\":\"\\\"Warning\\\" statuses\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":39,\"y\":0,\"w\":9,\"h\":8,\"i\":\"b3b0743e-9a2c-4173-babc-dc93204cc0f2\"},\"panelIndex\":\"b3b0743e-9a2c-4173-babc-dc93204cc0f2\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsLegacyMetric\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"9adf5837-270f-43bf-92d8-af2d74022292\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"accessor\":\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\",\"layerType\":\"data\",\"textAlign\":\"center\",\"titlePosition\":\"bottom\",\"size\":\"xl\",\"colorMode\":\"Labels\",\"palette\":{\"name\":\"custom\",\"type\":\"palette\",\"params\":{\"steps\":3,\"name\":\"custom\",\"reverse\":false,\"rangeType\":\"number\",\"rangeMin\":null,\"rangeMax\":null,\"progression\":\"fixed\",\"stops\":[{\"color\":\"#cc5642\",\"stop\":94}],\"colorStops\":[{\"color\":\"#cc5642\",\"stop\":null}],\"continuity\":\"all\",\"maxSteps\":5}}},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"status-change\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"status-change\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"kibana.alert.rule.execution.status\",\"field\":\"kibana.alert.rule.execution.status\",\"params\":{\"query\":\"failed\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"kibana.alert.rule.execution.status\":\"failed\"}}}],\"index\":\"9adf5837-270f-43bf-92d8-af2d74022292\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\":{\"columns\":{\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\":{\"label\":\"Failed\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{},\"hidePanelTitles\":false,\"description\":\"Number of rule executions with a failed status (outcome of the rule execution) within the selected timeframe.\"},\"title\":\"\\\"Failed\\\" statuses\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":8,\"w\":21,\"h\":13,\"i\":\"78c659aa-a001-4c30-9452-e9c7d0c0ec5d\"},\"panelIndex\":\"78c659aa-a001-4c30-9452-e9c7d0c0ec5d\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-4eaf036b-c9f5-4206-bcfe-8033bec44a21\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"abcc85f3-00cd-48bd-a313-de50207ab1b6\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"top\",\"isInside\":false,\"showSingleSeries\":false,\"shouldTruncate\":false,\"verticalAlignment\":\"top\",\"horizontalAlignment\":\"left\",\"legendSize\":\"auto\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"4eaf036b-c9f5-4206-bcfe-8033bec44a21\",\"seriesType\":\"bar_stacked\",\"xAccessor\":\"44be5a39-e31d-4242-9778-58ee5ffefbb8\",\"splitAccessor\":\"124a76f1-8df0-4410-87b0-25b9cb2398d9\",\"accessors\":[\"cb5d803d-fa0a-4062-a595-2cec9118bd31\"],\"layerType\":\"data\"}],\"valuesInLegend\":true},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execute\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"abcc85f3-00cd-48bd-a313-de50207ab1b6\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"4eaf036b-c9f5-4206-bcfe-8033bec44a21\":{\"columns\":{\"44be5a39-e31d-4242-9778-58ee5ffefbb8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"cb5d803d-fa0a-4062-a595-2cec9118bd31\":{\"label\":\"Number of executions\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"124a76f1-8df0-4410-87b0-25b9cb2398d9\":{\"label\":\"Rule type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.category\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cb5d803d-fa0a-4062-a595-2cec9118bd31\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"secondaryFields\":[]},\"customLabel\":true}},\"columnOrder\":[\"124a76f1-8df0-4410-87b0-25b9cb2398d9\",\"44be5a39-e31d-4242-9778-58ee5ffefbb8\",\"cb5d803d-fa0a-4062-a595-2cec9118bd31\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{},\"description\":\"Histogram where each column shows a number of rule executions broken down by rule type.\"},\"title\":\"Executions by rule type\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":8,\"w\":27,\"h\":13,\"i\":\"b3dd29a9-c051-46ab-b1fa-facf899f7af9\"},\"panelIndex\":\"b3dd29a9-c051-46ab-b1fa-facf899f7af9\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-4eaf036b-c9f5-4206-bcfe-8033bec44a21\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"0ccd359c-35a9-42ee-9b53-e0061755ffef\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"top\",\"isInside\":false,\"showSingleSeries\":false,\"shouldTruncate\":false,\"verticalAlignment\":\"top\",\"horizontalAlignment\":\"left\",\"legendSize\":\"auto\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"4eaf036b-c9f5-4206-bcfe-8033bec44a21\",\"seriesType\":\"bar_stacked\",\"xAccessor\":\"44be5a39-e31d-4242-9778-58ee5ffefbb8\",\"splitAccessor\":\"124a76f1-8df0-4410-87b0-25b9cb2398d9\",\"accessors\":[\"cb5d803d-fa0a-4062-a595-2cec9118bd31\"],\"layerType\":\"data\",\"palette\":{\"type\":\"palette\",\"name\":\"status\"}}],\"valuesInLegend\":true},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"status-change\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"status-change\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":true,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"kibana.alert.rule.execution.status\",\"field\":\"kibana.alert.rule.execution.status\",\"params\":{\"query\":\"running\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"kibana.alert.rule.execution.status\":\"running\"}}}],\"index\":\"0ccd359c-35a9-42ee-9b53-e0061755ffef\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"4eaf036b-c9f5-4206-bcfe-8033bec44a21\":{\"columns\":{\"44be5a39-e31d-4242-9778-58ee5ffefbb8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"cb5d803d-fa0a-4062-a595-2cec9118bd31\":{\"label\":\"Number of executions\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"124a76f1-8df0-4410-87b0-25b9cb2398d9\":{\"label\":\"Statuses\",\"dataType\":\"string\",\"operationType\":\"filters\",\"scale\":\"ordinal\",\"isBucketed\":true,\"params\":{\"filters\":[{\"label\":\"Succeeded\",\"input\":{\"query\":\"kibana.alert.rule.execution.status: \\\"succeeded\\\" \",\"language\":\"kuery\"}},{\"input\":{\"query\":\"kibana.alert.rule.execution.status: \\\"partial failure\\\" \",\"language\":\"kuery\"},\"label\":\"Warning\"},{\"input\":{\"query\":\"kibana.alert.rule.execution.status: \\\"failed\\\"\",\"language\":\"kuery\"},\"label\":\"Failed\"}]},\"customLabel\":true}},\"columnOrder\":[\"124a76f1-8df0-4410-87b0-25b9cb2398d9\",\"44be5a39-e31d-4242-9778-58ee5ffefbb8\",\"cb5d803d-fa0a-4062-a595-2cec9118bd31\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{},\"description\":\"Histogram where each column shows a number of rule executions broken down by rule status (outcome of the rule execution).\"},\"title\":\"Executions by status\"},{\"version\":\"8.9.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":21,\"w\":48,\"h\":4,\"i\":\"e2b4b41a-2fd5-4733-a297-c67571b8bb57\"},\"panelIndex\":\"e2b4b41a-2fd5-4733-a297-c67571b8bb57\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"**Total rule execution duration** tells how much time it took for a rule to run from the very start to the very end.\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}},\"title\":\"\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":25,\"w\":21,\"h\":15,\"i\":\"ad5995be-bf0f-48ba-8dc8-7313ca3bfbae\"},\"panelIndex\":\"ad5995be-bf0f-48ba-8dc8-7313ca3bfbae\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"2720edea-b96b-47d7-bf57-ff3a4c91ab9d\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\",\"maxLines\":1},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"yConfig\":[{\"forAccessor\":\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"color\":\"#d36086\",\"axisMode\":\"left\"},{\"forAccessor\":\"f623346f-da47-4819-b485-d3527bd4506e\",\"axisMode\":\"left\",\"color\":\"#9170b8\"},{\"forAccessor\":\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\",\"axisMode\":\"left\",\"color\":\"#6092c0\"}]}],\"curveType\":\"CURVE_MONOTONE_X\",\"yTitle\":\"Total execution duration, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"execute\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}}},{\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}},\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"event.category\",\"params\":{\"query\":\"siem\"},\"index\":\"kibana-event-log-data-view\",\"disabled\":false,\"alias\":null}}],\"index\":\"2720edea-b96b-47d7-bf57-ff3a4c91ab9d\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\":{\"label\":\"99th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":99},\"customLabel\":true},\"f623346f-da47-4819-b485-d3527bd4506e\":{\"label\":\"95th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95},\"customLabel\":true},\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\":{\"label\":\"50th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":50},\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{},\"description\":\"This chart aggregates this metric across all rules and shows how a few important percentiles of the metric were changing over time. 99th percentile means that 99% of rule executions had a total duration less than the percentile's value.\"},\"title\":\"Total rule execution duration, percentiles\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":25,\"w\":27,\"h\":15,\"i\":\"2eac0a4e-9ec7-433e-89bc-e8edc1dadae7\"},\"panelIndex\":\"2eac0a4e-9ec7-433e-89bc-e8edc1dadae7\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"0b7e01b1-974a-4de9-867d-46fc000c63e3\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"splitAccessor\":\"3a521678-3e76-49b6-a379-eb75ef03604b\"}],\"yTitle\":\"Total execution duration, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}},\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execute\"},\"index\":\"kibana-event-log-data-view\",\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"0b7e01b1-974a-4de9-867d-46fc000c63e3\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"3a521678-3e76-49b6-a379-eb75ef03604b\":{\"label\":\"Top 5 values of rule.name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"secondaryFields\":[],\"parentFormat\":{\"id\":\"terms\"}}},\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\":{\"label\":\"Total execution duration\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"3a521678-3e76-49b6-a379-eb75ef03604b\",\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Total rule execution duration, top 5 rules per @timestamp\"},{\"version\":\"8.9.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":40,\"w\":48,\"h\":5,\"i\":\"a0f62bb1-a9c3-4c46-b0fb-137c7f2b4a0c\"},\"panelIndex\":\"a0f62bb1-a9c3-4c46-b0fb-137c7f2b4a0c\",\"embeddableConfig\":{\"savedVis\":{\"id\":\"\",\"title\":\"\",\"description\":\"\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"**Rule schedule delay** shows the difference between the planned rule start time (according to its schedule) and the time when it actually started. Normally, it should be about 3 seconds or less. When the cluster is overloaded, it can be way more than 3 seconds. This is when you'd want to scale your cluster according to the load or reduce it by disabling or optimizing the rules.\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}}},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":45,\"w\":21,\"h\":15,\"i\":\"d2e87680-4d92-4067-9f27-7749854dedce\"},\"panelIndex\":\"d2e87680-4d92-4067-9f27-7749854dedce\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"4101bdcb-5ba8-406f-8893-07356a98d49b\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\",\"maxLines\":1},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\",\"niceValues\":true},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"yConfig\":[{\"forAccessor\":\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"color\":\"#d36086\",\"axisMode\":\"left\"},{\"forAccessor\":\"f623346f-da47-4819-b485-d3527bd4506e\",\"axisMode\":\"left\",\"color\":\"#9170b8\"},{\"forAccessor\":\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\",\"axisMode\":\"left\",\"color\":\"#6092c0\"}]}],\"curveType\":\"CURVE_MONOTONE_X\",\"yTitle\":\"Schedule delay, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"execute\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}}},{\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}},\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"event.category\",\"params\":{\"query\":\"siem\"},\"index\":\"kibana-event-log-data-view\",\"disabled\":false,\"alias\":null}}],\"index\":\"4101bdcb-5ba8-406f-8893-07356a98d49b\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X0\":{\"label\":\"Part of 99th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":99},\"customLabel\":true},\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X1\":{\"label\":\"Part of 99th percentile\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X0\",1000000],\"location\":{\"min\":0,\"max\":63},\"text\":\"percentile(kibana.task.schedule_delay, percentile=99) / 1000000\"}},\"references\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X0\"],\"customLabel\":true},\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\":{\"label\":\"99th percentile\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"percentile(kibana.task.schedule_delay, percentile=99) / 1000000\",\"isFormulaBroken\":false},\"references\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X1\"],\"customLabel\":true},\"f623346f-da47-4819-b485-d3527bd4506eX0\":{\"label\":\"Part of 95th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95},\"customLabel\":true},\"f623346f-da47-4819-b485-d3527bd4506eX1\":{\"label\":\"Part of 95th percentile\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"f623346f-da47-4819-b485-d3527bd4506eX0\",1000000],\"location\":{\"min\":0,\"max\":63},\"text\":\"percentile(kibana.task.schedule_delay, percentile=95) / 1000000\"}},\"references\":[\"f623346f-da47-4819-b485-d3527bd4506eX0\"],\"customLabel\":true},\"f623346f-da47-4819-b485-d3527bd4506e\":{\"label\":\"95th percentile\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"percentile(kibana.task.schedule_delay, percentile=95) / 1000000\",\"isFormulaBroken\":false},\"references\":[\"f623346f-da47-4819-b485-d3527bd4506eX1\"],\"customLabel\":true},\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX0\":{\"label\":\"Part of 50th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":50},\"customLabel\":true},\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX1\":{\"label\":\"Part of 50th percentile\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX0\",1000000],\"location\":{\"min\":0,\"max\":63},\"text\":\"percentile(kibana.task.schedule_delay, percentile=50) / 1000000\"}},\"references\":[\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX0\"],\"customLabel\":true},\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\":{\"label\":\"50th percentile\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"percentile(kibana.task.schedule_delay, percentile=50) / 1000000\",\"isFormulaBroken\":false},\"references\":[\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX1\"],\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\",\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X0\",\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X1\",\"f623346f-da47-4819-b485-d3527bd4506eX0\",\"f623346f-da47-4819-b485-d3527bd4506eX1\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX0\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX1\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{},\"description\":\"This chart aggregates this metric across all rules and shows how a few important percentiles of the metric were changing over time. 99th percentile means that 99% of rule executions had a schedule delay less than the percentile's value.\"},\"title\":\"Rule scheduling delay, percentiles\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":45,\"w\":27,\"h\":15,\"i\":\"2372c630-207e-4859-83a9-de5a7bc638dc\"},\"panelIndex\":\"2372c630-207e-4859-83a9-de5a7bc638dc\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"adafccc0-9c17-4249-89e1-e61a8d00079b\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"splitAccessor\":\"3a521678-3e76-49b6-a379-eb75ef03604b\"}],\"yTitle\":\"Rule schedule delay, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}},\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execute\"},\"index\":\"kibana-event-log-data-view\",\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"adafccc0-9c17-4249-89e1-e61a8d00079b\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"3a521678-3e76-49b6-a379-eb75ef03604b\":{\"label\":\"Top 5 values of rule.name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"custom\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"secondaryFields\":[],\"parentFormat\":{\"id\":\"terms\"},\"orderAgg\":{\"label\":\"Maximum of kibana.task.schedule_delay\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true}}}},\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX0\":{\"label\":\"Part of Rule schedule delay\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":false},\"customLabel\":true},\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX1\":{\"label\":\"Part of Rule schedule delay\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX0\",1000000],\"location\":{\"min\":0,\"max\":41},\"text\":\"max(kibana.task.schedule_delay) / 1000000\"}},\"references\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX0\"],\"customLabel\":true},\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\":{\"label\":\"Rule schedule delay\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"max(kibana.task.schedule_delay) / 1000000\",\"isFormulaBroken\":false},\"references\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX1\"],\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"3a521678-3e76-49b6-a379-eb75ef03604b\",\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\",\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX0\",\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX1\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Rule scheduling delay, top 5 rules per @timestamp\"},{\"version\":\"8.9.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":60,\"w\":48,\"h\":4,\"i\":\"054eb35b-90a8-4b45-9821-7c0eefb22a85\"},\"panelIndex\":\"054eb35b-90a8-4b45-9821-7c0eefb22a85\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"**Search/query duration** metric shows how much time it took for a rule when it was executing to query source indices (or data views) to find source events matching the rule's criteria.\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}},\"title\":\"\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":64,\"w\":21,\"h\":15,\"i\":\"e2504c27-3027-4c13-85c0-a66416c53bd4\"},\"panelIndex\":\"e2504c27-3027-4c13-85c0-a66416c53bd4\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"edb4ad7f-1ef2-477f-980c-c6fe47d6470d\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\",\"maxLines\":1},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"yConfig\":[{\"forAccessor\":\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"color\":\"#d36086\",\"axisMode\":\"left\"},{\"forAccessor\":\"f623346f-da47-4819-b485-d3527bd4506e\",\"axisMode\":\"left\",\"color\":\"#9170b8\"},{\"forAccessor\":\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\",\"axisMode\":\"left\",\"color\":\"#6092c0\"}]}],\"curveType\":\"CURVE_MONOTONE_X\",\"yTitle\":\"Search duration, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"execution-metrics\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.action\":\"execution-metrics\"}}}],\"index\":\"edb4ad7f-1ef2-477f-980c-c6fe47d6470d\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\":{\"label\":\"99th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_search_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":99},\"customLabel\":true},\"f623346f-da47-4819-b485-d3527bd4506e\":{\"label\":\"95th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_search_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95},\"customLabel\":true},\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\":{\"label\":\"50th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_search_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"filter\":{\"query\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms: *\",\"language\":\"kuery\"},\"params\":{\"percentile\":50},\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{},\"description\":\"This chart aggregates this metric across all rules and shows how a few important percentiles of the metric were changing over time. 99th percentile means that 99% of rule executions had a search/query duration less than the percentile's value.\"},\"title\":\"Search/query duration, percentiles\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":64,\"w\":27,\"h\":15,\"i\":\"fe382f90-aa03-47e0-a8a0-d6a8de877467\"},\"panelIndex\":\"fe382f90-aa03-47e0-a8a0-d6a8de877467\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"505272a2-f4fb-4778-9fdf-11415f36cc51\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"splitAccessor\":\"3a521678-3e76-49b6-a379-eb75ef03604b\"}],\"yTitle\":\"Search duration, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execution-metrics\"}},\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execution-metrics\"},\"index\":\"kibana-event-log-data-view\",\"disabled\":false,\"alias\":null}}],\"index\":\"505272a2-f4fb-4778-9fdf-11415f36cc51\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"3a521678-3e76-49b6-a379-eb75ef03604b\":{\"label\":\"Top 5 values of rule.name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"secondaryFields\":[],\"parentFormat\":{\"id\":\"terms\"}}},\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\":{\"label\":\"Search duration\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_search_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"3a521678-3e76-49b6-a379-eb75ef03604b\",\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Search/query duration, top 5 rules per @timestamp\"},{\"version\":\"8.9.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":79,\"w\":48,\"h\":4,\"i\":\"267d2068-2d64-4e8e-bccb-efc580f90762\"},\"panelIndex\":\"267d2068-2d64-4e8e-bccb-efc580f90762\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"**Indexing duration** metric shows how much time it took for a rule when it was executing to write generated alerts to the `.alerts-security.alerts-*` index.\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}},\"title\":\"\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":83,\"w\":21,\"h\":15,\"i\":\"0b6f467f-f784-457e-9351-839874bef66e\"},\"panelIndex\":\"0b6f467f-f784-457e-9351-839874bef66e\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"e0a238a9-104e-46c0-890a-c7b3e1c08018\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\",\"maxLines\":1},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"yConfig\":[{\"forAccessor\":\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"color\":\"#d36086\",\"axisMode\":\"left\"},{\"forAccessor\":\"f623346f-da47-4819-b485-d3527bd4506e\",\"axisMode\":\"left\",\"color\":\"#9170b8\"},{\"forAccessor\":\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\",\"axisMode\":\"left\",\"color\":\"#6092c0\"}]}],\"curveType\":\"CURVE_MONOTONE_X\",\"yTitle\":\"Indexing duration, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"execution-metrics\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.action\":\"execution-metrics\"}}}],\"index\":\"e0a238a9-104e-46c0-890a-c7b3e1c08018\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\":{\"label\":\"99th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_indexing_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":99},\"customLabel\":true},\"f623346f-da47-4819-b485-d3527bd4506e\":{\"label\":\"95th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_indexing_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95},\"customLabel\":true},\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\":{\"label\":\"50th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_indexing_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"filter\":{\"query\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms: *\",\"language\":\"kuery\"},\"params\":{\"percentile\":50},\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{},\"description\":\"This chart aggregates this metric across all rules and shows how a few important percentiles of the metric were changing over time. 99th percentile means that 99% of rule executions had an indexing duration less than the percentile's value.\"},\"title\":\"Indexing duration, percentiles\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":83,\"w\":27,\"h\":15,\"i\":\"2ad1eb6c-c19b-41b1-897e-2d1d192cedae\"},\"panelIndex\":\"2ad1eb6c-c19b-41b1-897e-2d1d192cedae\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"5f5acf46-a12a-43cf-8d4a-b1ef1a971771\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"splitAccessor\":\"3a521678-3e76-49b6-a379-eb75ef03604b\"}],\"yTitle\":\"Indexing duration, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execution-metrics\"}},\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execution-metrics\"},\"index\":\"kibana-event-log-data-view\",\"disabled\":false,\"alias\":null}}],\"index\":\"5f5acf46-a12a-43cf-8d4a-b1ef1a971771\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"3a521678-3e76-49b6-a379-eb75ef03604b\":{\"label\":\"Top 5 values of rule.name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"secondaryFields\":[],\"parentFormat\":{\"id\":\"terms\"}}},\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\":{\"label\":\"Indexing duration\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_indexing_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"3a521678-3e76-49b6-a379-eb75ef03604b\",\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Indexing duration, top 5 rules per @timestamp\"},{\"version\":\"8.9.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":98,\"w\":48,\"h\":4,\"i\":\"0fcc0476-eb8c-4c41-8325-2a9084a12e59\"},\"panelIndex\":\"0fcc0476-eb8c-4c41-8325-2a9084a12e59\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"Top 10 rules by various criteria.\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}},\"title\":\"\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":102,\"w\":24,\"h\":16,\"i\":\"6ce283f7-115a-4a0f-9184-71e141149183\"},\"panelIndex\":\"6ce283f7-115a-4a0f-9184-71e141149183\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-dd23be91-5d0e-41d8-8907-ae3c9a577e2e\"},{\"type\":\"index-pattern\",\"name\":\"651cb393-d7ee-4ac2-a4d4-d8a325b4690b\",\"id\":\"kibana-event-log-data-view\"}],\"state\":{\"visualization\":{\"columns\":[{\"columnId\":\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"isTransposed\":false,\"width\":495.5},{\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\",\"isTransposed\":false,\"width\":111},{\"columnId\":\"75b295c8-00ac-4f62-8952-e4cb44b5f183\",\"isTransposed\":false,\"width\":163.66666666666669},{\"columnId\":\"2fe7ca3c-5c52-4d5e-9892-afb9141d6319\",\"isTransposed\":false,\"width\":239.16666666666663}],\"layerId\":\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\",\"layerType\":\"data\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}},\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null}},{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"execute\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"651cb393-d7ee-4ac2-a4d4-d8a325b4690b\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\":{\"columns\":{\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\":{\"label\":\"Name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"secondaryFields\":[]},\"customLabel\":true},\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\":{\"label\":\"Duration, ms\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"75b295c8-00ac-4f62-8952-e4cb44b5f183\":{\"label\":\"Type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.category\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"2fe7ca3c-5c52-4d5e-9892-afb9141d6319\":{\"label\":\"ID\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.id\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true}},\"columnOrder\":[\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"75b295c8-00ac-4f62-8952-e4cb44b5f183\",\"2fe7ca3c-5c52-4d5e-9892-afb9141d6319\",\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top 10 slowest rules by total execution duration\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":102,\"w\":24,\"h\":16,\"i\":\"f5d7a9c8-839c-408c-b798-68d019483bc7\"},\"panelIndex\":\"f5d7a9c8-839c-408c-b798-68d019483bc7\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-dd23be91-5d0e-41d8-8907-ae3c9a577e2e\"},{\"type\":\"index-pattern\",\"name\":\"17149e33-97c0-48c2-8772-d7bd0c5dd6d8\",\"id\":\"kibana-event-log-data-view\"}],\"state\":{\"visualization\":{\"columns\":[{\"columnId\":\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"isTransposed\":false,\"width\":495.5},{\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\",\"isTransposed\":false,\"width\":111},{\"columnId\":\"75b295c8-00ac-4f62-8952-e4cb44b5f183\",\"isTransposed\":false,\"width\":163.66666666666669},{\"columnId\":\"2fe7ca3c-5c52-4d5e-9892-afb9141d6319\",\"isTransposed\":false,\"width\":239.16666666666663}],\"layerId\":\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\",\"layerType\":\"data\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}},\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null}},{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"execute\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"17149e33-97c0-48c2-8772-d7bd0c5dd6d8\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\":{\"columns\":{\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\":{\"label\":\"Name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"custom\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"secondaryFields\":[],\"orderAgg\":{\"label\":\"Maximum of kibana.task.schedule_delay\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true}}},\"customLabel\":true},\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX0\":{\"label\":\"Part of Schedule delay, ms\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":false},\"customLabel\":true},\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX1\":{\"label\":\"Part of Schedule delay, ms\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX0\",1000000],\"location\":{\"min\":0,\"max\":41},\"text\":\"max(kibana.task.schedule_delay) / 1000000\"}},\"references\":[\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX0\"],\"customLabel\":true},\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\":{\"label\":\"Delay, ms\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"max(kibana.task.schedule_delay) / 1000000\",\"isFormulaBroken\":false},\"references\":[\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX1\"],\"customLabel\":true},\"75b295c8-00ac-4f62-8952-e4cb44b5f183\":{\"label\":\"Type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.category\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"alphabetical\",\"fallback\":true},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"2fe7ca3c-5c52-4d5e-9892-afb9141d6319\":{\"label\":\"ID\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.id\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"alphabetical\",\"fallback\":true},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true}},\"columnOrder\":[\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"75b295c8-00ac-4f62-8952-e4cb44b5f183\",\"2fe7ca3c-5c52-4d5e-9892-afb9141d6319\",\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\",\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX0\",\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX1\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top 10 slowest rules by schedule delay\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":118,\"w\":24,\"h\":16,\"i\":\"2168b471-9a51-4ead-a51e-15e52ba85d86\"},\"panelIndex\":\"2168b471-9a51-4ead-a51e-15e52ba85d86\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-dd23be91-5d0e-41d8-8907-ae3c9a577e2e\"},{\"type\":\"index-pattern\",\"name\":\"274e3567-2129-4d26-a778-d5220531ba86\",\"id\":\"kibana-event-log-data-view\"}],\"state\":{\"visualization\":{\"columns\":[{\"columnId\":\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"isTransposed\":false},{\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\",\"isTransposed\":false},{\"columnId\":\"729ee95a-5bf6-4f18-9350-dce536b55dea\",\"isTransposed\":false},{\"columnId\":\"fa6462ca-54c3-470e-a9c3-66ff58c37536\",\"isTransposed\":false}],\"layerId\":\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\",\"layerType\":\"data\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}},\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null}},{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"status-change\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.action\":\"status-change\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"kibana.alert.rule.execution.status\",\"field\":\"kibana.alert.rule.execution.status\",\"params\":{\"query\":\"failed\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"kibana.alert.rule.execution.status\":\"failed\"}}}],\"index\":\"274e3567-2129-4d26-a778-d5220531ba86\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\":{\"columns\":{\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\":{\"label\":\"Name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"secondaryFields\":[]},\"customLabel\":true},\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\":{\"label\":\"Count\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"729ee95a-5bf6-4f18-9350-dce536b55dea\":{\"label\":\"Type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.category\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"fa6462ca-54c3-470e-a9c3-66ff58c37536\":{\"label\":\"ID\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.id\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true}},\"columnOrder\":[\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"729ee95a-5bf6-4f18-9350-dce536b55dea\",\"fa6462ca-54c3-470e-a9c3-66ff58c37536\",\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top 10 rules by status \\\"Failed\\\"\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":118,\"w\":24,\"h\":16,\"i\":\"075d7dff-442b-4091-bfe2-3844e7e7e3f4\"},\"panelIndex\":\"075d7dff-442b-4091-bfe2-3844e7e7e3f4\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-dd23be91-5d0e-41d8-8907-ae3c9a577e2e\"},{\"type\":\"index-pattern\",\"name\":\"20d11002-bf00-477f-8221-2ceb641baf3f\",\"id\":\"kibana-event-log-data-view\"}],\"state\":{\"visualization\":{\"columns\":[{\"columnId\":\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"isTransposed\":false,\"width\":702.5},{\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\",\"isTransposed\":false},{\"columnId\":\"7ea81631-0dff-4ec6-929f-592e29101149\",\"isTransposed\":false},{\"columnId\":\"9f1d7602-e75b-427f-b740-c2b8167fed33\",\"isTransposed\":false}],\"layerId\":\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\",\"layerType\":\"data\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}},\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null}},{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"status-change\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.action\":\"status-change\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"kibana.alert.rule.execution.status\",\"field\":\"kibana.alert.rule.execution.status\",\"params\":{\"query\":\"partial failure\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"kibana.alert.rule.execution.status\":\"partial failure\"}}}],\"index\":\"20d11002-bf00-477f-8221-2ceb641baf3f\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\":{\"columns\":{\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\":{\"label\":\"Name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"secondaryFields\":[]},\"customLabel\":true},\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\":{\"label\":\"Count\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"7ea81631-0dff-4ec6-929f-592e29101149\":{\"label\":\"Type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.category\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"9f1d7602-e75b-427f-b740-c2b8167fed33\":{\"label\":\"ID\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.id\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true}},\"columnOrder\":[\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"7ea81631-0dff-4ec6-929f-592e29101149\",\"9f1d7602-e75b-427f-b740-c2b8167fed33\",\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top 10 rules by status \\\"Warning\\\"\"}]", + "panelsJSON": "[{\"version\":\"8.9.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":7,\"i\":\"35a9ff89-705a-45b7-ae86-67037fc66f15\"},\"panelIndex\":\"35a9ff89-705a-45b7-ae86-67037fc66f15\",\"embeddableConfig\":{\"savedVis\":{\"id\":\"\",\"title\":\"\",\"description\":\"\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"This dashboard helps you monitor the health and performance of detection rules.\\n- You need at least `read` privileges for the `.kibana-event-log-*` index to access the necessary data.\\n- This Kibana-managed dashboard can not be customized. To make a custom version, clone it or edit and save it as a new dashboard.\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}}},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":7,\"w\":10,\"h\":8,\"i\":\"52ec5ce0-3ea9-42ee-91f2-0f664d6cb74d\"},\"panelIndex\":\"52ec5ce0-3ea9-42ee-91f2-0f664d6cb74d\",\"embeddableConfig\":{\"attributes\":{\"title\":\"Enabled rules\",\"description\":\"\",\"visualizationType\":\"lnsLegacyMetric\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-66195a85-b71e-45f5-a5ea-4388416cf5f7\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"874e1b4c-a64b-426a-b43e-d4ee226610a9\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"66195a85-b71e-45f5-a5ea-4388416cf5f7\",\"accessor\":\"9449b851-8169-44e9-8418-bd0e586bbf94\",\"layerType\":\"data\",\"textAlign\":\"center\",\"titlePosition\":\"bottom\",\"size\":\"xl\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execute\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"874e1b4c-a64b-426a-b43e-d4ee226610a9\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"66195a85-b71e-45f5-a5ea-4388416cf5f7\":{\"columns\":{\"9449b851-8169-44e9-8418-bd0e586bbf94\":{\"label\":\"Enabled rules\",\"dataType\":\"number\",\"operationType\":\"unique_count\",\"scale\":\"ratio\",\"sourceField\":\"rule.id\",\"isBucketed\":false,\"customLabel\":true}},\"columnOrder\":[\"9449b851-8169-44e9-8418-bd0e586bbf94\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{},\"hidePanelTitles\":false,\"description\":\"Number of rules that were executed during the selected timeframe.\"}},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":10,\"y\":7,\"w\":11,\"h\":8,\"i\":\"91a23437-071d-4739-b57e-2881caa980eb\"},\"panelIndex\":\"91a23437-071d-4739-b57e-2881caa980eb\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsLegacyMetric\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"37539143-7ea2-4353-ae4e-78ec772d1508\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"accessor\":\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\",\"layerType\":\"data\",\"textAlign\":\"center\",\"titlePosition\":\"bottom\",\"size\":\"xl\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execute\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"37539143-7ea2-4353-ae4e-78ec772d1508\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\":{\"columns\":{\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\":{\"label\":\"Rule executions\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{},\"hidePanelTitles\":false,\"description\":\"Number of rule executions within the selected timeframe.\"},\"title\":\"Rule executions\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":7,\"w\":9,\"h\":8,\"i\":\"9770096c-3ba7-42e4-9783-5042ff08896d\"},\"panelIndex\":\"9770096c-3ba7-42e4-9783-5042ff08896d\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsLegacyMetric\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"32816692-7d96-4a12-abe3-3016e8a3844c\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"accessor\":\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\",\"layerType\":\"data\",\"textAlign\":\"center\",\"titlePosition\":\"bottom\",\"size\":\"xl\",\"colorMode\":\"Labels\",\"palette\":{\"name\":\"custom\",\"type\":\"palette\",\"params\":{\"steps\":3,\"name\":\"custom\",\"reverse\":false,\"rangeType\":\"number\",\"rangeMin\":null,\"rangeMax\":null,\"progression\":\"fixed\",\"stops\":[{\"color\":\"#209280\",\"stop\":12}],\"colorStops\":[{\"color\":\"#209280\",\"stop\":null}],\"continuity\":\"all\",\"maxSteps\":5}}},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"status-change\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"status-change\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"kibana.alert.rule.execution.status\",\"field\":\"kibana.alert.rule.execution.status\",\"params\":{\"query\":\"succeeded\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"kibana.alert.rule.execution.status\":\"succeeded\"}}}],\"index\":\"32816692-7d96-4a12-abe3-3016e8a3844c\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\":{\"columns\":{\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\":{\"label\":\"Succeeded\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{},\"hidePanelTitles\":false,\"description\":\"Number of rule executions with a succeeded status (outcome of the rule execution) within the selected timeframe.\"},\"title\":\"\\\"Succeeded\\\" statuses\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":30,\"y\":7,\"w\":9,\"h\":8,\"i\":\"12011f8d-0d0d-40d6-8ef5-0d50bfe570f8\"},\"panelIndex\":\"12011f8d-0d0d-40d6-8ef5-0d50bfe570f8\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsLegacyMetric\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"9acb5e9e-8c72-4ba6-a4f5-7f2901353c16\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"accessor\":\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\",\"layerType\":\"data\",\"textAlign\":\"center\",\"titlePosition\":\"bottom\",\"size\":\"xl\",\"colorMode\":\"Labels\",\"palette\":{\"name\":\"custom\",\"type\":\"palette\",\"params\":{\"steps\":3,\"name\":\"custom\",\"reverse\":false,\"rangeType\":\"number\",\"rangeMin\":null,\"rangeMax\":null,\"progression\":\"fixed\",\"stops\":[{\"color\":\"#d6bf57\",\"stop\":4104}],\"colorStops\":[{\"color\":\"#d6bf57\",\"stop\":null}],\"continuity\":\"all\",\"maxSteps\":5}}},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"status-change\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"status-change\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"kibana.alert.rule.execution.status\",\"field\":\"kibana.alert.rule.execution.status\",\"params\":{\"query\":\"partial failure\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"kibana.alert.rule.execution.status\":\"partial failure\"}}}],\"index\":\"9acb5e9e-8c72-4ba6-a4f5-7f2901353c16\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\":{\"columns\":{\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\":{\"label\":\"Warning\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{},\"hidePanelTitles\":false,\"description\":\"Number of rule executions with a warning status (outcome of the rule execution) within the selected timeframe.\"},\"title\":\"\\\"Warning\\\" statuses\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":39,\"y\":7,\"w\":9,\"h\":8,\"i\":\"b3b0743e-9a2c-4173-babc-dc93204cc0f2\"},\"panelIndex\":\"b3b0743e-9a2c-4173-babc-dc93204cc0f2\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsLegacyMetric\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"9adf5837-270f-43bf-92d8-af2d74022292\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\",\"accessor\":\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\",\"layerType\":\"data\",\"textAlign\":\"center\",\"titlePosition\":\"bottom\",\"size\":\"xl\",\"colorMode\":\"Labels\",\"palette\":{\"name\":\"custom\",\"type\":\"palette\",\"params\":{\"steps\":3,\"name\":\"custom\",\"reverse\":false,\"rangeType\":\"number\",\"rangeMin\":null,\"rangeMax\":null,\"progression\":\"fixed\",\"stops\":[{\"color\":\"#cc5642\",\"stop\":94}],\"colorStops\":[{\"color\":\"#cc5642\",\"stop\":null}],\"continuity\":\"all\",\"maxSteps\":5}}},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"status-change\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"status-change\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"kibana.alert.rule.execution.status\",\"field\":\"kibana.alert.rule.execution.status\",\"params\":{\"query\":\"failed\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"kibana.alert.rule.execution.status\":\"failed\"}}}],\"index\":\"9adf5837-270f-43bf-92d8-af2d74022292\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"17c4f52b-ef17-43d7-8282-91e48cbe11e7\":{\"columns\":{\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\":{\"label\":\"Failed\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"53cbc7e3-a396-4c55-8a28-f068d2eb3c5d\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{},\"hidePanelTitles\":false,\"description\":\"Number of rule executions with a failed status (outcome of the rule execution) within the selected timeframe.\"},\"title\":\"\\\"Failed\\\" statuses\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":15,\"w\":21,\"h\":13,\"i\":\"78c659aa-a001-4c30-9452-e9c7d0c0ec5d\"},\"panelIndex\":\"78c659aa-a001-4c30-9452-e9c7d0c0ec5d\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-4eaf036b-c9f5-4206-bcfe-8033bec44a21\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"abcc85f3-00cd-48bd-a313-de50207ab1b6\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"top\",\"isInside\":false,\"showSingleSeries\":false,\"shouldTruncate\":false,\"verticalAlignment\":\"top\",\"horizontalAlignment\":\"left\",\"legendSize\":\"auto\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"4eaf036b-c9f5-4206-bcfe-8033bec44a21\",\"seriesType\":\"bar_stacked\",\"xAccessor\":\"44be5a39-e31d-4242-9778-58ee5ffefbb8\",\"splitAccessor\":\"124a76f1-8df0-4410-87b0-25b9cb2398d9\",\"accessors\":[\"cb5d803d-fa0a-4062-a595-2cec9118bd31\"],\"layerType\":\"data\"}],\"valuesInLegend\":true},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execute\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"abcc85f3-00cd-48bd-a313-de50207ab1b6\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"4eaf036b-c9f5-4206-bcfe-8033bec44a21\":{\"columns\":{\"44be5a39-e31d-4242-9778-58ee5ffefbb8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"cb5d803d-fa0a-4062-a595-2cec9118bd31\":{\"label\":\"Number of executions\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"124a76f1-8df0-4410-87b0-25b9cb2398d9\":{\"label\":\"Rule type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.category\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cb5d803d-fa0a-4062-a595-2cec9118bd31\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"secondaryFields\":[]},\"customLabel\":true}},\"columnOrder\":[\"124a76f1-8df0-4410-87b0-25b9cb2398d9\",\"44be5a39-e31d-4242-9778-58ee5ffefbb8\",\"cb5d803d-fa0a-4062-a595-2cec9118bd31\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{},\"description\":\"Histogram where each column shows a number of rule executions broken down by rule type.\"},\"title\":\"Executions by rule type\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":15,\"w\":27,\"h\":13,\"i\":\"b3dd29a9-c051-46ab-b1fa-facf899f7af9\"},\"panelIndex\":\"b3dd29a9-c051-46ab-b1fa-facf899f7af9\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-4eaf036b-c9f5-4206-bcfe-8033bec44a21\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"0ccd359c-35a9-42ee-9b53-e0061755ffef\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"top\",\"isInside\":false,\"showSingleSeries\":false,\"shouldTruncate\":false,\"verticalAlignment\":\"top\",\"horizontalAlignment\":\"left\",\"legendSize\":\"auto\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"4eaf036b-c9f5-4206-bcfe-8033bec44a21\",\"seriesType\":\"bar_stacked\",\"xAccessor\":\"44be5a39-e31d-4242-9778-58ee5ffefbb8\",\"splitAccessor\":\"124a76f1-8df0-4410-87b0-25b9cb2398d9\",\"accessors\":[\"cb5d803d-fa0a-4062-a595-2cec9118bd31\"],\"layerType\":\"data\",\"palette\":{\"type\":\"palette\",\"name\":\"status\"}}],\"valuesInLegend\":true},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"status-change\"}},\"meta\":{\"index\":\"kibana-event-log-data-view\",\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"status-change\"},\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":true,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"kibana.alert.rule.execution.status\",\"field\":\"kibana.alert.rule.execution.status\",\"params\":{\"query\":\"running\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"kibana.alert.rule.execution.status\":\"running\"}}}],\"index\":\"0ccd359c-35a9-42ee-9b53-e0061755ffef\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"4eaf036b-c9f5-4206-bcfe-8033bec44a21\":{\"columns\":{\"44be5a39-e31d-4242-9778-58ee5ffefbb8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"cb5d803d-fa0a-4062-a595-2cec9118bd31\":{\"label\":\"Number of executions\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"124a76f1-8df0-4410-87b0-25b9cb2398d9\":{\"label\":\"Statuses\",\"dataType\":\"string\",\"operationType\":\"filters\",\"scale\":\"ordinal\",\"isBucketed\":true,\"params\":{\"filters\":[{\"label\":\"Succeeded\",\"input\":{\"query\":\"kibana.alert.rule.execution.status: \\\"succeeded\\\" \",\"language\":\"kuery\"}},{\"input\":{\"query\":\"kibana.alert.rule.execution.status: \\\"partial failure\\\" \",\"language\":\"kuery\"},\"label\":\"Warning\"},{\"input\":{\"query\":\"kibana.alert.rule.execution.status: \\\"failed\\\"\",\"language\":\"kuery\"},\"label\":\"Failed\"}]},\"customLabel\":true}},\"columnOrder\":[\"124a76f1-8df0-4410-87b0-25b9cb2398d9\",\"44be5a39-e31d-4242-9778-58ee5ffefbb8\",\"cb5d803d-fa0a-4062-a595-2cec9118bd31\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{},\"description\":\"Histogram where each column shows a number of rule executions broken down by rule status (outcome of the rule execution).\"},\"title\":\"Executions by status\"},{\"version\":\"8.9.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":28,\"w\":48,\"h\":4,\"i\":\"e2b4b41a-2fd5-4733-a297-c67571b8bb57\"},\"panelIndex\":\"e2b4b41a-2fd5-4733-a297-c67571b8bb57\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"**Total rule execution duration** shows how much time it took for a rule to run from the very start to the very end.\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}},\"title\":\"\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":32,\"w\":21,\"h\":15,\"i\":\"ad5995be-bf0f-48ba-8dc8-7313ca3bfbae\"},\"panelIndex\":\"ad5995be-bf0f-48ba-8dc8-7313ca3bfbae\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"2720edea-b96b-47d7-bf57-ff3a4c91ab9d\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\",\"maxLines\":1},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"yConfig\":[{\"forAccessor\":\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"color\":\"#d36086\",\"axisMode\":\"left\"},{\"forAccessor\":\"f623346f-da47-4819-b485-d3527bd4506e\",\"axisMode\":\"left\",\"color\":\"#9170b8\"},{\"forAccessor\":\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\",\"axisMode\":\"left\",\"color\":\"#6092c0\"}]}],\"curveType\":\"CURVE_MONOTONE_X\",\"yTitle\":\"Total execution duration, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"execute\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}}},{\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}},\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"event.category\",\"params\":{\"query\":\"siem\"},\"index\":\"kibana-event-log-data-view\",\"disabled\":false,\"alias\":null}}],\"index\":\"2720edea-b96b-47d7-bf57-ff3a4c91ab9d\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\":{\"label\":\"99th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":99},\"customLabel\":true},\"f623346f-da47-4819-b485-d3527bd4506e\":{\"label\":\"95th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95},\"customLabel\":true},\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\":{\"label\":\"50th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":50},\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{},\"description\":\"This chart aggregates this metric across all rules and shows how a few important percentiles of the metric were changing over time. 99th percentile means that 99% of rule executions had a total duration less than the percentile's value.\"},\"title\":\"Total rule execution duration, percentiles\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":32,\"w\":27,\"h\":15,\"i\":\"2eac0a4e-9ec7-433e-89bc-e8edc1dadae7\"},\"panelIndex\":\"2eac0a4e-9ec7-433e-89bc-e8edc1dadae7\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"0b7e01b1-974a-4de9-867d-46fc000c63e3\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"splitAccessor\":\"3a521678-3e76-49b6-a379-eb75ef03604b\"}],\"yTitle\":\"Total execution duration, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}},\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execute\"},\"index\":\"kibana-event-log-data-view\",\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"0b7e01b1-974a-4de9-867d-46fc000c63e3\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"3a521678-3e76-49b6-a379-eb75ef03604b\":{\"label\":\"Top 5 values of rule.name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"secondaryFields\":[],\"parentFormat\":{\"id\":\"terms\"}}},\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\":{\"label\":\"Total execution duration\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"3a521678-3e76-49b6-a379-eb75ef03604b\",\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Total rule execution duration, top 5 rules per @timestamp\"},{\"version\":\"8.9.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":47,\"w\":48,\"h\":5,\"i\":\"a0f62bb1-a9c3-4c46-b0fb-137c7f2b4a0c\"},\"panelIndex\":\"a0f62bb1-a9c3-4c46-b0fb-137c7f2b4a0c\",\"embeddableConfig\":{\"savedVis\":{\"id\":\"\",\"title\":\"\",\"description\":\"\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"**Rule schedule delay** shows the difference between the planned rule start time (according to its schedule) and the time when it actually started. Normally, it should be about 3 seconds or less. When the cluster is overloaded, it can be way more than 3 seconds. This is when you'd want to scale your cluster according to the load or reduce it by disabling or optimizing the rules.\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}}},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":52,\"w\":21,\"h\":15,\"i\":\"d2e87680-4d92-4067-9f27-7749854dedce\"},\"panelIndex\":\"d2e87680-4d92-4067-9f27-7749854dedce\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"4101bdcb-5ba8-406f-8893-07356a98d49b\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\",\"maxLines\":1},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\",\"niceValues\":true},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"yConfig\":[{\"forAccessor\":\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"color\":\"#d36086\",\"axisMode\":\"left\"},{\"forAccessor\":\"f623346f-da47-4819-b485-d3527bd4506e\",\"axisMode\":\"left\",\"color\":\"#9170b8\"},{\"forAccessor\":\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\",\"axisMode\":\"left\",\"color\":\"#6092c0\"}]}],\"curveType\":\"CURVE_MONOTONE_X\",\"yTitle\":\"Schedule delay, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"execute\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}}},{\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}},\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"event.category\",\"params\":{\"query\":\"siem\"},\"index\":\"kibana-event-log-data-view\",\"disabled\":false,\"alias\":null}}],\"index\":\"4101bdcb-5ba8-406f-8893-07356a98d49b\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X0\":{\"label\":\"Part of 99th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":99},\"customLabel\":true},\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X1\":{\"label\":\"Part of 99th percentile\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X0\",1000000],\"location\":{\"min\":0,\"max\":63},\"text\":\"percentile(kibana.task.schedule_delay, percentile=99) / 1000000\"}},\"references\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X0\"],\"customLabel\":true},\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\":{\"label\":\"99th percentile\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"percentile(kibana.task.schedule_delay, percentile=99) / 1000000\",\"isFormulaBroken\":false},\"references\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X1\"],\"customLabel\":true},\"f623346f-da47-4819-b485-d3527bd4506eX0\":{\"label\":\"Part of 95th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95},\"customLabel\":true},\"f623346f-da47-4819-b485-d3527bd4506eX1\":{\"label\":\"Part of 95th percentile\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"f623346f-da47-4819-b485-d3527bd4506eX0\",1000000],\"location\":{\"min\":0,\"max\":63},\"text\":\"percentile(kibana.task.schedule_delay, percentile=95) / 1000000\"}},\"references\":[\"f623346f-da47-4819-b485-d3527bd4506eX0\"],\"customLabel\":true},\"f623346f-da47-4819-b485-d3527bd4506e\":{\"label\":\"95th percentile\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"percentile(kibana.task.schedule_delay, percentile=95) / 1000000\",\"isFormulaBroken\":false},\"references\":[\"f623346f-da47-4819-b485-d3527bd4506eX1\"],\"customLabel\":true},\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX0\":{\"label\":\"Part of 50th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":50},\"customLabel\":true},\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX1\":{\"label\":\"Part of 50th percentile\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX0\",1000000],\"location\":{\"min\":0,\"max\":63},\"text\":\"percentile(kibana.task.schedule_delay, percentile=50) / 1000000\"}},\"references\":[\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX0\"],\"customLabel\":true},\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\":{\"label\":\"50th percentile\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"percentile(kibana.task.schedule_delay, percentile=50) / 1000000\",\"isFormulaBroken\":false},\"references\":[\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX1\"],\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\",\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X0\",\"44728b87-025d-4b13-b3b9-35bfd5cc7d26X1\",\"f623346f-da47-4819-b485-d3527bd4506eX0\",\"f623346f-da47-4819-b485-d3527bd4506eX1\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX0\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9eX1\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{},\"description\":\"This chart aggregates this metric across all rules and shows how a few important percentiles of the metric were changing over time. 99th percentile means that 99% of rule executions had a schedule delay less than the percentile's value.\"},\"title\":\"Rule scheduling delay, percentiles\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":52,\"w\":27,\"h\":15,\"i\":\"2372c630-207e-4859-83a9-de5a7bc638dc\"},\"panelIndex\":\"2372c630-207e-4859-83a9-de5a7bc638dc\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"adafccc0-9c17-4249-89e1-e61a8d00079b\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"splitAccessor\":\"3a521678-3e76-49b6-a379-eb75ef03604b\"}],\"yTitle\":\"Rule schedule delay, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}},\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execute\"},\"index\":\"kibana-event-log-data-view\",\"disabled\":false,\"alias\":null}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"adafccc0-9c17-4249-89e1-e61a8d00079b\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"3a521678-3e76-49b6-a379-eb75ef03604b\":{\"label\":\"Top 5 values of rule.name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"custom\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"secondaryFields\":[],\"parentFormat\":{\"id\":\"terms\"},\"orderAgg\":{\"label\":\"Maximum of kibana.task.schedule_delay\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true}}}},\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX0\":{\"label\":\"Part of Rule schedule delay\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":false},\"customLabel\":true},\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX1\":{\"label\":\"Part of Rule schedule delay\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX0\",1000000],\"location\":{\"min\":0,\"max\":41},\"text\":\"max(kibana.task.schedule_delay) / 1000000\"}},\"references\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX0\"],\"customLabel\":true},\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\":{\"label\":\"Rule schedule delay\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"max(kibana.task.schedule_delay) / 1000000\",\"isFormulaBroken\":false},\"references\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX1\"],\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"3a521678-3e76-49b6-a379-eb75ef03604b\",\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\",\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX0\",\"707ff766-8ef2-47ca-9559-d7ace1bc0a4bX1\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Rule scheduling delay, top 5 rules per @timestamp\"},{\"version\":\"8.9.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":67,\"w\":48,\"h\":4,\"i\":\"054eb35b-90a8-4b45-9821-7c0eefb22a85\"},\"panelIndex\":\"054eb35b-90a8-4b45-9821-7c0eefb22a85\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"**Search/query duration** metric shows how much time it took for a rule when it was executing to query source indices (or data views) to find source events matching the rule's criteria.\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}},\"title\":\"\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":71,\"w\":21,\"h\":15,\"i\":\"e2504c27-3027-4c13-85c0-a66416c53bd4\"},\"panelIndex\":\"e2504c27-3027-4c13-85c0-a66416c53bd4\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"edb4ad7f-1ef2-477f-980c-c6fe47d6470d\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\",\"maxLines\":1},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"yConfig\":[{\"forAccessor\":\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"color\":\"#d36086\",\"axisMode\":\"left\"},{\"forAccessor\":\"f623346f-da47-4819-b485-d3527bd4506e\",\"axisMode\":\"left\",\"color\":\"#9170b8\"},{\"forAccessor\":\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\",\"axisMode\":\"left\",\"color\":\"#6092c0\"}]}],\"curveType\":\"CURVE_MONOTONE_X\",\"yTitle\":\"Search duration, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"execution-metrics\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.action\":\"execution-metrics\"}}}],\"index\":\"edb4ad7f-1ef2-477f-980c-c6fe47d6470d\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\":{\"label\":\"99th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_search_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":99},\"customLabel\":true},\"f623346f-da47-4819-b485-d3527bd4506e\":{\"label\":\"95th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_search_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95},\"customLabel\":true},\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\":{\"label\":\"50th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_search_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"filter\":{\"query\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms: *\",\"language\":\"kuery\"},\"params\":{\"percentile\":50},\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{},\"description\":\"This chart aggregates this metric across all rules and shows how a few important percentiles of the metric were changing over time. 99th percentile means that 99% of rule executions had a search/query duration less than the percentile's value.\"},\"title\":\"Search/query duration, percentiles\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":71,\"w\":27,\"h\":15,\"i\":\"fe382f90-aa03-47e0-a8a0-d6a8de877467\"},\"panelIndex\":\"fe382f90-aa03-47e0-a8a0-d6a8de877467\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"505272a2-f4fb-4778-9fdf-11415f36cc51\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"splitAccessor\":\"3a521678-3e76-49b6-a379-eb75ef03604b\"}],\"yTitle\":\"Search duration, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execution-metrics\"}},\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execution-metrics\"},\"index\":\"kibana-event-log-data-view\",\"disabled\":false,\"alias\":null}}],\"index\":\"505272a2-f4fb-4778-9fdf-11415f36cc51\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"3a521678-3e76-49b6-a379-eb75ef03604b\":{\"label\":\"Top 5 values of rule.name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"secondaryFields\":[],\"parentFormat\":{\"id\":\"terms\"}}},\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\":{\"label\":\"Search duration\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_search_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"3a521678-3e76-49b6-a379-eb75ef03604b\",\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Search/query duration, top 5 rules per @timestamp\"},{\"version\":\"8.9.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":86,\"w\":48,\"h\":4,\"i\":\"267d2068-2d64-4e8e-bccb-efc580f90762\"},\"panelIndex\":\"267d2068-2d64-4e8e-bccb-efc580f90762\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"**Indexing duration** metric shows how much time it took for a rule when it was executing to write generated alerts to the `.alerts-security.alerts-*` index.\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}},\"title\":\"\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":90,\"w\":21,\"h\":15,\"i\":\"0b6f467f-f784-457e-9351-839874bef66e\"},\"panelIndex\":\"0b6f467f-f784-457e-9351-839874bef66e\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"e0a238a9-104e-46c0-890a-c7b3e1c08018\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\",\"maxLines\":1},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"yConfig\":[{\"forAccessor\":\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"color\":\"#d36086\",\"axisMode\":\"left\"},{\"forAccessor\":\"f623346f-da47-4819-b485-d3527bd4506e\",\"axisMode\":\"left\",\"color\":\"#9170b8\"},{\"forAccessor\":\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\",\"axisMode\":\"left\",\"color\":\"#6092c0\"}]}],\"curveType\":\"CURVE_MONOTONE_X\",\"yTitle\":\"Indexing duration, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"execution-metrics\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.action\":\"execution-metrics\"}}}],\"index\":\"e0a238a9-104e-46c0-890a-c7b3e1c08018\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\":{\"label\":\"99th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_indexing_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":99},\"customLabel\":true},\"f623346f-da47-4819-b485-d3527bd4506e\":{\"label\":\"95th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_indexing_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95},\"customLabel\":true},\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\":{\"label\":\"50th percentile\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_indexing_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"filter\":{\"query\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms: *\",\"language\":\"kuery\"},\"params\":{\"percentile\":50},\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"44728b87-025d-4b13-b3b9-35bfd5cc7d26\",\"f623346f-da47-4819-b485-d3527bd4506e\",\"861f06ed-3ef1-4e60-93fe-ddf176e5aa9e\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{},\"description\":\"This chart aggregates this metric across all rules and shows how a few important percentiles of the metric were changing over time. 99th percentile means that 99% of rule executions had an indexing duration less than the percentile's value.\"},\"title\":\"Indexing duration, percentiles\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":90,\"w\":27,\"h\":15,\"i\":\"2ad1eb6c-c19b-41b1-897e-2d1d192cedae\"},\"panelIndex\":\"2ad1eb6c-c19b-41b1-897e-2d1d192cedae\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"5f5acf46-a12a-43cf-8d4a-b1ef1a971771\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"auto\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"yLeftExtent\":{\"mode\":\"full\"},\"yRightExtent\":{\"mode\":\"full\"},\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\",\"accessors\":[\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"xAccessor\":\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"splitAccessor\":\"3a521678-3e76-49b6-a379-eb75ef03604b\"}],\"yTitle\":\"Indexing duration, ms\"},\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}}},{\"query\":{\"match_phrase\":{\"event.action\":\"execution-metrics\"}},\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"event.action\",\"params\":{\"query\":\"execution-metrics\"},\"index\":\"kibana-event-log-data-view\",\"disabled\":false,\"alias\":null}}],\"index\":\"5f5acf46-a12a-43cf-8d4a-b1ef1a971771\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"59ae5f24-20ed-4c11-bf5c-229d2dbb3cc8\":{\"columns\":{\"2e39ea80-4360-44ef-b24b-91adba3184f8\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true}},\"3a521678-3e76-49b6-a379-eb75ef03604b\":{\"label\":\"Top 5 values of rule.name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"secondaryFields\":[],\"parentFormat\":{\"id\":\"terms\"}}},\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\":{\"label\":\"Indexing duration\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_indexing_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"2e39ea80-4360-44ef-b24b-91adba3184f8\",\"3a521678-3e76-49b6-a379-eb75ef03604b\",\"707ff766-8ef2-47ca-9559-d7ace1bc0a4b\"],\"incompleteColumns\":{}}}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Indexing duration, top 5 rules per @timestamp\"},{\"version\":\"8.9.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":105,\"w\":48,\"h\":4,\"i\":\"0fcc0476-eb8c-4c41-8325-2a9084a12e59\"},\"panelIndex\":\"0fcc0476-eb8c-4c41-8325-2a9084a12e59\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"Top 10 rules by various criteria.\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}},\"title\":\"\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":109,\"w\":24,\"h\":16,\"i\":\"6ce283f7-115a-4a0f-9184-71e141149183\"},\"panelIndex\":\"6ce283f7-115a-4a0f-9184-71e141149183\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-dd23be91-5d0e-41d8-8907-ae3c9a577e2e\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"a1fed0ee-76a2-476e-8614-9fe8e71128b3\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"columns\":[{\"columnId\":\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"isTransposed\":false},{\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\",\"isTransposed\":false,\"width\":135},{\"columnId\":\"75b295c8-00ac-4f62-8952-e4cb44b5f183\",\"isTransposed\":false,\"width\":153.66666666666669},{\"columnId\":\"2fe7ca3c-5c52-4d5e-9892-afb9141d6319\",\"isTransposed\":false,\"width\":86.16666666666663}],\"layerId\":\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\",\"layerType\":\"data\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}},\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null}},{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"execute\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"a1fed0ee-76a2-476e-8614-9fe8e71128b3\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\":{\"columns\":{\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\":{\"label\":\"Name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"secondaryFields\":[]},\"customLabel\":true},\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\":{\"label\":\"Duration, ms\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.alert.rule.execution.metrics.total_run_duration_ms\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"75b295c8-00ac-4f62-8952-e4cb44b5f183\":{\"label\":\"Type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.category\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"2fe7ca3c-5c52-4d5e-9892-afb9141d6319\":{\"label\":\"ID\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.id\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true}},\"columnOrder\":[\"2fe7ca3c-5c52-4d5e-9892-afb9141d6319\",\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"75b295c8-00ac-4f62-8952-e4cb44b5f183\",\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top 10 slowest rules by total execution duration\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":109,\"w\":24,\"h\":16,\"i\":\"f5d7a9c8-839c-408c-b798-68d019483bc7\"},\"panelIndex\":\"f5d7a9c8-839c-408c-b798-68d019483bc7\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-dd23be91-5d0e-41d8-8907-ae3c9a577e2e\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"ee506497-3313-49d4-9cc9-353e55305547\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"columns\":[{\"columnId\":\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"isTransposed\":false},{\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\",\"isTransposed\":false,\"width\":130},{\"columnId\":\"75b295c8-00ac-4f62-8952-e4cb44b5f183\",\"isTransposed\":false,\"width\":163.66666666666669},{\"columnId\":\"2fe7ca3c-5c52-4d5e-9892-afb9141d6319\",\"isTransposed\":false,\"width\":84.16666666666663}],\"layerId\":\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\",\"layerType\":\"data\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"query\":{\"match_phrase\":{\"event.provider\":\"alerting\"}},\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"alerting\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null}},{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"execute\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.action\":\"execute\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.category\",\"field\":\"event.category\",\"params\":{\"query\":\"siem\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"event.category\":\"siem\"}}}],\"index\":\"ee506497-3313-49d4-9cc9-353e55305547\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\":{\"columns\":{\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\":{\"label\":\"Name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"alphabetical\",\"fallback\":false},\"orderDirection\":\"asc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"secondaryFields\":[]},\"customLabel\":true},\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX0\":{\"label\":\"Part of Schedule delay, ms\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":false},\"customLabel\":true},\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX1\":{\"label\":\"Part of Schedule delay, ms\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX0\",1000000],\"location\":{\"min\":0,\"max\":41},\"text\":\"max(kibana.task.schedule_delay) / 1000000\"}},\"references\":[\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX0\"],\"customLabel\":true},\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\":{\"label\":\"Delay, ms\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"max(kibana.task.schedule_delay) / 1000000\",\"isFormulaBroken\":false},\"references\":[\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX1\"],\"customLabel\":true},\"75b295c8-00ac-4f62-8952-e4cb44b5f183\":{\"label\":\"Type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.category\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"alphabetical\",\"fallback\":true},\"orderDirection\":\"asc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"2fe7ca3c-5c52-4d5e-9892-afb9141d6319\":{\"label\":\"ID\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.id\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"custom\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"orderAgg\":{\"label\":\"Maximum of kibana.task.schedule_delay\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"kibana.task.schedule_delay\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true}}},\"customLabel\":true}},\"columnOrder\":[\"2fe7ca3c-5c52-4d5e-9892-afb9141d6319\",\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"75b295c8-00ac-4f62-8952-e4cb44b5f183\",\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\",\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX0\",\"ce86886d-db33-4d81-a0c4-b2d5499cf2efX1\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top 10 slowest rules by schedule delay\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":125,\"w\":24,\"h\":16,\"i\":\"2168b471-9a51-4ead-a51e-15e52ba85d86\"},\"panelIndex\":\"2168b471-9a51-4ead-a51e-15e52ba85d86\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-dd23be91-5d0e-41d8-8907-ae3c9a577e2e\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"c5902ca2-58ae-4b1c-b420-5208b7cb16c4\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"columns\":[{\"columnId\":\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"isTransposed\":false},{\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\",\"isTransposed\":false,\"width\":122.08333333333331},{\"columnId\":\"729ee95a-5bf6-4f18-9350-dce536b55dea\",\"isTransposed\":false,\"width\":164.75},{\"columnId\":\"fa6462ca-54c3-470e-a9c3-66ff58c37536\",\"isTransposed\":false,\"width\":82.08333333333334}],\"layerId\":\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\",\"layerType\":\"data\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}},\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null}},{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"status-change\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.action\":\"status-change\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"kibana.alert.rule.execution.status\",\"field\":\"kibana.alert.rule.execution.status\",\"params\":{\"query\":\"failed\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"kibana.alert.rule.execution.status\":\"failed\"}}}],\"index\":\"c5902ca2-58ae-4b1c-b420-5208b7cb16c4\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\":{\"columns\":{\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\":{\"label\":\"Name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"secondaryFields\":[]},\"customLabel\":true},\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\":{\"label\":\"# \\\"Failed\\\"\",\"dataType\":\"number\",\"operationType\":\"unique_count\",\"scale\":\"ratio\",\"sourceField\":\"kibana.alert.rule.execution.uuid\",\"isBucketed\":false,\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"729ee95a-5bf6-4f18-9350-dce536b55dea\":{\"label\":\"Type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.category\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"fa6462ca-54c3-470e-a9c3-66ff58c37536\":{\"label\":\"ID\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.id\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true}},\"columnOrder\":[\"fa6462ca-54c3-470e-a9c3-66ff58c37536\",\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"729ee95a-5bf6-4f18-9350-dce536b55dea\",\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top 10 rules by status \\\"Failed\\\"\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":125,\"w\":24,\"h\":16,\"i\":\"075d7dff-442b-4091-bfe2-3844e7e7e3f4\"},\"panelIndex\":\"075d7dff-442b-4091-bfe2-3844e7e7e3f4\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"id\":\"kibana-event-log-data-view\",\"name\":\"indexpattern-datasource-layer-dd23be91-5d0e-41d8-8907-ae3c9a577e2e\",\"type\":\"index-pattern\"},{\"id\":\"kibana-event-log-data-view\",\"name\":\"64b1a767-a32b-4a59-9fae-de5f08d38208\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"columns\":[{\"columnId\":\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"isTransposed\":false},{\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\",\"isTransposed\":false,\"width\":126.25},{\"columnId\":\"7ea81631-0dff-4ec6-929f-592e29101149\",\"isTransposed\":false,\"width\":165.375},{\"columnId\":\"9f1d7602-e75b-427f-b740-c2b8167fed33\",\"isTransposed\":false,\"width\":82}],\"layerId\":\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\",\"layerType\":\"data\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[{\"meta\":{\"type\":\"combined\",\"relation\":\"AND\",\"params\":[{\"query\":{\"match_phrase\":{\"event.provider\":\"securitySolution.ruleExecution\"}},\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.provider\",\"field\":\"event.provider\",\"params\":{\"query\":\"securitySolution.ruleExecution\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null}},{\"meta\":{\"negate\":false,\"index\":\"kibana-event-log-data-view\",\"key\":\"event.action\",\"field\":\"event.action\",\"params\":{\"query\":\"status-change\"},\"type\":\"phrase\",\"disabled\":false,\"alias\":null},\"query\":{\"match_phrase\":{\"event.action\":\"status-change\"}}},{\"meta\":{\"disabled\":false,\"negate\":false,\"alias\":null,\"index\":\"kibana-event-log-data-view\",\"key\":\"kibana.alert.rule.execution.status\",\"field\":\"kibana.alert.rule.execution.status\",\"params\":{\"query\":\"partial failure\"},\"type\":\"phrase\"},\"$state\":{\"store\":\"appState\"},\"query\":{\"match_phrase\":{\"kibana.alert.rule.execution.status\":\"partial failure\"}}}],\"index\":\"64b1a767-a32b-4a59-9fae-de5f08d38208\",\"disabled\":false,\"negate\":false,\"alias\":null},\"query\":{},\"$state\":{\"store\":\"appState\"}}],\"datasourceStates\":{\"formBased\":{\"layers\":{\"dd23be91-5d0e-41d8-8907-ae3c9a577e2e\":{\"columns\":{\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\":{\"label\":\"Name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.name\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"secondaryFields\":[]},\"customLabel\":true},\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\":{\"label\":\"# \\\"Warning\\\"\",\"dataType\":\"number\",\"operationType\":\"unique_count\",\"scale\":\"ratio\",\"sourceField\":\"kibana.alert.rule.execution.uuid\",\"isBucketed\":false,\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"7ea81631-0dff-4ec6-929f-592e29101149\":{\"label\":\"Type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.category\",\"isBucketed\":true,\"params\":{\"size\":1,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"9f1d7602-e75b-427f-b740-c2b8167fed33\":{\"label\":\"ID\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"rule.id\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"},\"orderDirection\":\"desc\",\"otherBucket\":false,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true}},\"columnOrder\":[\"9f1d7602-e75b-427f-b740-c2b8167fed33\",\"29b3609c-9891-4c1c-94ee-17bc4410cbbb\",\"7ea81631-0dff-4ec6-929f-592e29101149\",\"ce86886d-db33-4d81-a0c4-b2d5499cf2ef\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top 10 rules by status \\\"Warning\\\"\"}]", "timeRestore": false, "title": "[Elastic Security] Detection rule monitoring", "version": 1 @@ -179,7 +179,7 @@ }, { "id": "kibana-event-log-data-view", - "name": "6ce283f7-115a-4a0f-9184-71e141149183:651cb393-d7ee-4ac2-a4d4-d8a325b4690b", + "name": "6ce283f7-115a-4a0f-9184-71e141149183:a1fed0ee-76a2-476e-8614-9fe8e71128b3", "type": "index-pattern" }, { @@ -189,7 +189,7 @@ }, { "id": "kibana-event-log-data-view", - "name": "f5d7a9c8-839c-408c-b798-68d019483bc7:17149e33-97c0-48c2-8772-d7bd0c5dd6d8", + "name": "f5d7a9c8-839c-408c-b798-68d019483bc7:ee506497-3313-49d4-9cc9-353e55305547", "type": "index-pattern" }, { @@ -199,7 +199,7 @@ }, { "id": "kibana-event-log-data-view", - "name": "2168b471-9a51-4ead-a51e-15e52ba85d86:274e3567-2129-4d26-a778-d5220531ba86", + "name": "2168b471-9a51-4ead-a51e-15e52ba85d86:c5902ca2-58ae-4b1c-b420-5208b7cb16c4", "type": "index-pattern" }, { @@ -209,7 +209,7 @@ }, { "id": "kibana-event-log-data-view", - "name": "075d7dff-442b-4091-bfe2-3844e7e7e3f4:20d11002-bf00-477f-8221-2ceb641baf3f", + "name": "075d7dff-442b-4091-bfe2-3844e7e7e3f4:64b1a767-a32b-4a59-9fae-de5f08d38208", "type": "index-pattern" }, { diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_config.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_config.tsx index 0ead1eb9e0b636..56987e86b9c83b 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_config.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_config.tsx @@ -28,6 +28,7 @@ import { EuiButtonGroupProps, EuiHighlight, EuiBadge, + EuiToolTip, } from '@elastic/eui'; import { PROFILE_OPTIONS, @@ -409,13 +410,16 @@ export const FIELD = (readOnly?: boolean): FieldMap => ({ label: locations?.find((loc) => location.id === loc.id)?.label || '', id: location.id || '', isServiceManaged: location.isServiceManaged || false, + isInvalid: location.isInvalid, + disabled: location.isInvalid, })), selectedOptions: Object.values(field?.value || {}).map((location) => ({ - color: locations.some((s) => s.id === location.id) - ? location.isServiceManaged + color: + location.isInvalid || !locations.some((s) => s.id === location.id) + ? 'danger' + : location.isServiceManaged ? 'default' - : 'primary' - : 'danger', + : 'primary', label: locations?.find((loc) => location.id === loc.id)?.label ?? location.id, id: location.id || '', isServiceManaged: location.isServiceManaged || false, @@ -434,16 +438,43 @@ export const FIELD = (readOnly?: boolean): FieldMap => ({ isDisabled: readOnly, renderOption: (option: FormLocation, searchValue: string) => { return ( - - - {option.label} - - {!option.isServiceManaged && ( - - Private + + + + {option.label} - )} - + {option.isInvalid && ( + + + {i18n.translate('xpack.synthetics.monitorConfig.locations.invalid', { + defaultMessage: 'Invalid', + })} + + + )} + {!option.isServiceManaged && ( + + + {i18n.translate('xpack.synthetics.monitorConfig.locations.private', { + defaultMessage: 'Private', + })} + + + )} + + ); }, }; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/types.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/types.ts index e63d65b73fdfb0..95d05c7b250ea8 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/types.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/types.ts @@ -38,6 +38,7 @@ export interface FormLocation { id: string; isServiceManaged: boolean; label: string; + isInvalid?: boolean; } export type FormConfig = MonitorFields & { diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_panel.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_panel.tsx index 8e400f6fc24d15..4f67b8621104ce 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_panel.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_panel.tsx @@ -8,7 +8,7 @@ import React, { useMemo } from 'react'; import { EuiPanel, useEuiTheme, EuiResizeObserver, EuiSpacer } from '@elastic/eui'; -import { Chart, Settings, Heatmap, ScaleType } from '@elastic/charts'; +import { Chart, Settings, Heatmap, ScaleType, Tooltip } from '@elastic/charts'; import { MonitorStatusHeader } from './monitor_status_header'; import { MonitorStatusCellTooltip } from './monitor_status_cell_tooltip'; @@ -59,14 +59,14 @@ export const MonitorStatusPanel = ({ height: 60, }} > + ( + + )} + /> ( - - ), - }} theme={{ heatmap }} onBrushEnd={(brushArea) => { onBrushed?.(getBrushData(brushArea)); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_bar_chart.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_bar_chart.tsx index 547c1732920488..3d15af89c06560 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_bar_chart.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_bar_chart.tsx @@ -17,7 +17,8 @@ import { Settings, TickFormatter, TooltipContainer, - CustomTooltip, + CustomTooltip as CustomChartTooltip, + Tooltip, } from '@elastic/charts'; import { useEuiTheme } from '@elastic/eui'; import { useChartTheme } from '../../../../../../hooks/use_chart_theme'; @@ -36,7 +37,7 @@ const getChartHeight = (data: WaterfallData): number => { return noOfXBars * BAR_HEIGHT; }; -const Tooltip: CustomTooltip = (tooltipInfo) => { +const CustomTooltip: CustomChartTooltip = (tooltipInfo) => { const { data, sidebarItems } = useWaterfallContext(); return useMemo(() => { const sidebarItem = sidebarItems?.find((item) => item.index === tooltipInfo.header?.value); @@ -89,15 +90,15 @@ export const WaterfallBarChart = ({ data-test-subj="wfDataOnlyBarChart" > + + ({ method: 'GET', path: SYNTHETICS_API_URLS.AGENT_POLICIES, validate: {}, - handler: async ({ server }): Promise => { - const soClient = server.coreStart.savedObjects.createInternalRepository(); - const esClient = server.coreStart.elasticsearch.client.asInternalUser; - - return server.fleet?.agentPolicyService.list(soClient, { - page: 1, - perPage: 10000, - sortField: 'name', - sortOrder: 'asc', - kuery: 'ingest-agent-policies.is_managed : false', - esClient, - withAgentCount: true, - }); + handler: async ({ server, context, uptimeEsClient }): Promise => { + return getAgentPoliciesAsInternalUser(server); }, }); + +export const getAgentPoliciesAsInternalUser = async (server: SyntheticsServerSetup) => { + const soClient = server.coreStart.savedObjects.createInternalRepository(); + const esClient = server.coreStart.elasticsearch.client.asInternalUser; + + return server.fleet?.agentPolicyService.list(soClient, { + page: 1, + perPage: 10000, + sortField: 'name', + sortOrder: 'asc', + kuery: 'ingest-agent-policies.is_managed : false', + esClient, + withAgentCount: true, + }); +}; diff --git a/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts b/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts index ed7a733fc5e0b5..c9e428fef36f7a 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts @@ -9,6 +9,7 @@ import { NewPackagePolicy } from '@kbn/fleet-plugin/common'; import { NewPackagePolicyWithId } from '@kbn/fleet-plugin/server/services/package_policy'; import { cloneDeep } from 'lodash'; import { SavedObjectError } from '@kbn/core-saved-objects-common'; +import { getAgentPoliciesAsInternalUser } from '../../routes/settings/private_locations/get_agent_policies'; import { SyntheticsServerSetup } from '../../types'; import { formatSyntheticsPolicy } from '../formatters/private_formatters/format_synthetics_policy'; import { @@ -401,13 +402,7 @@ export class SyntheticsPrivateLocation { } async getAgentPolicies() { - const agentPolicies = await this.server.fleet.agentPolicyService.list( - this.server.savedObjectsClient!, - { - page: 1, - perPage: 10000, - } - ); + const agentPolicies = await getAgentPoliciesAsInternalUser(this.server); return agentPolicies.items; } diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.test.tsx b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.test.tsx index 35f68ba33c66cc..8eef84443777d8 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.test.tsx +++ b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.test.tsx @@ -68,20 +68,24 @@ describe('', () => { style="width: 100%; height: 200px;" >
-
-
-
+ class="echChartContent" + > +
+
+
+
+
`); diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index f9e6dcf58d4650..cc7d3115424965 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -11060,7 +11060,6 @@ "xpack.crossClusterReplication.unfollowLeaderIndex.confirmModal.multipleUnfollowDescription": "Les index suiveurs seront convertis en index standard. Ils ne seront pas affichés dans la réplication inter-clusters, mais vous pouvez les gérer dans la page Gestion des index. Cette opération ne peut pas être annulée.", "xpack.crossClusterReplication.unfollowLeaderIndex.confirmModal.singleUnfollowDescription": "L'index suiveur sera converti en index standard. Il ne sera plus affiché dans la réplication inter-clusters, mais vous pouvez le gérer dans la page Gestion des index. Cette opération ne peut pas être annulée.", "xpack.crossClusterReplication.unfollowLeaderIndex.confirmModal.unfollowSingleTitle": "Annuler le suivi de l'index meneur \"{name}\" ?", - "xpack.csp.awsIntegration.setupInfoContent": "L'intégration nécessitera certaines autorisations AWS en lecture seule pour détecter les erreurs de configuration de la sécurité. Sélectionnez votre méthode préférée pour la fourniture d'informations d'identification AWS que cette intégration utilisera. Vous pouvez suivre ces {stepByStepInstructionsLink} pour générer les informations d'identification nécessaires.", "xpack.csp.benchmarks.benchmarkEmptyState.integrationsNotFoundForNameTitle": " pour \"{name}\"", "xpack.csp.benchmarks.benchmarksTable.errorRenderer.errorDescription": "{error} {statusCode} : {body}", "xpack.csp.benchmarks.totalIntegrationsCountMessage": "Affichage de {pageCount} sur {totalCount, plural, one {# intégration} many {# intégrations} other {# intégrations}}", @@ -11097,7 +11096,6 @@ "xpack.csp.awsIntegration.roleArnLabel": "Nom ARN de rôle", "xpack.csp.awsIntegration.secretAccessKeyLabel": "Clé d'accès secrète", "xpack.csp.awsIntegration.sessionTokenLabel": "Token de session", - "xpack.csp.awsIntegration.setupInfoContentLink": "instructions pas à pas", "xpack.csp.awsIntegration.setupInfoContentTitle": "Configurer l'accès", "xpack.csp.awsIntegration.sharedCredentialFileLabel": "Fichier d'informations d'identification partagé", "xpack.csp.awsIntegration.sharedCredentialLabel": "Informations d'identification partagées", @@ -14381,36 +14379,19 @@ "xpack.enterpriseSearch.workplaceSearch.integrations.azureBlobDescription": "Effectuez des recherches sur votre contenu sur Stockage Blob Azure avec Enterprise Search.", "xpack.enterpriseSearch.workplaceSearch.integrations.boxDescription": "Effectuez des recherches dans vos fichiers et dossiers stockés sur Box avec Workplace Search.", "xpack.enterpriseSearch.workplaceSearch.integrations.boxName": "Box", - "xpack.enterpriseSearch.workplaceSearch.integrations.confluenceCloudDescription": "Effectuez des recherches sur le contenu de votre organisation sur le cloud Confluence avec Workplace Search.", - "xpack.enterpriseSearch.workplaceSearch.integrations.confluenceCloudName": "Cloud Confluence", - "xpack.enterpriseSearch.workplaceSearch.integrations.confluenceServerDescription": "Effectuez des recherches sur le contenu de votre organisation sur le serveur Confluence avec Workplace Search.", - "xpack.enterpriseSearch.workplaceSearch.integrations.confluenceServerName": "Serveur Confluence", - "xpack.enterpriseSearch.workplaceSearch.integrations.dropboxDescription": "Effectuez des recherches dans vos fichiers et dossiers stockés sur Dropbox avec Workplace Search.", - "xpack.enterpriseSearch.workplaceSearch.integrations.dropboxName": "Dropbox", - "xpack.enterpriseSearch.workplaceSearch.integrations.githubDescription": "Effectuez des recherches sur vos projets et référentiels sur GitHub avec Workplace Search.", - "xpack.enterpriseSearch.workplaceSearch.integrations.githubEnterpriseServerDescription": "Effectuez des recherches sur vos projets et référentiels sur GitHub Enterprise avec Workplace Search.", - "xpack.enterpriseSearch.workplaceSearch.integrations.githubEnterpriseServerName": "GitHub Enterprise Server", - "xpack.enterpriseSearch.workplaceSearch.integrations.githubName": "GitHub", "xpack.enterpriseSearch.workplaceSearch.integrations.gmailDescription": "Effectuez des recherches dans vos e-mails gérés par Gmail avec Workplace Search.", "xpack.enterpriseSearch.workplaceSearch.integrations.gmailName": "Gmail", "xpack.enterpriseSearch.workplaceSearch.integrations.googleCloud": "Google Cloud Storage", "xpack.enterpriseSearch.workplaceSearch.integrations.googleCloudDescription": "Effectuez des recherches sur votre contenu sur Google Cloud Storage avec Enterprise Search.", "xpack.enterpriseSearch.workplaceSearch.integrations.googleDriveDescription": "Effectuez des recherches dans vos documents sur Google Drive avec Workplace Search.", "xpack.enterpriseSearch.workplaceSearch.integrations.googleDriveName": "Google Drive", - "xpack.enterpriseSearch.workplaceSearch.integrations.jiraCloudDescription": "Effectuez des recherches dans le flux de travail de votre projet sur le cloud Jira avec Workplace Search.", - "xpack.enterpriseSearch.workplaceSearch.integrations.jiraCloudName": "Jira Cloud", - "xpack.enterpriseSearch.workplaceSearch.integrations.jiraServerDescription": "Effectuez des recherches dans le flux de travail de votre projet sur le serveur Jira avec Workplace Search.", - "xpack.enterpriseSearch.workplaceSearch.integrations.jiraServerName": "Serveur Jira", "xpack.enterpriseSearch.workplaceSearch.integrations.mongoDBDescription": "Recherchez dans votre contenu MongoDB avec Enterprise Search.", "xpack.enterpriseSearch.workplaceSearch.integrations.mongoDBName": "MongoDB", "xpack.enterpriseSearch.workplaceSearch.integrations.msSqlDescription": "Effectuez des recherches sur votre contenu sur Microsoft SQL Server avec Enterprise Search.", "xpack.enterpriseSearch.workplaceSearch.integrations.msSqlName": "Microsoft SQL", "xpack.enterpriseSearch.workplaceSearch.integrations.mysqlDescription": "Recherchez dans votre contenu MySQL avec Enterprise Search.", "xpack.enterpriseSearch.workplaceSearch.integrations.mysqlName": "MySQL", - "xpack.enterpriseSearch.workplaceSearch.integrations.nativeConnectorDescription": "Recherchez dans vos sources de données avec un connecteur Enterprise Search natif.", - "xpack.enterpriseSearch.workplaceSearch.integrations.nativeConnectorName": "Utiliser un connecteur", "xpack.enterpriseSearch.workplaceSearch.integrations.netowkrDriveDescription": "Effectuez des recherches sur le contenu de votre lecteur réseau avec Enterprise Search.", - "xpack.enterpriseSearch.workplaceSearch.integrations.networkDriveDescription": "Effectuez une recherche dans vos fichiers et dossiers stockés sur les lecteurs réseau avec Workplace Search.", "xpack.enterpriseSearch.workplaceSearch.integrations.networkDriveName": "Lecteur réseau", "xpack.enterpriseSearch.workplaceSearch.integrations.onedriveDescription": "Effectuez des recherches dans vos fichiers stockés sur OneDrive avec Workplace Search.", "xpack.enterpriseSearch.workplaceSearch.integrations.onedriveName": "OneDrive", @@ -14424,8 +14405,6 @@ "xpack.enterpriseSearch.workplaceSearch.integrations.salesforceName": "Salesforce", "xpack.enterpriseSearch.workplaceSearch.integrations.salesforceSandboxDescription": "Effectuez des recherches dans votre contenu sur Salesforce Sandbox avec Workplace Search.", "xpack.enterpriseSearch.workplaceSearch.integrations.salesforceSandboxName": "Sandbox Salesforce", - "xpack.enterpriseSearch.workplaceSearch.integrations.servicenowDescription": "Effectuez des recherches dans votre contenu sur ServiceNow avec Workplace Search.", - "xpack.enterpriseSearch.workplaceSearch.integrations.servicenowName": "ServiceNow", "xpack.enterpriseSearch.workplaceSearch.integrations.sharepointOnlineDescription": "Effectuez des recherches dans vos fichiers stockés sur SharePoint Online avec Workplace Search.", "xpack.enterpriseSearch.workplaceSearch.integrations.sharepointOnlineName": "SharePoint Online", "xpack.enterpriseSearch.workplaceSearch.integrations.sharepointServerDescription": "Effectuez des recherches dans vos fichiers stockés sur le serveur Microsoft SharePoint avec Workplace Search.", @@ -15406,10 +15385,8 @@ "xpack.fleet.agentEnrenrollmentStepAgentPolicyollment.noEnrollmentTokensForSelectedPolicyCalloutDescription": "Vous devez créer un token d'inscription afin d'inscrire les agents avec cette politique", "xpack.fleet.agentEnrollment.agentDescription": "Ajoutez des agents Elastic à vos hôtes pour collecter des données et les envoyer à la Suite Elastic.", "xpack.fleet.agentEnrollment.closeFlyoutButtonLabel": "Fermer", - "xpack.fleet.agentEnrollment.cloudFormation.launchButton": "Lancer CloudFormation", "xpack.fleet.agentEnrollment.cloudFormation.loadingAriaLabel": "Chargement des instructions CloudFormation", "xpack.fleet.agentEnrollment.cloudFormation.noApiKey": "Token d'enregistrement non trouvé", - "xpack.fleet.agentEnrollment.cloudFormation.noFleetServer": "Hôte du serveur Fleet non trouvé", "xpack.fleet.agentEnrollment.confirmation.button": "Voir les agents inscrits", "xpack.fleet.agentEnrollment.copyPolicyButton": "Copier dans le presse-papiers", "xpack.fleet.agentEnrollment.downloadDescriptionForK8s": "Copiez ou téléchargez le manifeste Kubernetes.", @@ -26533,7 +26510,6 @@ "xpack.monitoring.updateLicenseButtonLabel": "Mettre à jour la licence", "xpack.monitoring.updateLicenseTitle": "Mettre à jour votre licence", "xpack.monitoring.useAvailableLicenseDescription": "Si vous avez déjà une nouvelle licence, chargez-la maintenant.", - "xpack.observability.alertsTable.showingAlertsTitle": "{totalAlerts, plural, =1 {alerte} one {alertes} many {alertes} other {alertes}}", "xpack.observability.apmEnableContinuousRollupsDescription": "{betaLabel} Lorsque les cumuls continus sont activés, l'interface utilisateur sélectionne des indicateurs ayant la résolution appropriée. Sur des plages temporelles plus larges, des indicateurs de résolution inférieure sont utilisés, ce qui améliore les temps de chargement.", "xpack.observability.apmEnableServiceMetricsDescription": "{betaLabel} Permet l'utilisation d'indicateurs de transaction de service. Il s'agit d'indicateurs à faible cardinalité qui peuvent être utilisés par certaines vues, comme l'inventaire de service, pour accélérer le chargement.", "xpack.observability.apmProgressiveLoadingDescription": "{technicalPreviewLabel} S'il faut charger les données de façon progressive pour les vues APM. Les données peuvent être demandées d'abord avec un taux d'échantillonnage inférieur, avec une précision plus faible mais des temps de réponse plus rapides, pendant que les données non échantillonnées se chargent en arrière-plan", @@ -26606,14 +26582,9 @@ "xpack.observability.alertsFlyout.viewRulesDetailsLinkText": "Afficher les détails de la règle", "xpack.observability.alertsLinkTitle": "Alertes", "xpack.observability.alertsSummaryWidget.last30days": "30 derniers jours", - "xpack.observability.alertsTable.actionsTextLabel": "Actions", - "xpack.observability.alertsTable.footerTextLabel": "alertes", - "xpack.observability.alertsTable.loadingTextLabel": "chargement des alertes", "xpack.observability.alertsTable.moreActionsTextLabel": "Plus d'actions", "xpack.observability.alertsTable.notEnoughPermissions": "Privilèges supplémentaires requis", "xpack.observability.alertsTable.viewAlertDetailsButtonText": "Afficher les détails de l'alerte", - "xpack.observability.alertsTable.viewAlertDetailsPageButtonText": "Afficher la page d'alertes", - "xpack.observability.alertsTable.viewDetailsTextLabel": "Afficher les détails", "xpack.observability.alertsTable.viewInAppTextLabel": "Afficher dans l'application", "xpack.observability.alertsTable.viewRuleDetailsButtonText": "Afficher les détails de la règle", "xpack.observability.alertsTGrid.durationColumnDescription": "Durée", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 0a31077bc09059..aa795e858a1722 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -11060,7 +11060,6 @@ "xpack.crossClusterReplication.unfollowLeaderIndex.confirmModal.multipleUnfollowDescription": "フォロワーインデックスは標準のインデックスに変換されます。今後クラスター横断レプリケーションには表示されませんが、インデックス管理で管理できます。この操作は元に戻すことができません。", "xpack.crossClusterReplication.unfollowLeaderIndex.confirmModal.singleUnfollowDescription": "フォロワーインデックスは標準のインデックスに変換されます。今後クラスター横断レプリケーションには表示されませんが、インデックス管理で管理できます。この操作は元に戻すことができません。", "xpack.crossClusterReplication.unfollowLeaderIndex.confirmModal.unfollowSingleTitle": "「{name}」のリーダーインデックスのフォローを解除しますか?", - "xpack.csp.awsIntegration.setupInfoContent": "統合で、セキュリティ構成のエラーを検出するには、特定の読み取り専用AWS権限が必要です。この統合で使用するAWS資格情報を提供するための任意の方法を選択します。必要な資格情報を生成するには、これらの{stepByStepInstructionsLink}に従ってください。", "xpack.csp.benchmarks.benchmarkEmptyState.integrationsNotFoundForNameTitle": " \"{name}\"", "xpack.csp.benchmarks.benchmarksTable.errorRenderer.errorDescription": "{error} {statusCode}: {body}", "xpack.csp.benchmarks.totalIntegrationsCountMessage": "{pageCount}/{totalCount, plural, other {#個の統合}}ページを表示中", @@ -11097,7 +11096,6 @@ "xpack.csp.awsIntegration.roleArnLabel": "ロールARN", "xpack.csp.awsIntegration.secretAccessKeyLabel": "シークレットアクセスキー", "xpack.csp.awsIntegration.sessionTokenLabel": "セッショントークン", - "xpack.csp.awsIntegration.setupInfoContentLink": "段階的な手順", "xpack.csp.awsIntegration.setupInfoContentTitle": "アクセスの設定", "xpack.csp.awsIntegration.sharedCredentialFileLabel": "共有資格情報ファイル", "xpack.csp.awsIntegration.sharedCredentialLabel": "共有資格情報", @@ -14380,36 +14378,19 @@ "xpack.enterpriseSearch.workplaceSearch.integrations.azureBlobDescription": "エンタープライズ サーチでAzure Blob Storageのコンテンツを検索します。", "xpack.enterpriseSearch.workplaceSearch.integrations.boxDescription": "Workplace Searchを使用して、Boxに保存されたファイルとフォルダーを検索します。", "xpack.enterpriseSearch.workplaceSearch.integrations.boxName": "Box", - "xpack.enterpriseSearch.workplaceSearch.integrations.confluenceCloudDescription": "Workplace Searchを使用して、Confluence Cloudの組織コンテンツを検索します。", - "xpack.enterpriseSearch.workplaceSearch.integrations.confluenceCloudName": "Confluence Cloud", - "xpack.enterpriseSearch.workplaceSearch.integrations.confluenceServerDescription": "Workplace Searchを使用して、Confluence Serverの組織コンテンツを検索します。", - "xpack.enterpriseSearch.workplaceSearch.integrations.confluenceServerName": "Confluence Server", - "xpack.enterpriseSearch.workplaceSearch.integrations.dropboxDescription": "Workplace Searchを使用して、Dropboxに保存されたファイルとフォルダーを検索します。", - "xpack.enterpriseSearch.workplaceSearch.integrations.dropboxName": "Dropbox", - "xpack.enterpriseSearch.workplaceSearch.integrations.githubDescription": "Workplace Searchを使用して、GitHubのプロジェクトとリポジトリを検索します。", - "xpack.enterpriseSearch.workplaceSearch.integrations.githubEnterpriseServerDescription": "Workplace Searchを使用して、GitHub Enterprise Serverのプロジェクトとリポジトリを検索します。", - "xpack.enterpriseSearch.workplaceSearch.integrations.githubEnterpriseServerName": "GitHub Enterprise Server", - "xpack.enterpriseSearch.workplaceSearch.integrations.githubName": "GitHub", "xpack.enterpriseSearch.workplaceSearch.integrations.gmailDescription": "Workplace Searchを使用して、Gmailで管理された電子メールを検索します。", "xpack.enterpriseSearch.workplaceSearch.integrations.gmailName": "Gmail", "xpack.enterpriseSearch.workplaceSearch.integrations.googleCloud": "Google Cloud Storage", "xpack.enterpriseSearch.workplaceSearch.integrations.googleCloudDescription": "エンタープライズ サーチでGoogle Cloud Storageのコンテンツを検索します。", "xpack.enterpriseSearch.workplaceSearch.integrations.googleDriveDescription": "Workplace Searchを使用して、Google Driveのドキュメントを検索します。", "xpack.enterpriseSearch.workplaceSearch.integrations.googleDriveName": "Google Drive", - "xpack.enterpriseSearch.workplaceSearch.integrations.jiraCloudDescription": "Workplace Searchを使用して、Jira Cloudのプロジェクトワークフローを検索します。", - "xpack.enterpriseSearch.workplaceSearch.integrations.jiraCloudName": "Jira Cloud", - "xpack.enterpriseSearch.workplaceSearch.integrations.jiraServerDescription": "Workplace Searchを使用して、Jira Serverのプロジェクトワークフローを検索します。", - "xpack.enterpriseSearch.workplaceSearch.integrations.jiraServerName": "Jira Server", "xpack.enterpriseSearch.workplaceSearch.integrations.mongoDBDescription": "エンタープライズ サーチでMongoDBコンテンツを検索します。", "xpack.enterpriseSearch.workplaceSearch.integrations.mongoDBName": "MongoDB", "xpack.enterpriseSearch.workplaceSearch.integrations.msSqlDescription": "エンタープライズ サーチでMicrosoft SQL Serverのコンテンツを検索します。", "xpack.enterpriseSearch.workplaceSearch.integrations.msSqlName": "Microsoft SQL", "xpack.enterpriseSearch.workplaceSearch.integrations.mysqlDescription": "エンタープライズ サーチでMySQLコンテンツを検索します。", "xpack.enterpriseSearch.workplaceSearch.integrations.mysqlName": "MySQL", - "xpack.enterpriseSearch.workplaceSearch.integrations.nativeConnectorDescription": "ネイティブのエンタープライズ サーチコネクターを使用して、データソースを検索します。", - "xpack.enterpriseSearch.workplaceSearch.integrations.nativeConnectorName": "コネクターを使用", "xpack.enterpriseSearch.workplaceSearch.integrations.netowkrDriveDescription": "エンタープライズ サーチでネットワークドライブコンテンツを検索します。", - "xpack.enterpriseSearch.workplaceSearch.integrations.networkDriveDescription": "Workplace Searchでネットワークドライブに保存されたファイルとフォルダーを検索します。", "xpack.enterpriseSearch.workplaceSearch.integrations.networkDriveName": "ネットワークドライブ", "xpack.enterpriseSearch.workplaceSearch.integrations.onedriveDescription": "Workplace Searchを使用して、OneDriveに保存されたファイルを検索します。", "xpack.enterpriseSearch.workplaceSearch.integrations.onedriveName": "OneDrive", @@ -14423,8 +14404,6 @@ "xpack.enterpriseSearch.workplaceSearch.integrations.salesforceName": "Salesforce", "xpack.enterpriseSearch.workplaceSearch.integrations.salesforceSandboxDescription": "Workplace Searchを使用して、Salesforce Sandboxのコンテンツを検索します。", "xpack.enterpriseSearch.workplaceSearch.integrations.salesforceSandboxName": "Salesforce Sandbox", - "xpack.enterpriseSearch.workplaceSearch.integrations.servicenowDescription": "Workplace Searchを使用して、ServiceNowのコンテンツを検索します。", - "xpack.enterpriseSearch.workplaceSearch.integrations.servicenowName": "ServiceNow", "xpack.enterpriseSearch.workplaceSearch.integrations.sharepointOnlineDescription": "Workplace Searchを使用して、SharePointに保存されたファイルを検索します。", "xpack.enterpriseSearch.workplaceSearch.integrations.sharepointOnlineName": "SharePoint Online", "xpack.enterpriseSearch.workplaceSearch.integrations.sharepointServerDescription": "Workplace Searchを使用して、Microsoft SharePoint Serverに保存されたファイルを検索します。", @@ -15405,10 +15384,8 @@ "xpack.fleet.agentEnrenrollmentStepAgentPolicyollment.noEnrollmentTokensForSelectedPolicyCalloutDescription": "エージェントをこのポリシーに登録するには、登録トークンを作成する必要があります", "xpack.fleet.agentEnrollment.agentDescription": "Elastic エージェントをホストに追加し、データを収集して、Elastic Stack に送信します。", "xpack.fleet.agentEnrollment.closeFlyoutButtonLabel": "閉じる", - "xpack.fleet.agentEnrollment.cloudFormation.launchButton": "CloudFormationを起動", "xpack.fleet.agentEnrollment.cloudFormation.loadingAriaLabel": "CloudFormation命令を読み込み中", "xpack.fleet.agentEnrollment.cloudFormation.noApiKey": "登録トークンが見つかりません", - "xpack.fleet.agentEnrollment.cloudFormation.noFleetServer": "Fleetサーバーホスト名が見つかりません", "xpack.fleet.agentEnrollment.confirmation.button": "登録されたエージェントを表示", "xpack.fleet.agentEnrollment.copyPolicyButton": "クリップボードにコピー", "xpack.fleet.agentEnrollment.downloadDescriptionForK8s": "Kubernetesマニフェストをコピーまたはダウンロードします。", @@ -26519,7 +26496,6 @@ "xpack.monitoring.updateLicenseButtonLabel": "ライセンスを更新", "xpack.monitoring.updateLicenseTitle": "ライセンスの更新", "xpack.monitoring.useAvailableLicenseDescription": "すでに新しいライセンスがある場合は、今すぐアップロードしてください。", - "xpack.observability.alertsTable.showingAlertsTitle": "{totalAlerts, plural, =1 {アラート} other {アラート}}", "xpack.observability.apmEnableContinuousRollupsDescription": "{betaLabel}連続ロールアップが有効な場合、UIは適切な解像度でメトリックを選択します。より大きな時間範囲では、より低い解像度の測定基準が使用され、読み込み時間が改善されます。", "xpack.observability.apmEnableServiceMetricsDescription": "{betaLabel}サービストランザクションメトリックの使用を有効にします。これは、サービスインベントリなどの特定のビューで使用できる低カーディナリティのメトリックで、読み込み時間を短縮します。", "xpack.observability.apmProgressiveLoadingDescription": "{technicalPreviewLabel} APMビューでデータのプログレッシブ読み込みを行うかどうか。サンプリングされていないデータをバックグラウンドで読み込みながら、最初は低いサンプリングレート、低い精度、高速の応答時間でデータを要求できます", @@ -26588,14 +26564,9 @@ "xpack.observability.alertsFlyout.viewRulesDetailsLinkText": "ルール詳細を表示", "xpack.observability.alertsLinkTitle": "アラート", "xpack.observability.alertsSummaryWidget.last30days": "過去30日間", - "xpack.observability.alertsTable.actionsTextLabel": "アクション", - "xpack.observability.alertsTable.footerTextLabel": "アラート", - "xpack.observability.alertsTable.loadingTextLabel": "アラートを読み込んでいます", "xpack.observability.alertsTable.moreActionsTextLabel": "さらにアクションを表示", "xpack.observability.alertsTable.notEnoughPermissions": "追加の権限が必要です", "xpack.observability.alertsTable.viewAlertDetailsButtonText": "アラート詳細を表示", - "xpack.observability.alertsTable.viewAlertDetailsPageButtonText": "アラートページを表示", - "xpack.observability.alertsTable.viewDetailsTextLabel": "詳細を表示", "xpack.observability.alertsTable.viewInAppTextLabel": "アプリで表示", "xpack.observability.alertsTable.viewRuleDetailsButtonText": "ルール詳細を表示", "xpack.observability.alertsTGrid.durationColumnDescription": "期間", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 2056fe2b0367fb..67eeadacbab18b 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -11060,7 +11060,6 @@ "xpack.crossClusterReplication.unfollowLeaderIndex.confirmModal.multipleUnfollowDescription": "Follower 索引将转换为标准索引。它们不再显示在跨集群复制中,但您可以在“索引管理”中管理它们。此操作无法撤消。", "xpack.crossClusterReplication.unfollowLeaderIndex.confirmModal.singleUnfollowDescription": "Follower 索引将转换为标准索引。它不再显示在跨集群复制中,但您可以在“索引管理”中管理它。此操作无法撤消。", "xpack.crossClusterReplication.unfollowLeaderIndex.confirmModal.unfollowSingleTitle": "取消跟随“{name}”的 Leader 索引?", - "xpack.csp.awsIntegration.setupInfoContent": "此集成需要某些只读 AWS 权限才能检测安全配置错误。选择提供此集成将使用的 AWS 凭据的首选方法。您可以访问这些 {stepByStepInstructionsLink} 以生成必要的凭据。", "xpack.csp.benchmarks.benchmarkEmptyState.integrationsNotFoundForNameTitle": " 对于“{name}”", "xpack.csp.benchmarks.benchmarksTable.errorRenderer.errorDescription": "{error} {statusCode}: {body}", "xpack.csp.benchmarks.totalIntegrationsCountMessage": "正在显示 {pageCount} 个,共 {totalCount, plural, other {# 个集成}} 个", @@ -11097,7 +11096,6 @@ "xpack.csp.awsIntegration.roleArnLabel": "角色 ARN", "xpack.csp.awsIntegration.secretAccessKeyLabel": "机密访问密钥", "xpack.csp.awsIntegration.sessionTokenLabel": "会话令牌", - "xpack.csp.awsIntegration.setupInfoContentLink": "分步说明", "xpack.csp.awsIntegration.setupInfoContentTitle": "设置访问权限", "xpack.csp.awsIntegration.sharedCredentialFileLabel": "共享凭据文件", "xpack.csp.awsIntegration.sharedCredentialLabel": "共享凭据", @@ -14380,36 +14378,19 @@ "xpack.enterpriseSearch.workplaceSearch.integrations.azureBlobDescription": "使用 Enterprise Search 在 Azure Blob 存储上搜索您的内容。", "xpack.enterpriseSearch.workplaceSearch.integrations.boxDescription": "通过 Workplace Search 搜索存储在 Box 上的文件和文件夹。", "xpack.enterpriseSearch.workplaceSearch.integrations.boxName": "Box", - "xpack.enterpriseSearch.workplaceSearch.integrations.confluenceCloudDescription": "通过 Workplace Search 搜索 Confluence Cloud 上的组织内容。", - "xpack.enterpriseSearch.workplaceSearch.integrations.confluenceCloudName": "Confluence Cloud", - "xpack.enterpriseSearch.workplaceSearch.integrations.confluenceServerDescription": "通过 Workplace Search 搜索 Confluence Server 上的组织内容。", - "xpack.enterpriseSearch.workplaceSearch.integrations.confluenceServerName": "Confluence Server", - "xpack.enterpriseSearch.workplaceSearch.integrations.dropboxDescription": "通过 Workplace Search 搜索存储在 Dropbox 上的文件和文件夹。", - "xpack.enterpriseSearch.workplaceSearch.integrations.dropboxName": "Dropbox", - "xpack.enterpriseSearch.workplaceSearch.integrations.githubDescription": "通过 Workplace Search 搜索 GitHub 上的项目和存储库。", - "xpack.enterpriseSearch.workplaceSearch.integrations.githubEnterpriseServerDescription": "通过 Workplace Search 搜索 GitHub Enterprise Server 上的项目和存储库。", - "xpack.enterpriseSearch.workplaceSearch.integrations.githubEnterpriseServerName": "GitHub Enterprise Server", - "xpack.enterpriseSearch.workplaceSearch.integrations.githubName": "GitHub", "xpack.enterpriseSearch.workplaceSearch.integrations.gmailDescription": "通过 Workplace Search 搜索由 Gmail 管理的电子邮件。", "xpack.enterpriseSearch.workplaceSearch.integrations.gmailName": "Gmail", "xpack.enterpriseSearch.workplaceSearch.integrations.googleCloud": "Google Cloud Storage", "xpack.enterpriseSearch.workplaceSearch.integrations.googleCloudDescription": "使用 Enterprise Search 在 Google Cloud Storage 上搜索您的内容。", "xpack.enterpriseSearch.workplaceSearch.integrations.googleDriveDescription": "通过 Workplace Search 搜索 Google 云端硬盘上的文档。", "xpack.enterpriseSearch.workplaceSearch.integrations.googleDriveName": "Google 云端硬盘", - "xpack.enterpriseSearch.workplaceSearch.integrations.jiraCloudDescription": "通过 Workplace Search 搜索 Jira Cloud 上的项目工作流。", - "xpack.enterpriseSearch.workplaceSearch.integrations.jiraCloudName": "Jira Cloud", - "xpack.enterpriseSearch.workplaceSearch.integrations.jiraServerDescription": "通过 Workplace Search 搜索 Jira Server 上的项目工作流。", - "xpack.enterpriseSearch.workplaceSearch.integrations.jiraServerName": "Jira Server", "xpack.enterpriseSearch.workplaceSearch.integrations.mongoDBDescription": "使用 Enterprise Search 搜索您的 MongoDB 内容。", "xpack.enterpriseSearch.workplaceSearch.integrations.mongoDBName": "MongoDB", "xpack.enterpriseSearch.workplaceSearch.integrations.msSqlDescription": "使用 Enterprise Search 在 Microsoft SQL Server 上搜索您的内容。", "xpack.enterpriseSearch.workplaceSearch.integrations.msSqlName": "Microsoft SQL", "xpack.enterpriseSearch.workplaceSearch.integrations.mysqlDescription": "使用 Enterprise Search 搜索您的 MySQL 内容。", "xpack.enterpriseSearch.workplaceSearch.integrations.mysqlName": "MySQL", - "xpack.enterpriseSearch.workplaceSearch.integrations.nativeConnectorDescription": "使用本机 Enterprise Search 连接器搜索您的数据源。", - "xpack.enterpriseSearch.workplaceSearch.integrations.nativeConnectorName": "使用连接器", "xpack.enterpriseSearch.workplaceSearch.integrations.netowkrDriveDescription": "使用 Enterprise Search 搜索您的网络驱动器内容。", - "xpack.enterpriseSearch.workplaceSearch.integrations.networkDriveDescription": "通过 Workplace Search 搜索您存储在网络驱动器上的文件和文件夹。", "xpack.enterpriseSearch.workplaceSearch.integrations.networkDriveName": "网络驱动器", "xpack.enterpriseSearch.workplaceSearch.integrations.onedriveDescription": "通过 Workplace Search 搜索存储在 OneDrive 上的文件。", "xpack.enterpriseSearch.workplaceSearch.integrations.onedriveName": "OneDrive", @@ -14423,8 +14404,6 @@ "xpack.enterpriseSearch.workplaceSearch.integrations.salesforceName": "Salesforce", "xpack.enterpriseSearch.workplaceSearch.integrations.salesforceSandboxDescription": "通过 Workplace Search 搜索 Salesforce Sandbox 上的内容。", "xpack.enterpriseSearch.workplaceSearch.integrations.salesforceSandboxName": "Salesforce Sandbox", - "xpack.enterpriseSearch.workplaceSearch.integrations.servicenowDescription": "通过 Workplace Search 搜索 ServiceNow 上的内容。", - "xpack.enterpriseSearch.workplaceSearch.integrations.servicenowName": "ServiceNow", "xpack.enterpriseSearch.workplaceSearch.integrations.sharepointOnlineDescription": "通过 Workplace Search 搜索存储在 SharePoint Online 上的文件。", "xpack.enterpriseSearch.workplaceSearch.integrations.sharepointOnlineName": "Sharepoint", "xpack.enterpriseSearch.workplaceSearch.integrations.sharepointServerDescription": "通过 Workplace Search 搜索存储在 Microsoft SharePoint Server 上的文件。", @@ -15405,10 +15384,8 @@ "xpack.fleet.agentEnrenrollmentStepAgentPolicyollment.noEnrollmentTokensForSelectedPolicyCalloutDescription": "必须创建注册令牌,才能将代理注册到此策略", "xpack.fleet.agentEnrollment.agentDescription": "将 Elastic 代理添加到您的主机,以收集数据并将其发送到 Elastic Stack。", "xpack.fleet.agentEnrollment.closeFlyoutButtonLabel": "关闭", - "xpack.fleet.agentEnrollment.cloudFormation.launchButton": "启动 CloudFormation", "xpack.fleet.agentEnrollment.cloudFormation.loadingAriaLabel": "正在加载 CloudFormation 说明", "xpack.fleet.agentEnrollment.cloudFormation.noApiKey": "找不到注册令牌", - "xpack.fleet.agentEnrollment.cloudFormation.noFleetServer": "找不到 Fleet 服务器主机", "xpack.fleet.agentEnrollment.confirmation.button": "查看注册的代理", "xpack.fleet.agentEnrollment.copyPolicyButton": "复制到剪贴板", "xpack.fleet.agentEnrollment.downloadDescriptionForK8s": "复制或下载 Kubernetes 清单。", @@ -26517,7 +26494,6 @@ "xpack.monitoring.updateLicenseButtonLabel": "更新许可证", "xpack.monitoring.updateLicenseTitle": "更新您的许可证", "xpack.monitoring.useAvailableLicenseDescription": "如果您已经持有新的许可证,请立即上传。", - "xpack.observability.alertsTable.showingAlertsTitle": "{totalAlerts, plural, =1 {告警} other {告警}}", "xpack.observability.apmEnableContinuousRollupsDescription": "{betaLabel} 启用连续汇总/打包时,UI 将以适当分辨率选择指标。在更大时间范围内,将使用分辨率较低的指标,这会缩短加载时间。", "xpack.observability.apmEnableServiceMetricsDescription": "{betaLabel} 启用服务事务指标,这种是低基数指标,可供某些视图(如服务库存)使用来加快加载速度。", "xpack.observability.apmProgressiveLoadingDescription": "{technicalPreviewLabel} 是否以渐进方式为 APM 视图加载数据。可以先以较低的采样速率请求数据,这样的准确性较低,但响应时间更快,同时在后台加载未采样数据", @@ -26586,14 +26562,9 @@ "xpack.observability.alertsFlyout.viewRulesDetailsLinkText": "查看规则详情", "xpack.observability.alertsLinkTitle": "告警", "xpack.observability.alertsSummaryWidget.last30days": "过去 30 天", - "xpack.observability.alertsTable.actionsTextLabel": "操作", - "xpack.observability.alertsTable.footerTextLabel": "告警", - "xpack.observability.alertsTable.loadingTextLabel": "正在加载告警", "xpack.observability.alertsTable.moreActionsTextLabel": "更多操作", "xpack.observability.alertsTable.notEnoughPermissions": "需要其他权限", "xpack.observability.alertsTable.viewAlertDetailsButtonText": "查看告警详情", - "xpack.observability.alertsTable.viewAlertDetailsPageButtonText": "查看告警页面", - "xpack.observability.alertsTable.viewDetailsTextLabel": "查看详情", "xpack.observability.alertsTable.viewInAppTextLabel": "在应用中查看", "xpack.observability.alertsTable.viewRuleDetailsButtonText": "查看规则详情", "xpack.observability.alertsTGrid.durationColumnDescription": "持续时间", diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_summary_widget/components/alert_summary_widget_compact.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_summary_widget/components/alert_summary_widget_compact.tsx index fe0ddc64526a4e..c8b62e36f5884f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_summary_widget/components/alert_summary_widget_compact.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_summary_widget/components/alert_summary_widget_compact.tsx @@ -7,7 +7,17 @@ import React, { MouseEvent } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui'; -import { Axis, Chart, CurveType, LineSeries, Position, ScaleType, Settings } from '@elastic/charts'; +import { + Axis, + Chart, + CurveType, + LineSeries, + Position, + ScaleType, + Settings, + TooltipType, + Tooltip, +} from '@elastic/charts'; import { EUI_SPARKLINE_THEME_PARTIAL } from '@elastic/eui/dist/eui_charts_theme'; import { AlertStatus } from '@kbn/rule-data-utils'; import { AlertCounts } from './alert_counts'; @@ -87,8 +97,16 @@ export const AlertSummaryWidgetCompact = ({ - - + + + + + moment(tooltip.value).format(dateFormat || TOOLTIP_DATE_FORMAT) + } + /> - moment(tooltip.value).format(dateFormat || TOOLTIP_DATE_FORMAT), - }} onBrushEnd={onBrushEnd} /> - - + +
-
-
-
+ class="echChartContent" + > +
+
+
+
+
-
-
-
+ class="echChartContent" + > +
+
+
+
+
-
-
-
+ class="echChartContent" + > +
+
+
+
+
`; diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/common/charts/duration_line_bar_list.tsx b/x-pack/plugins/uptime/public/legacy_uptime/components/common/charts/duration_line_bar_list.tsx index 29a5a817797d99..114ad9de4abe78 100644 --- a/x-pack/plugins/uptime/public/legacy_uptime/components/common/charts/duration_line_bar_list.tsx +++ b/x-pack/plugins/uptime/public/legacy_uptime/components/common/charts/duration_line_bar_list.tsx @@ -81,7 +81,7 @@ export const DurationAnomaliesBar = ({ anomalies, hiddenLegends }: Props) => { key={keyIndex} id={keyIndex} style={getRectStyle(rectAnnotation.color)} - renderTooltip={TooltipFormatter} + customTooltipDetails={TooltipFormatter} /> ) : null; })} diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_bar_chart.tsx b/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_bar_chart.tsx index 0c5b8b34e2afdf..1bda78cfb1bf9d 100644 --- a/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_bar_chart.tsx +++ b/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_bar_chart.tsx @@ -17,7 +17,8 @@ import { Settings, TickFormatter, TooltipContainer, - CustomTooltip, + CustomTooltip as CustomChartTooltip, + Tooltip, } from '@elastic/charts'; import { BAR_HEIGHT } from './constants'; import { useChartTheme } from '../../../../../hooks/use_chart_theme'; @@ -34,7 +35,7 @@ const getChartHeight = (data: WaterfallData): number => { return noOfXBars * BAR_HEIGHT; }; -const Tooltip: CustomTooltip = (tooltipInfo) => { +const CustomTooltip: CustomChartTooltip = (tooltipInfo) => { const { data, sidebarItems } = useWaterfallContext(); return useMemo(() => { const sidebarItem = sidebarItems?.find((item) => item.index === tooltipInfo.header?.value); @@ -86,15 +87,15 @@ export const WaterfallBarChart = ({ data-test-subj="wfDataOnlyBarChart" > + - + + { + // FLAKY: https://github.com/elastic/kibana/issues/140973 + describe.skip('telemetry', () => { const alwaysFiringRuleId: { [key: string]: string } = {}; beforeEach(async () => { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/index.ts index 915bac5b26899f..829de0e1c6e715 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/index.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/index.ts @@ -11,7 +11,8 @@ import { setupSpacesAndUsers, tearDown } from '../../../setup'; // eslint-disable-next-line import/no-default-export export default function telemetryTests({ loadTestFile, getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); - describe('Alerting and Actions Telemetry', () => { + // FLAKY: https://github.com/elastic/kibana/issues/136153 + describe.skip('Alerting and Actions Telemetry', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/event_log_telemetry'); // reset the state in the telemetry task diff --git a/x-pack/test/api_integration/apis/cloud_security_posture/status.ts b/x-pack/test/api_integration/apis/cloud_security_posture/status.ts index 642e84ed2e3639..e1f305c4f193dd 100644 --- a/x-pack/test/api_integration/apis/cloud_security_posture/status.ts +++ b/x-pack/test/api_integration/apis/cloud_security_posture/status.ts @@ -14,7 +14,8 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('GET /internal/cloud_security_posture/status', () => { + // FLAKY: https://github.com/elastic/kibana/issues/159554 + describe.skip('GET /internal/cloud_security_posture/status', () => { let agentPolicyId: string; beforeEach(async () => { diff --git a/x-pack/test/api_integration/apis/kibana/stats/stats.js b/x-pack/test/api_integration/apis/kibana/stats/stats.js index e1f02979ca7ca6..dd6432bcd0a613 100644 --- a/x-pack/test/api_integration/apis/kibana/stats/stats.js +++ b/x-pack/test/api_integration/apis/kibana/stats/stats.js @@ -30,8 +30,9 @@ export default function ({ getService }) { expect(isUUID(body.kibana.uuid)).to.be.ok(); }); - it('should return 401 for extended', async () => { - await supertestNoAuth.get('/api/stats?extended').auth(null, null).expect(401); + it('should return 200 for extended', async () => { + const { body } = await supertestNoAuth.get('/api/stats').expect(200); + expect(isUUID(body.kibana.uuid)).to.be.ok(); }); }); diff --git a/x-pack/test/api_integration/apis/stats/config.ts b/x-pack/test/api_integration/apis/stats/config.ts new file mode 100644 index 00000000000000..0b0f4b106a0e44 --- /dev/null +++ b/x-pack/test/api_integration/apis/stats/config.ts @@ -0,0 +1,24 @@ +/* + * 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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const baseIntegrationTestsConfig = await readConfigFile(require.resolve('../../config.ts')); + + return { + ...baseIntegrationTestsConfig.getAll(), + kbnTestServer: { + ...baseIntegrationTestsConfig.get('kbnTestServer'), + serverArgs: [ + ...baseIntegrationTestsConfig.get('kbnTestServer.serverArgs'), + '--status.allowAnonymous=true', + ], + }, + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/api_integration/apis/stats/index.ts b/x-pack/test/api_integration/apis/stats/index.ts new file mode 100644 index 00000000000000..b786b51255a3f5 --- /dev/null +++ b/x-pack/test/api_integration/apis/stats/index.ts @@ -0,0 +1,14 @@ +/* + * 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 { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('Stats API', () => { + loadTestFile(require.resolve('./stats')); + }); +} diff --git a/x-pack/test/api_integration/apis/stats/stats.ts b/x-pack/test/api_integration/apis/stats/stats.ts new file mode 100644 index 00000000000000..846943e54160e8 --- /dev/null +++ b/x-pack/test/api_integration/apis/stats/stats.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 expect from '@kbn/expect'; + +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const supertestWithoutAuth = getService('supertestWithoutAuth'); + + describe('GET /api/stats', () => { + describe('When status.allowAnonymous is true', () => { + describe('when requesting extended stats', () => { + it('returns extended stats payload for authenticated requests', async () => { + const { body } = await supertest + .get('/api/stats?extended=true') + .set('kbn-xsrf', 'kibana') + .expect(200); + + expect(body.cluster_uuid).to.be.a('string'); + expect(body.usage).to.be.an('object'); + }); + it('returns extended stats payload for unauthenticated requests', async () => { + const { body } = await supertestWithoutAuth + .get('/api/stats?extended=true') + .set('kbn-xsrf', 'kibana') + .expect(200); + + expect(body.cluster_uuid).to.be.a('string'); + expect(body.usage).to.be.an('object'); + }); + }); + }); + }); +} diff --git a/x-pack/test/apm_api_integration/tests/diagnostics/apm_events.spec.ts b/x-pack/test/apm_api_integration/tests/diagnostics/apm_events.spec.ts new file mode 100644 index 00000000000000..b09a37416024ff --- /dev/null +++ b/x-pack/test/apm_api_integration/tests/diagnostics/apm_events.spec.ts @@ -0,0 +1,131 @@ +/* + * 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 { apm, timerange } from '@kbn/apm-synthtrace-client'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +export default function ApiTest({ getService }: FtrProviderContext) { + const registry = getService('registry'); + const apmApiClient = getService('apmApiClient'); + const es = getService('es'); + const synthtraceEsClient = getService('synthtraceEsClient'); + + const start = new Date('2021-01-01T00:00:00.000Z').getTime(); + const end = new Date('2021-01-01T00:15:00.000Z').getTime() - 1; + + registry.when('Diagnostics: APM Events', { config: 'basic', archives: [] }, () => { + describe('When there is no data', () => { + before(async () => { + // delete APM data streams + await es.indices.deleteDataStream({ name: '*apm*' }); + }); + + it('returns zero data streams`', async () => { + const { status, body } = await apmApiClient.adminUser({ + endpoint: 'GET /internal/apm/diagnostics', + }); + expect(status).to.be(200); + expect(body.apmEvents.every(({ docCount }) => docCount === 0)).to.be(true); + }); + }); + + describe('When data is ingested', () => { + before(async () => { + const instance = apm + .service({ name: 'synth-go', environment: 'production', agentName: 'go' }) + .instance('instance-a'); + + await synthtraceEsClient.index( + timerange(start, end) + .interval('1m') + .rate(30) + .generator((timestamp) => + instance + .transaction({ transactionName: 'GET /users' }) + .timestamp(timestamp) + .duration(100) + .success() + ) + ); + }); + + after(() => synthtraceEsClient.clean()); + + it('returns zero doc_counts when no time range is specified', async () => { + const { body } = await apmApiClient.adminUser({ + endpoint: 'GET /internal/apm/diagnostics', + }); + + expect(body.apmEvents.every(({ docCount }) => docCount === 0)).to.be(true); + }); + + it('returns non-zero doc_counts when time range is specified', async () => { + const { body } = await apmApiClient.adminUser({ + endpoint: 'GET /internal/apm/diagnostics', + params: { + query: { start: new Date(start).toISOString(), end: new Date(end).toISOString() }, + }, + }); + + expect(body.apmEvents.every(({ docCount }) => docCount === 0)).to.be(false); + expect( + body.apmEvents + .filter(({ docCount }) => docCount > 0) + .map(({ kuery, docCount }) => ({ kuery, docCount })) + ).to.eql([ + { + kuery: + 'processor.event: "metric" AND metricset.name: "service_transaction" AND transaction.duration.summary :* ', + docCount: 21, + }, + { + kuery: + 'processor.event: "metric" AND metricset.name: "transaction" AND transaction.duration.summary :* ', + docCount: 21, + }, + { kuery: 'processor.event: "metric" AND metricset.name: "span_breakdown"', docCount: 15 }, + { + kuery: 'processor.event: "metric" AND metricset.name: "service_summary"', + docCount: 21, + }, + { kuery: 'processor.event: "transaction"', docCount: 450 }, + ]); + }); + + it('returns zero doc_counts when filtering by a non-existing service', async () => { + const { body } = await apmApiClient.adminUser({ + endpoint: 'GET /internal/apm/diagnostics', + params: { + query: { + start: new Date(start).toISOString(), + end: new Date(end).toISOString(), + kuery: 'service.name: "foo"', + }, + }, + }); + + expect(body.apmEvents.every(({ docCount }) => docCount === 0)).to.be(true); + }); + + it('returns non-zero doc_counts when filtering by an existing service', async () => { + const { body } = await apmApiClient.adminUser({ + endpoint: 'GET /internal/apm/diagnostics', + params: { + query: { + start: new Date(start).toISOString(), + end: new Date(end).toISOString(), + kuery: 'service.name: "synth-go"', + }, + }, + }); + + expect(body.apmEvents.every(({ docCount }) => docCount === 0)).to.be(false); + }); + }); + }); +} diff --git a/x-pack/test/apm_api_integration/tests/service_groups/service_group_with_overflow/es_utils.ts b/x-pack/test/apm_api_integration/tests/service_groups/service_group_with_overflow/es_utils.ts new file mode 100644 index 00000000000000..03a0def567957d --- /dev/null +++ b/x-pack/test/apm_api_integration/tests/service_groups/service_group_with_overflow/es_utils.ts @@ -0,0 +1,51 @@ +/* + * 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 function createServiceTransactionMetricsDocs({ + time, + service, + agentName, + overflowCount, +}: { + time: number; + service: { + name: string; + environment?: string; + language?: string; + }; + agentName?: string; + overflowCount?: number; +}) { + return { + processor: { + event: 'metric' as const, + }, + '@timestamp': new Date(time).toISOString(), + ...(agentName && { + agent: { + name: agentName, + }, + }), + event: { + ingested: new Date(time).toISOString(), + }, + metricset: { + name: 'service_transaction', + }, + service, + ...(overflowCount && { + service_transaction: { + aggregation: { + overflow_count: overflowCount, + }, + }, + }), + observer: { + version: '8.9.0', + }, + }; +} diff --git a/x-pack/test/apm_api_integration/tests/service_groups/service_group_with_overflow/generate_data.ts b/x-pack/test/apm_api_integration/tests/service_groups/service_group_with_overflow/generate_data.ts new file mode 100644 index 00000000000000..e688e6ac6836a4 --- /dev/null +++ b/x-pack/test/apm_api_integration/tests/service_groups/service_group_with_overflow/generate_data.ts @@ -0,0 +1,57 @@ +/* + * 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 { apm, timerange } from '@kbn/apm-synthtrace-client'; +import type { ApmSynthtraceEsClient } from '@kbn/apm-synthtrace'; + +export async function generateData({ + synthtraceEsClient, + start, + end, +}: { + synthtraceEsClient: ApmSynthtraceEsClient; + start: string; + end: string; +}) { + const synthServices = [ + apm + .service({ name: 'synth-go', environment: 'testing', agentName: 'go' }) + .instance('instance-1'), + apm + .service({ name: 'synth-java', environment: 'testing', agentName: 'java' }) + .instance('instance-2'), + ]; + + await synthtraceEsClient.index( + synthServices.map((service) => + timerange(start, end) + .interval('5m') + .rate(1) + .generator((timestamp) => + service + .transaction({ + transactionName: 'GET /api/product/list', + transactionType: 'request', + }) + .duration(2000) + .timestamp(timestamp) + .children( + service + .span({ + spanName: '/_search', + spanType: 'db', + spanSubtype: 'elasticsearch', + }) + .destination('elasticsearch') + .duration(100) + .success() + .timestamp(timestamp) + ) + .errors(service.error({ message: 'error 1', type: 'foo' }).timestamp(timestamp)) + ) + ) + ); +} diff --git a/x-pack/test/apm_api_integration/tests/service_groups/service_group_with_overflow/service_group_with_overflow.spec.ts b/x-pack/test/apm_api_integration/tests/service_groups/service_group_with_overflow/service_group_with_overflow.spec.ts new file mode 100644 index 00000000000000..dba8a21521a89a --- /dev/null +++ b/x-pack/test/apm_api_integration/tests/service_groups/service_group_with_overflow/service_group_with_overflow.spec.ts @@ -0,0 +1,104 @@ +/* + * 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 { ValuesType } from 'utility-types'; +import { ENVIRONMENT_ALL } from '@kbn/apm-plugin/common/environment_filter_values'; +import { ApmDocumentType } from '@kbn/apm-plugin/common/document_type'; +import { RollupInterval } from '@kbn/apm-plugin/common/rollup'; +import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { createServiceGroupApi, deleteAllServiceGroups } from '../service_groups_api_methods'; +import { createServiceTransactionMetricsDocs } from './es_utils'; +import { generateData } from './generate_data'; + +export default function ApiTest({ getService }: FtrProviderContext) { + const registry = getService('registry'); + const apmApiClient = getService('apmApiClient'); + const es = getService('es'); + const synthtraceEsClient = getService('synthtraceEsClient'); + + registry.when( + 'Display overflow bucket in Service Groups', + { config: 'basic', archives: [] }, + () => { + const indexName = 'metrics-apm.service_transaction.1m-default'; + const start = '2023-06-21T06:50:15.910Z'; + const end = '2023-06-21T06:59:15.910Z'; + const startTime = new Date(start).getTime() + 1000; + const OVERFLOW_SERVICE_NAME = '_other'; + let serviceGroupId: string; + + after(async () => { + await deleteAllServiceGroups(apmApiClient); + synthtraceEsClient.clean(); + }); + + before(async () => { + await generateData({ start, end, synthtraceEsClient }); + + const docs = [ + createServiceTransactionMetricsDocs({ + time: startTime, + service: { + name: OVERFLOW_SERVICE_NAME, + }, + overflowCount: 13, + }), + ]; + + const bulkActions = docs.reduce( + (prev, doc) => { + return [...prev, { create: { _index: indexName } }, doc]; + }, + [] as Array< + | { + create: { + _index: string; + }; + } + | ValuesType + > + ); + + await es.bulk({ + body: bulkActions, + refresh: 'wait_for', + }); + + const serviceGroup = { + groupName: 'overflowGroup', + kuery: 'service.name: synth-go or service.name: synth-java', + }; + const createResponse = await createServiceGroupApi({ apmApiClient, ...serviceGroup }); + expect(createResponse.status).to.be(200); + serviceGroupId = createResponse.body.id; + }); + + it('get the overflow bucket even though its not added explicitly in the Service Group', async () => { + const response = await apmApiClient.readUser({ + endpoint: `GET /internal/apm/services`, + params: { + query: { + start, + end, + environment: ENVIRONMENT_ALL.value, + kuery: '', + serviceGroup: serviceGroupId, + probability: 1, + documentType: ApmDocumentType.ServiceTransactionMetric, + rollupInterval: RollupInterval.OneMinute, + }, + }, + }); + + const overflowBucket = response.body.items.find( + (service) => service.serviceName === OVERFLOW_SERVICE_NAME + ); + expect(overflowBucket?.serviceName).to.equal(OVERFLOW_SERVICE_NAME); + }); + } + ); +} diff --git a/x-pack/test/fleet_api_integration/apis/epm/install_by_upload.ts b/x-pack/test/fleet_api_integration/apis/epm/install_by_upload.ts index 65103398f8ab4e..c34413aaae2c2c 100644 --- a/x-pack/test/fleet_api_integration/apis/epm/install_by_upload.ts +++ b/x-pack/test/fleet_api_integration/apis/epm/install_by_upload.ts @@ -194,7 +194,7 @@ export default function (providerContext: FtrProviderContext) { .send(buf) .expect(400); expect(res.error.text).to.equal( - '{"statusCode":400,"error":"Bad Request","message":"Package contains more than one top-level directory."}' + '{"statusCode":400,"error":"Bad Request","message":"Package contains more than one top-level directory; top-level directory found: apache-0.1.4; filePath: apache-0.1.3/manifest.yml"}' ); }); @@ -207,7 +207,7 @@ export default function (providerContext: FtrProviderContext) { .send(buf) .expect(400); expect(res.error.text).to.equal( - '{"statusCode":400,"error":"Bad Request","message":"Package must contain a top-level manifest.yml file."}' + '{"statusCode":400,"error":"Bad Request","message":"Package at top-level directory apache-0.1.4 must contain a top-level manifest.yml file."}' ); }); @@ -220,7 +220,7 @@ export default function (providerContext: FtrProviderContext) { .send(buf) .expect(400); expect(res.error.text).to.equal( - '{"statusCode":400,"error":"Bad Request","message":"Could not parse top-level package manifest: YAMLException: bad indentation of a mapping entry at line 2, column 7:\\n name: apache\\n ^."}' + '{"statusCode":400,"error":"Bad Request","message":"Could not parse top-level package manifest at top-level directory apache-0.1.4: YAMLException: bad indentation of a mapping entry at line 2, column 7:\\n name: apache\\n ^."}' ); }); @@ -233,7 +233,7 @@ export default function (providerContext: FtrProviderContext) { .send(buf) .expect(400); expect(res.error.text).to.equal( - '{"statusCode":400,"error":"Bad Request","message":"Invalid top-level package manifest: one or more fields missing of name, version, description, title, format_version, owner"}' + '{"statusCode":400,"error":"Bad Request","message":"Invalid top-level package manifest at top-level directory apache-0.1.4 (package name: apache): one or more fields missing of name, version, description, title, format_version, owner."}' ); }); diff --git a/x-pack/test/functional/apps/infra/home_page.ts b/x-pack/test/functional/apps/infra/home_page.ts index ed5bfc1f75aa8b..c59e048ecb6fc9 100644 --- a/x-pack/test/functional/apps/infra/home_page.ts +++ b/x-pack/test/functional/apps/infra/home_page.ts @@ -192,8 +192,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/157711 - describe.skip('alerts flyouts', () => { + describe('alerts flyouts', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs'); await pageObjects.common.navigateToApp('infraOps'); @@ -219,12 +218,13 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await pageObjects.infraHome.clickAlertsAndRules(); await pageObjects.infraHome.ensurePopoverOpened(); await pageObjects.infraHome.clickAlertsAndRules(); - await pageObjects.infraHome.ensurePopoverClosed(); + await retry.try(async () => { + await pageObjects.infraHome.ensurePopoverClosed(); + }); }); }); - // FLAKY: https://github.com/elastic/kibana/issues/157740 - describe.skip('Saved Views', () => { + describe('Saved Views', () => { before(async () => { esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs'); await pageObjects.common.navigateToApp('infraOps'); diff --git a/x-pack/test/functional/apps/infra/metrics_explorer.ts b/x-pack/test/functional/apps/infra/metrics_explorer.ts index 0c42e6e2cad9d0..47f5c9785d3935 100644 --- a/x-pack/test/functional/apps/infra/metrics_explorer.ts +++ b/x-pack/test/functional/apps/infra/metrics_explorer.ts @@ -132,7 +132,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await pageObjects.infraSavedViews.ensureViewIsLoaded('view1'); }); - it('should laod a clicked view from the manage views section', async () => { + it('should load a clicked view from the manage views section', async () => { const views = await pageObjects.infraSavedViews.getManageViewsEntries(); await views[0].click(); await pageObjects.infraSavedViews.ensureViewIsLoaded('Default view'); diff --git a/x-pack/test/functional/apps/ml/short_tests/model_management/model_list.ts b/x-pack/test/functional/apps/ml/short_tests/model_management/model_list.ts index 90ac399d81cd52..de917a0b888d2e 100644 --- a/x-pack/test/functional/apps/ml/short_tests/model_management/model_list.ts +++ b/x-pack/test/functional/apps/ml/short_tests/model_management/model_list.ts @@ -17,21 +17,6 @@ export default function ({ getService }: FtrProviderContext) { })); describe('trained models', function () { - before(async () => { - for (const model of trainedModels) { - await ml.api.importTrainedModel(model.id, model.name); - } - - await ml.api.createTestTrainedModels('classification', 15, true); - await ml.api.createTestTrainedModels('regression', 15); - }); - - after(async () => { - await ml.api.stopAllTrainedModelDeploymentsES(); - await ml.api.deleteAllTrainedModelsES(); - await ml.api.cleanMlIndices(); - }); - // 'Created at' will be different on each run, // so we will just assert that the value is in the expected timestamp format. const builtInModelData = { @@ -52,6 +37,24 @@ export default function ({ getService }: FtrProviderContext) { modelTypes: ['regression', 'tree_ensemble'], }; + before(async () => { + for (const model of trainedModels) { + await ml.api.importTrainedModel(model.id, model.name); + } + + await ml.api.createTestTrainedModels('classification', 15, true); + await ml.api.createTestTrainedModels('regression', 15); + + // Make sure the .ml-stats index is created in advance, see https://github.com/elastic/elasticsearch/issues/65846 + await ml.api.assureMlStatsIndexExists(); + }); + + after(async () => { + await ml.api.stopAllTrainedModelDeploymentsES(); + await ml.api.deleteAllTrainedModelsES(); + await ml.api.cleanMlIndices(); + }); + describe('for ML user with read-only access', () => { before(async () => { await ml.securityUI.loginAsMlViewer(); @@ -74,8 +77,7 @@ export default function ({ getService }: FtrProviderContext) { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/159283 - describe.skip('for ML power user', () => { + describe('for ML power user', () => { before(async () => { await ml.securityUI.loginAsMlPowerUser(); await ml.navigation.navigateToTrainedModels(); diff --git a/x-pack/test/functional/page_objects/infra_hosts_view.ts b/x-pack/test/functional/page_objects/infra_hosts_view.ts index 17ddd4c5db0773..ff0aefa5483691 100644 --- a/x-pack/test/functional/page_objects/infra_hosts_view.ts +++ b/x-pack/test/functional/page_objects/infra_hosts_view.ts @@ -29,11 +29,11 @@ export function InfraHostsViewProvider({ getService }: FtrProviderContext) { }, async clickSelectedHostsButton() { - return testSubjects.click('infraUseHostsTableButton'); + return testSubjects.click('hostsViewTableSelectHostsFilterButton'); }, async clickSelectedHostsAddFilterButton() { - return testSubjects.click('infraHostsTableAddFilterButton'); + return testSubjects.click('hostsViewTableAddFilterButton'); }, async clickCloseFlyoutButton() { @@ -124,7 +124,7 @@ export function InfraHostsViewProvider({ getService }: FtrProviderContext) { }, async selectedHostsButtonExist() { - return testSubjects.exists('infraUseHostsTableButton'); + return testSubjects.exists('hostsViewTableSelectHostsFilterButton'); }, async getMetricsTrendContainer() { diff --git a/x-pack/test/functional/page_objects/infra_saved_views.ts b/x-pack/test/functional/page_objects/infra_saved_views.ts index a9cdc8ffdab404..56c6e0d1354fb6 100644 --- a/x-pack/test/functional/page_objects/infra_saved_views.ts +++ b/x-pack/test/functional/page_objects/infra_saved_views.ts @@ -15,8 +15,15 @@ export function InfraSavedViewsProvider({ getService }: FtrProviderContext) { const browser = getService('browser'); return { - clickSavedViewsButton() { - return testSubjects.click('savedViews-openPopover'); + async clickSavedViewsButton() { + const button = await testSubjects.find('savedViews-openPopover'); + + await retry.waitFor('Wait for button to be enabled', async () => { + const isDisabled = Boolean(await button.getAttribute('disabled')); + return !isDisabled; + }); + + return button.click(); }, pressEsc() { return browser.pressKeys([Key.ESCAPE]); diff --git a/x-pack/test/functional/services/cases/single_case_view.ts b/x-pack/test/functional/services/cases/single_case_view.ts index c3e668557af573..961ee05a33a52c 100644 --- a/x-pack/test/functional/services/cases/single_case_view.ts +++ b/x-pack/test/functional/services/cases/single_case_view.ts @@ -58,6 +58,17 @@ export function CasesSingleViewServiceProvider({ getService, getPageObject }: Ft }); }, + async addComment(comment: string) { + const addCommentElement = await find.byCssSelector( + '[data-test-subj="add-comment"] textarea.euiMarkdownEditorTextArea' + ); + + await addCommentElement.focus(); + await addCommentElement.type(comment); + + await this.submitComment(); + }, + async addVisualizationToNewComment(visName: string) { // open saved object finder const addCommentElement = await testSubjects.find('add-comment'); diff --git a/x-pack/test/functional/services/ml/api.ts b/x-pack/test/functional/services/ml/api.ts index 6a66f05f072b48..20071a521db023 100644 --- a/x-pack/test/functional/services/ml/api.ts +++ b/x-pack/test/functional/services/ml/api.ts @@ -1497,6 +1497,31 @@ export function MachineLearningAPIProvider({ getService }: FtrProviderContext) { log.debug('> Ingest pipeline deleted'); }, + async assureMlStatsIndexExists(timeout: number = 60 * 1000) { + const params = { + index: '.ml-stats-000001', + id: 'noop_job_test_id', + body: { + type: 'analytics_memory_usage', + job_id: 'noop_job', + timestamp: 1687437633705, + peak_usage_bytes: 148148, + status: 'ok', + }, + refresh: 'wait_for', + } as const; + await es.index(params); + + await retry.waitForWithTimeout(`Stats index to exist`, timeout, async () => { + const statsIndices = await es.cat.indices({ format: 'json', index: '.ml-stats*' }); + if (statsIndices[0]?.health === 'green') { + return true; + } else { + throw new Error(`expected stats index to exist`); + } + }); + }, + async setupModule( moduleId: string, body: TypeOf, diff --git a/x-pack/test/functional/services/ml/trained_models_table.ts b/x-pack/test/functional/services/ml/trained_models_table.ts index e136d6553606f7..9ca3a63615d930 100644 --- a/x-pack/test/functional/services/ml/trained_models_table.ts +++ b/x-pack/test/functional/services/ml/trained_models_table.ts @@ -383,6 +383,7 @@ export function TrainedModelsTableProvider( await mlCommonUI.assertLastToastHeader( `Deployment for "${modelId}" has been started successfully.` ); + await this.waitForModelsToLoad(); } public async stopDeployment(modelId: string) { diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts b/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts index 35b0ba829dcf96..4203e1e848a25c 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts @@ -9,6 +9,8 @@ import expect from '@kbn/expect'; import { v4 as uuidv4 } from 'uuid'; import { CaseStatuses } from '@kbn/cases-plugin/common'; import { CaseSeverity } from '@kbn/cases-plugin/common/api'; +import { setTimeout as setTimeoutAsync } from 'timers/promises'; + import { FtrProviderContext } from '../../../ftr_provider_context'; import { createUsersAndRoles, @@ -28,6 +30,29 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { const browser = getService('browser'); describe('View case', () => { + describe('page', () => { + createOneCaseBeforeDeleteAllAfter(getPageObject, getService); + + it('should show the case view page correctly', async () => { + await testSubjects.existOrFail('case-view-title'); + await testSubjects.existOrFail('header-page-supplements'); + + await testSubjects.existOrFail('case-view-tab-title-activity'); + await testSubjects.existOrFail('case-view-tab-title-files'); + await testSubjects.existOrFail('description'); + + await testSubjects.existOrFail('case-view-activity'); + + await testSubjects.existOrFail('case-view-assignees'); + await testSubjects.existOrFail('sidebar-severity'); + await testSubjects.existOrFail('case-view-user-list-reporter'); + await testSubjects.existOrFail('case-view-user-list-participants'); + await testSubjects.existOrFail('case-view-tag-list'); + await testSubjects.existOrFail('cases-categories'); + await testSubjects.existOrFail('sidebar-connectors'); + }); + }); + describe('properties', () => { createOneCaseBeforeDeleteAllAfter(getPageObject, getService); @@ -54,6 +79,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { ); await commentArea.focus(); await commentArea.type('Test comment from automation'); + await testSubjects.click('submit-comment'); // validate user action @@ -205,144 +231,218 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { ); }); }); + }); - describe('draft comments', () => { - createOneCaseBeforeDeleteAllAfter(getPageObject, getService); + describe('draft comments', () => { + createOneCaseBeforeEachDeleteAllAfterEach(getPageObject, getService); - it('persists new comment when status is updated in dropdown', async () => { - const commentArea = await find.byCssSelector( - '[data-test-subj="add-comment"] textarea.euiMarkdownEditorTextArea' - ); - await commentArea.focus(); - await commentArea.type('Test comment from automation'); + it('persists new comment when status is updated in dropdown', async () => { + const commentArea = await find.byCssSelector( + '[data-test-subj="add-comment"] textarea.euiMarkdownEditorTextArea' + ); + await commentArea.focus(); + await commentArea.type('Test comment from automation'); - await cases.common.changeCaseStatusViaDropdownAndVerify(CaseStatuses['in-progress']); - // validate user action - await find.byCssSelector( - '[data-test-subj*="status-update-action"] [data-test-subj="case-status-badge-in-progress"]' - ); - // validates dropdown tag - await testSubjects.existOrFail( - 'case-view-status-dropdown > case-status-badge-popover-button-in-progress' - ); + await cases.common.changeCaseStatusViaDropdownAndVerify(CaseStatuses['in-progress']); + // validate user action + await find.byCssSelector( + '[data-test-subj*="status-update-action"] [data-test-subj="case-status-badge-in-progress"]' + ); + // validates dropdown tag + await testSubjects.existOrFail( + 'case-view-status-dropdown > case-status-badge-popover-button-in-progress' + ); - await testSubjects.click('submit-comment'); + await testSubjects.click('submit-comment'); - // validate user action - const newComment = await find.byCssSelector( - '[data-test-subj*="comment-create-action"] [data-test-subj="scrollable-markdown"]' - ); - expect(await newComment.getVisibleText()).equal('Test comment from automation'); - }); + // validate user action + const newComment = await find.byCssSelector( + '[data-test-subj*="comment-create-action"] [data-test-subj="scrollable-markdown"]' + ); + expect(await newComment.getVisibleText()).equal('Test comment from automation'); + }); - it('persists new comment when case is closed through the close case button', async () => { - const commentArea = await find.byCssSelector( - '[data-test-subj="add-comment"] textarea.euiMarkdownEditorTextArea' - ); - await commentArea.focus(); - await commentArea.type('Test comment from automation'); + it('persists new comment when case is closed through the close case button', async () => { + const commentArea = await find.byCssSelector( + '[data-test-subj="add-comment"] textarea.euiMarkdownEditorTextArea' + ); + await commentArea.focus(); + await commentArea.type('Test comment from automation'); - await cases.common.changeCaseStatusViaDropdownAndVerify(CaseStatuses['in-progress']); - await header.waitUntilLoadingHasFinished(); - await testSubjects.click('case-view-status-action-button'); - await header.waitUntilLoadingHasFinished(); + await cases.common.changeCaseStatusViaDropdownAndVerify(CaseStatuses['in-progress']); + await header.waitUntilLoadingHasFinished(); + await testSubjects.click('case-view-status-action-button'); + await header.waitUntilLoadingHasFinished(); - await testSubjects.existOrFail( - 'header-page-supplements > case-status-badge-popover-button-closed', - { - timeout: 5000, - } - ); + await testSubjects.existOrFail( + 'header-page-supplements > case-status-badge-popover-button-closed', + { + timeout: 5000, + } + ); - // validate user action - await find.byCssSelector( - '[data-test-subj*="status-update-action"] [data-test-subj="case-status-badge-closed"]' - ); - // validates dropdown tag - await testSubjects.existOrFail( - 'case-view-status-dropdown >case-status-badge-popover-button-closed' - ); + // validate user action + await find.byCssSelector( + '[data-test-subj*="status-update-action"] [data-test-subj="case-status-badge-closed"]' + ); + // validates dropdown tag + await testSubjects.existOrFail( + 'case-view-status-dropdown >case-status-badge-popover-button-closed' + ); - await testSubjects.click('submit-comment'); + await testSubjects.click('submit-comment'); - // validate user action - const newComment = await find.byCssSelector( - '[data-test-subj*="comment-create-action"] [data-test-subj="scrollable-markdown"]' - ); - expect(await newComment.getVisibleText()).equal('Test comment from automation'); - }); + // validate user action + const newComment = await find.byCssSelector( + '[data-test-subj*="comment-create-action"] [data-test-subj="scrollable-markdown"]' + ); + expect(await newComment.getVisibleText()).equal('Test comment from automation'); + }); - it('persists new comment to the case when user goes to case list table and comes back to the case', async () => { - const commentArea = await find.byCssSelector( - '[data-test-subj="add-comment"] textarea.euiMarkdownEditorTextArea' - ); - await commentArea.focus(); - await commentArea.type('Test comment from automation'); + it('persists new comment to the case when user goes to case list table and comes back to the case', async () => { + const comment = 'Test comment from automation'; - await testSubjects.click('backToCases'); + let commentArea = await find.byCssSelector( + '[data-test-subj="add-comment"] textarea.euiMarkdownEditorTextArea' + ); + await commentArea.focus(); + await commentArea.type(comment); - const caseLink = await find.byCssSelector('[data-test-subj="case-details-link"'); + /** + * We need to wait for some time to + * give the localStorage a change to persist + * the comment. Otherwise, the test navigates to + * fast to the cases table and the comment is not + * persisted + */ + await setTimeoutAsync(2000); - caseLink.click(); + await testSubjects.click('backToCases'); - await testSubjects.click('submit-comment'); + await cases.casesTable.waitForCasesToBeListed(); + await cases.casesTable.goToFirstListedCase(); + await header.waitUntilLoadingHasFinished(); - // validate user action - const newComment = await find.byCssSelector( - '[data-test-subj*="comment-create-action"] [data-test-subj="scrollable-markdown"]' - ); - expect(await newComment.getVisibleText()).equal('Test comment from automation'); - }); + commentArea = await find.byCssSelector( + '[data-test-subj="add-comment"] textarea.euiMarkdownEditorTextArea' + ); - it('shows unsaved comment message when page is refreshed', async () => { - await testSubjects.click('property-actions-user-action-ellipses'); + expect(await commentArea.getVisibleText()).equal(comment); - await header.waitUntilLoadingHasFinished(); + await testSubjects.click('submit-comment'); - await testSubjects.click('property-actions-user-action-pencil'); + // validate user action + const newComment = await find.byCssSelector( + '[data-test-subj*="comment-create-action"] [data-test-subj="scrollable-markdown"]' + ); - await header.waitUntilLoadingHasFinished(); + expect(await newComment.getVisibleText()).equal(comment); + }); - const editCommentTextArea = await find.byCssSelector( - '[data-test-subj*="editable-markdown-form"] textarea.euiMarkdownEditorTextArea' - ); + it('shows unsaved comment message when page is refreshed', async () => { + await cases.singleCase.addComment('my comment'); + await header.waitUntilLoadingHasFinished(); - await header.waitUntilLoadingHasFinished(); + await testSubjects.click('property-actions-user-action-ellipses'); + await header.waitUntilLoadingHasFinished(); + await testSubjects.click('property-actions-user-action-pencil'); + await header.waitUntilLoadingHasFinished(); - await editCommentTextArea.focus(); - await editCommentTextArea.type('Edited comment'); + const editCommentTextArea = await find.byCssSelector( + '[data-test-subj*="editable-markdown-form"] textarea.euiMarkdownEditorTextArea' + ); - await header.waitUntilLoadingHasFinished(); + await header.waitUntilLoadingHasFinished(); - await browser.refresh(); + await editCommentTextArea.focus(); + await editCommentTextArea.type('Edited comment'); - await header.waitUntilLoadingHasFinished(); + /** + * We need to wait for some time to + * give the localStorage a change to persist + * the comment. Otherwise, the test navigates to + * fast to the cases table and the comment is not + * persisted + */ + await setTimeoutAsync(2000); - await testSubjects.existOrFail('user-action-comment-unsaved-draft'); - }); + await header.waitUntilLoadingHasFinished(); + await browser.refresh(); - it('shows unsaved description message when page is refreshed', async () => { - await testSubjects.click('description-edit-icon'); + await header.waitUntilLoadingHasFinished(); - await header.waitUntilLoadingHasFinished(); + await testSubjects.existOrFail('user-action-comment-unsaved-draft'); + }); - const editCommentTextArea = await find.byCssSelector( - '[data-test-subj*="editable-markdown-form"] textarea.euiMarkdownEditorTextArea' - ); + it('shows unsaved description message when page is refreshed', async () => { + await testSubjects.click('description-edit-icon'); - await header.waitUntilLoadingHasFinished(); + await header.waitUntilLoadingHasFinished(); - await editCommentTextArea.focus(); - await editCommentTextArea.type('Edited description'); + const editCommentTextArea = await find.byCssSelector( + '[data-test-subj*="editable-markdown-form"] textarea.euiMarkdownEditorTextArea' + ); - await header.waitUntilLoadingHasFinished(); + await header.waitUntilLoadingHasFinished(); - await browser.refresh(); + await editCommentTextArea.focus(); + await editCommentTextArea.type('Edited description'); - await header.waitUntilLoadingHasFinished(); + /** + * We need to wait for some time to + * give the localStorage a change to persist + * the comment. Otherwise, the test navigates to + * fast to the cases table and the comment is not + * persisted + */ + await setTimeoutAsync(2000); - await testSubjects.existOrFail('description-unsaved-draft'); - }); + await header.waitUntilLoadingHasFinished(); + + await browser.refresh(); + + await header.waitUntilLoadingHasFinished(); + + await testSubjects.existOrFail('description-unsaved-draft'); + }); + + /** + * There is this bug https://github.com/elastic/kibana/issues/157280 + * where this test randomly reproduces thus making the test flaky. + * Skipping for now until we fix it. + */ + it.skip('should persist the draft of new comment while description is updated', async () => { + let commentArea = await find.byCssSelector( + '[data-test-subj="add-comment"] textarea.euiMarkdownEditorTextArea' + ); + + await commentArea.focus(); + await commentArea.type('Test comment from automation'); + + await testSubjects.click('description-edit-icon'); + + await header.waitUntilLoadingHasFinished(); + + const description = await find.byCssSelector( + '[data-test-subj*="editable-markdown-form"] textarea.euiMarkdownEditorTextArea' + ); + + await header.waitUntilLoadingHasFinished(); + + await description.focus(); + await description.type('Edited description'); + + await testSubjects.click('editable-save-markdown'); + await header.waitUntilLoadingHasFinished(); + + await browser.refresh(); + await header.waitUntilLoadingHasFinished(); + + commentArea = await find.byCssSelector( + '[data-test-subj="add-comment"] textarea.euiMarkdownEditorTextArea' + ); + + expect(await commentArea.getVisibleText()).to.be('Test comment from automation'); }); }); @@ -793,6 +893,23 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { }); }); }); + + describe('breadcrumbs', () => { + after(async () => { + await cases.api.deleteAllCases(); + }); + + it('should set the cases title', async () => { + const theCase = await createAndNavigateToCase(getPageObject, getService); + const firstBreadcrumb = await testSubjects.getVisibleText('breadcrumb first'); + const middleBreadcrumb = await testSubjects.getVisibleText('breadcrumb'); + const lastBreadcrumb = await testSubjects.getVisibleText('breadcrumb last'); + + expect(firstBreadcrumb).to.be('Management'); + expect(middleBreadcrumb).to.be('Cases'); + expect(lastBreadcrumb).to.be(theCase.title); + }); + }); }); }; @@ -811,6 +928,21 @@ const createOneCaseBeforeDeleteAllAfter = ( }); }; +const createOneCaseBeforeEachDeleteAllAfterEach = ( + getPageObject: FtrProviderContext['getPageObject'], + getService: FtrProviderContext['getService'] +) => { + const cases = getService('cases'); + + beforeEach(async () => { + await createAndNavigateToCase(getPageObject, getService); + }); + + afterEach(async () => { + await cases.api.deleteAllCases(); + }); +}; + const createAndNavigateToCase = async ( getPageObject: FtrProviderContext['getPageObject'], getService: FtrProviderContext['getService'] @@ -819,8 +951,10 @@ const createAndNavigateToCase = async ( const cases = getService('cases'); await cases.navigation.navigateToApp(); - await cases.api.createNthRandomCases(1); + const theCase = await cases.api.createCase(); await cases.casesTable.waitForCasesToBeListed(); await cases.casesTable.goToFirstListedCase(); await header.waitUntilLoadingHasFinished(); + + return theCase; }; diff --git a/x-pack/test/functional_with_es_ssl/plugins/cases/public/attachments/external_references_content.tsx b/x-pack/test/functional_with_es_ssl/plugins/cases/public/attachments/external_references_content.tsx index 84e51ce85fed44..1ed6ff2375e528 100644 --- a/x-pack/test/functional_with_es_ssl/plugins/cases/public/attachments/external_references_content.tsx +++ b/x-pack/test/functional_with_es_ssl/plugins/cases/public/attachments/external_references_content.tsx @@ -36,11 +36,11 @@ const AttachmentContent: React.FC = (props) => { yAccessors={['y']} color={['black']} /> - + Number(d).toFixed(2)} /> diff --git a/x-pack/test/security_solution_endpoint/apps/integrations/artifact_entries_list.ts b/x-pack/test/security_solution_endpoint/apps/integrations/artifact_entries_list.ts index 971ba3288366dc..d62487d4fa3839 100644 --- a/x-pack/test/security_solution_endpoint/apps/integrations/artifact_entries_list.ts +++ b/x-pack/test/security_solution_endpoint/apps/integrations/artifact_entries_list.ts @@ -51,9 +51,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { .set('kbn-xsrf', 'true'); }; - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/160166 - describe.skip('For each artifact list under management', function () { - this.timeout(150_000); + describe('For each artifact list under management', function () { + this.timeout(60_000 * 5); let indexedData: IndexedHostsAndAlertsResponse; let policyInfo: PolicyTestResourceInfo; diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_authz.ts b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_authz.ts index 2cc606a60dbbce..ef242d887496f3 100644 --- a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_authz.ts +++ b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_authz.ts @@ -93,11 +93,13 @@ export default function ({ getService }: FtrProviderContext) { method: 'post', path: ISOLATE_HOST_ROUTE_V2, body: { endpoint_ids: ['one'] }, + version: '2023-10-31', }, { method: 'post', path: UNISOLATE_HOST_ROUTE_V2, body: { endpoint_ids: ['one'] }, + version: '2023-10-31', }, ]; @@ -106,16 +108,19 @@ export default function ({ getService }: FtrProviderContext) { method: 'post', path: GET_PROCESSES_ROUTE, body: { endpoint_ids: ['one'] }, + version: '2023-10-31', }, { method: 'post', path: KILL_PROCESS_ROUTE, body: { endpoint_ids: ['one'], parameters: { entity_id: 'abc123' } }, + version: '2023-10-31', }, { method: 'post', path: SUSPEND_PROCESS_ROUTE, body: { endpoint_ids: ['one'], parameters: { entity_id: 'abc123' } }, + version: '2023-10-31', }, ]; @@ -124,6 +129,7 @@ export default function ({ getService }: FtrProviderContext) { method: 'post', path: GET_FILE_ROUTE, body: { endpoint_ids: ['one'], parameters: { path: '/opt/file/doc.txt' } }, + version: '2023-10-31', }, ]; diff --git a/yarn.lock b/yarn.lock index f5a7feb55c8bb9..34cbe4ed408802 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1469,10 +1469,10 @@ dependencies: object-hash "^1.3.0" -"@elastic/charts@57.0.1": - version "57.0.1" - resolved "https://registry.yarnpkg.com/@elastic/charts/-/charts-57.0.1.tgz#c48209f11be8984310dd366f8ead6d8c04720402" - integrity sha512-+wVSMjZIk5oAfslRKpcmpVGgT4qbf3IGtp4rQEUVTIMAJiYv6m5optVmQvg+n/JkR9/k/SVobtW1WylIKzQi9w== +"@elastic/charts@58.2.0": + version "58.2.0" + resolved "https://registry.yarnpkg.com/@elastic/charts/-/charts-58.2.0.tgz#bd2010a4081b565f539abc75938431c7590213cc" + integrity sha512-ZhW+3SHz6txVdrncSt3njTunmUwdL4JF5lSXy5NG8qrx0r4SKi3yLbLc83xAsv7T1hxbTgsfS4GgGMhWoBBiyg== dependencies: "@popperjs/core" "^2.4.0" bezier-easing "^2.1.0" @@ -2177,6 +2177,13 @@ normalize-path "^2.0.1" through2 "^2.0.3" +"@gulpjs/to-absolute-glob@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz#1fc2460d3953e1d9b9f2dfdb4bcc99da4710c021" + integrity sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA== + dependencies: + is-negated-glob "^1.0.0" + "@hapi/accept@^5.0.1", "@hapi/accept@^5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.2.tgz#ab7043b037e68b722f93f376afb05e85c0699523" @@ -9574,10 +9581,10 @@ dependencies: vfile-message "*" -"@types/vinyl-fs@*", "@types/vinyl-fs@^2.4.11": - version "2.4.11" - resolved "https://registry.yarnpkg.com/@types/vinyl-fs/-/vinyl-fs-2.4.11.tgz#b98119b8bb2494141eaf649b09fbfeb311161206" - integrity sha512-2OzQSfIr9CqqWMGqmcERE6Hnd2KY3eBVtFaulVo3sJghplUcaeMdL9ZjEiljcQQeHjheWY9RlNmumjIAvsBNaA== +"@types/vinyl-fs@*", "@types/vinyl-fs@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/vinyl-fs/-/vinyl-fs-3.0.2.tgz#cbaef5160ad7695483af0aa1b4fe67f166c18feb" + integrity sha512-ctNcmmzbMIKooXjRkyyUCOu2Z4AyqibL+RhXoF3pb7K7j+ezItnakmpm31LymkYHSIM5ey0tjIFzTvFOTSBCGw== dependencies: "@types/glob-stream" "*" "@types/node" "*" @@ -10545,10 +10552,10 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== +anymatch@^3.0.0, anymatch@^3.0.3, anymatch@^3.1.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -10583,13 +10590,6 @@ app-root-dir@^1.0.2: resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" integrity sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg= -append-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" - integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= - dependencies: - buffer-equal "^1.0.0" - append-transform@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" @@ -11466,6 +11466,15 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +bl@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" + integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== + dependencies: + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^3.4.0" + blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" @@ -11754,11 +11763,6 @@ buffer-equal@0.0.1: resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= -buffer-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= - buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -12493,7 +12497,7 @@ clone-stats@^1.0.0: resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= -clone@2.x, clone@^2.1.1, clone@~2.1.2: +clone@2.x, clone@^2.1.1, clone@^2.1.2, clone@~2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= @@ -15960,6 +15964,11 @@ fast-equals@^2.0.0: resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-2.0.0.tgz#bef2c423af3939f2c54310df54c57e64cd2adefc" integrity sha512-u6RBd8cSiLLxAiC04wVsLV6GBFDOXcTCgWkd3wEoFXgidPSoAJENqC9m7Jb2vewSvjBIfXV6icKeh3GTKfIaXA== +fast-fifo@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.0.tgz#03e381bcbfb29932d7c3afde6e15e83e05ab4d8b" + integrity sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw== + fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" @@ -16040,12 +16049,12 @@ fastest-stable-stringify@^1.0.1: resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-1.0.1.tgz#9122d406d4c9d98bea644a6b6853d5874b87b028" integrity sha1-kSLUBtTJ2YvqZEpraFPVh0uHsCg= -fastq@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2" - integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA== +fastq@^1.13.0, fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: - reusify "^1.0.0" + reusify "^1.0.4" fault@^1.0.0: version "1.0.4" @@ -16326,7 +16335,7 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== -flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: +flush-write-stream@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw== @@ -16595,13 +16604,13 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.0: dependencies: minipass "^3.0.0" -fs-mkdirp-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" - integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= +fs-mkdirp-stream@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz#1e82575c4023929ad35cf69269f84f1a8c973aa7" + integrity sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw== dependencies: - graceful-fs "^4.1.11" - through2 "^2.0.3" + graceful-fs "^4.2.8" + streamx "^2.12.0" fs-monkey@^1.0.3: version "1.0.3" @@ -16884,6 +16893,13 @@ glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob-promise@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" @@ -16891,21 +16907,19 @@ glob-promise@^3.4.0: dependencies: "@types/glob" "*" -glob-stream@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" - integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= +glob-stream@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-8.0.0.tgz#c4ed84de7fcc0b4c0f02e7f4cc0dc9c462c47236" + integrity sha512-CdIUuwOkYNv9ZadR3jJvap8CMooKziQZ/QCSPhEb7zqfsEI5YnPmvca7IvbaVE3z58ZdUYD2JsU6AUWjL8WZJA== dependencies: - extend "^3.0.0" - glob "^7.1.1" - glob-parent "^3.1.0" + "@gulpjs/to-absolute-glob" "^4.0.0" + anymatch "^3.1.3" + fastq "^1.13.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" is-negated-glob "^1.0.0" - ordered-read-streams "^1.0.0" - pumpify "^1.3.5" - readable-stream "^2.1.5" - remove-trailing-separator "^1.0.1" - to-absolute-glob "^2.0.0" - unique-stream "^2.0.2" + normalize-path "^3.0.0" + streamx "^2.12.5" glob-to-regexp@^0.3.0: version "0.3.0" @@ -17144,10 +17158,10 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +graceful-fs@4.X, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.8, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== grapheme-splitter@^1.0.4: version "1.0.4" @@ -18201,14 +18215,6 @@ is-absolute-url@^3.0.0: resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -18704,7 +18710,7 @@ is-url@^1.2.2: resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== -is-utf8@^0.2.0, is-utf8@^0.2.1: +is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== @@ -18746,7 +18752,7 @@ is-window@^1.0.2: resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" integrity sha1-LIlspT25feRdPDMTOmXYyfVjSA0= -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -19894,7 +19900,7 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: +json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= @@ -20227,12 +20233,10 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -lead@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" - integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= - dependencies: - flush-write-stream "^1.0.2" +lead@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-4.0.0.tgz#5317a49effb0e7ec3a0c8fb9c1b24fb716aab939" + integrity sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg== leven@2.1.0: version "2.1.0" @@ -22238,6 +22242,11 @@ normalize-package-data@^3.0.0: semver "^7.3.2" validate-npm-package-license "^3.0.1" +normalize-path@3.0.0, normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -22245,11 +22254,6 @@ normalize-path@^2.0.1, normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" @@ -22265,12 +22269,12 @@ normalize-url@^6.0.1: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -now-and-later@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.0.tgz#bc61cbb456d79cb32207ce47ca05136ff2e7d6ee" - integrity sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4= +now-and-later@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-3.0.0.tgz#cdc045dc5b894b35793cf276cc3206077bb7302d" + integrity sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg== dependencies: - once "^1.3.2" + once "^1.4.0" npm-normalize-package-bin@^1.0.0: version "1.0.1" @@ -22452,7 +22456,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.2: +object.assign@^4.1.0, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -22547,7 +22551,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -22692,13 +22696,6 @@ ordered-binary@^1.4.0: resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.4.0.tgz#6bb53d44925f3b8afc33d1eed0fa15693b211389" integrity sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ== -ordered-read-streams@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" - integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= - dependencies: - readable-stream "^2.0.1" - original-url@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/original-url/-/original-url-1.2.3.tgz#133aff4b2d27e38a98d736f7629c56262b7153e1" @@ -24107,7 +24104,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3, pumpify@^1.3.5: +pumpify@^1.3.3: version "1.3.6" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.3.6.tgz#00d40e5ded0a3bf1e0788b1c0cf426a42882ab64" integrity sha512-BurGAcvezsINL5US9T9wGHHcLNrG6MCp//ECtxron3vcR+Rfx5Anqq7HbZXNJvFQli8FGVsWCAvywEJFV5Hx/Q== @@ -24213,6 +24210,11 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== +queue-tick@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142" + integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== + quick-format-unescaped@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.3.tgz#6d6b66b8207aa2b35eef12be1421bb24c428f652" @@ -25462,24 +25464,7 @@ remove-accents@0.4.2: resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.4.2.tgz#0a43d3aaae1e80db919e07ae254b285d9e1c7bb5" integrity sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U= -remove-bom-buffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" - integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== - dependencies: - is-buffer "^1.1.5" - is-utf8 "^0.2.1" - -remove-bom-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" - integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= - dependencies: - remove-bom-buffer "^3.0.0" - safe-buffer "^5.1.0" - through2 "^2.0.3" - -remove-trailing-separator@^1.0.1: +remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= @@ -25517,6 +25502,11 @@ replace-ext@1.0.0, replace-ext@^1.0.0: resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= +replace-ext@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-2.0.0.tgz#9471c213d22e1bcc26717cd6e50881d88f812b06" + integrity sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug== + request-progress@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" @@ -25599,12 +25589,12 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-options@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" - integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= +resolve-options@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-2.0.0.tgz#a1a57a9949db549dd075de3f5550675f02f1e4c5" + integrity sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A== dependencies: - value-or-function "^3.0.0" + value-or-function "^4.0.0" resolve-pathname@^2.2.0: version "2.2.0" @@ -25705,7 +25695,7 @@ retry@^0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= -reusify@^1.0.0: +reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== @@ -26952,6 +26942,13 @@ stream-chopper@^3.0.1: dependencies: readable-stream "^3.0.6" +stream-composer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-composer/-/stream-composer-1.0.2.tgz#7ee61ca1587bf5f31b2e29aa2093cbf11442d152" + integrity sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w== + dependencies: + streamx "^2.13.2" + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -26986,6 +26983,14 @@ streamsearch@^1.1.0: resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== +streamx@^2.12.0, streamx@^2.12.5, streamx@^2.13.2, streamx@^2.14.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.15.0.tgz#f58c92e6f726b5390dcabd6dd9094d29a854d698" + integrity sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg== + dependencies: + fast-fifo "^1.1.0" + queue-tick "^1.0.1" + strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -27559,6 +27564,13 @@ tcp-port-used@^1.0.1: debug "4.1.0" is2 "2.0.1" +teex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/teex/-/teex-1.0.1.tgz#b8fa7245ef8e8effa8078281946c85ab780a0b12" + integrity sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg== + dependencies: + streamx "^2.12.5" + telejson@^6.0.8: version "6.0.8" resolved "https://registry.yarnpkg.com/telejson/-/telejson-6.0.8.tgz#1c432db7e7a9212c1fbd941c3e5174ec385148f7" @@ -27694,15 +27706,7 @@ throttleit@^1.0.0: resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= -through2-filter@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" - integrity sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw= - dependencies: - through2 "~2.0.0" - xtend "~4.0.0" - -through2@2.X, through2@^2.0.0, through2@^2.0.3, through2@~2.0.0, through2@~2.0.3: +through2@2.X, through2@^2.0.0, through2@^2.0.3, through2@~2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -27822,14 +27826,6 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-absolute-glob@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" - integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= - dependencies: - is-absolute "^1.0.0" - is-negated-glob "^1.0.0" - to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -27903,12 +27899,12 @@ to-space-case@^1.0.0: dependencies: to-no-case "^1.0.0" -to-through@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" - integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= +to-through@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-3.0.0.tgz#bf4956eaca5a0476474850a53672bed6906ace54" + integrity sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw== dependencies: - through2 "^2.0.3" + streamx "^2.12.5" toggle-selection@^1.0.6: version "1.0.6" @@ -28419,14 +28415,6 @@ unique-slug@^3.0.0: dependencies: imurmurhash "^0.1.4" -unique-stream@^2.0.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" - integrity sha1-WqADz76Uxf+GbE59ZouxxNuts2k= - dependencies: - json-stable-stringify "^1.0.0" - through2-filter "^2.0.0" - unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" @@ -28842,10 +28830,10 @@ value-equal@^0.4.0: resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" integrity sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw== -value-or-function@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" - integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= +value-or-function@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-4.0.0.tgz#70836b6a876a010dc3a2b884e7902e9db064378d" + integrity sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg== variable-diff@1.1.0: version "1.1.0" @@ -29248,41 +29236,45 @@ vfile@^4.0.0, vfile@^4.2.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -vinyl-fs@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" - integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== +vinyl-contents@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/vinyl-contents/-/vinyl-contents-2.0.0.tgz#cc2ba4db3a36658d069249e9e36d9e2b41935d89" + integrity sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q== dependencies: - fs-mkdirp-stream "^1.0.0" - glob-stream "^6.1.0" - graceful-fs "^4.0.0" - is-valid-glob "^1.0.0" - lazystream "^1.0.0" - lead "^1.0.0" - object.assign "^4.0.4" - pumpify "^1.3.5" - readable-stream "^2.3.3" - remove-bom-buffer "^3.0.0" - remove-bom-stream "^1.2.0" - resolve-options "^1.1.0" - through2 "^2.0.0" - to-through "^2.0.0" - value-or-function "^3.0.0" - vinyl "^2.0.0" - vinyl-sourcemap "^1.1.0" + bl "^5.0.0" + vinyl "^3.0.0" -vinyl-sourcemap@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" - integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= +vinyl-fs@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-4.0.0.tgz#06cb36efc911c6e128452f230b96584a9133c3a1" + integrity sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw== dependencies: - append-buffer "^1.0.2" - convert-source-map "^1.5.0" - graceful-fs "^4.1.6" - normalize-path "^2.1.1" - now-and-later "^2.0.0" - remove-bom-buffer "^3.0.0" - vinyl "^2.0.0" + fs-mkdirp-stream "^2.0.1" + glob-stream "^8.0.0" + graceful-fs "^4.2.11" + iconv-lite "^0.6.3" + is-valid-glob "^1.0.0" + lead "^4.0.0" + normalize-path "3.0.0" + resolve-options "^2.0.0" + stream-composer "^1.0.2" + streamx "^2.14.0" + to-through "^3.0.0" + value-or-function "^4.0.0" + vinyl "^3.0.0" + vinyl-sourcemap "^2.0.0" + +vinyl-sourcemap@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz#422f410a0ea97cb54cebd698d56a06d7a22e0277" + integrity sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q== + dependencies: + convert-source-map "^2.0.0" + graceful-fs "^4.2.10" + now-and-later "^3.0.0" + streamx "^2.12.5" + vinyl "^3.0.0" + vinyl-contents "^2.0.0" vinyl-sourcemaps-apply@^0.2.1: version "0.2.1" @@ -29291,7 +29283,7 @@ vinyl-sourcemaps-apply@^0.2.1: dependencies: source-map "^0.5.1" -vinyl@^2.0.0, vinyl@^2.1.0, vinyl@^2.2.0: +vinyl@^2.1.0, vinyl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== @@ -29303,6 +29295,17 @@ vinyl@^2.0.0, vinyl@^2.1.0, vinyl@^2.2.0: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" +vinyl@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-3.0.0.tgz#11e14732bf56e2faa98ffde5157fe6c13259ff30" + integrity sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g== + dependencies: + clone "^2.1.2" + clone-stats "^1.0.0" + remove-trailing-separator "^1.1.0" + replace-ext "^2.0.0" + teex "^1.0.1" + vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" @@ -30047,7 +30050,7 @@ xstate@^4.37.2: resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.37.2.tgz#c5f4c1d8062784238b91e2dfddca05f821cb4eac" integrity sha512-Qm337O49CRTZ3PRyRuK6b+kvI+D3JGxXIZCTul+xEsyFCVkTFDt5jixaL1nBWcUBcaTQ9um/5CRGVItPi7fveg== -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==